ubuntuusers.de

zip in Bash-Script - Pfad verkürzen

Status: Gelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

Navaria

Anmeldungsdatum:
30. Dezember 2006

Beiträge: Zähle...

Wohnort: Hannover

Hi, ich hab mal wieder eine vermutlich triviale Frage. Ich betreibe seit ein paar Wochen für meine Online Rollenspiel Runden die Software FoundryVTT auf meinem Raspberry Pi mit Ubuntu Server 20.04. Bisher habe ich meinen Windows Spiele-Rechner dafür genutzt, aber der Gedanke, diese Daddel-Kiste als Server im Netz zu betreiben gefiel mir nicht so. Daher meine neues Projekt: Aufbau des FoundryVTT Servers auf einem Pi4 mit 8GB RAM. und bisher schaut alles sehr gut aus. Jetzt geht es mir um den Schmuck drumherum.

Ich möchte auf Nummer sicher gehen, und zur Not - falls irgendwas mit dem Pi ist und der Server ausfällt - meine Userdaten mundgerecht für Windows in ein Zip-File schreiben, so dass ich das dort nur noch entpacken muss und die notwendigen Daten an Ort und Stelle kopieren muss. Und im wesentlichen tut mein Script was es soll, nur leider fügt es den kompletten Pfad des Servers mit ein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
EXPORT_DIR="$HOME/foundry/export/$(date +"%Y-%m-%d_%H-%M")_FoundryVTT"
EXPORT_FILE="$HOME/foundry/export/$(date +"%Y-%m-%d_%H-%M")_FoundryVTT_Export.zip"

echo Export Dir: $EXPORT_DIR
echo Export File: $EXPORT_FILE

mkdir $EXPORT_DIR
cp -rvL ~/foundry/server/git/foundrydata/Config $EXPORT_DIR
cp -rvL ~/foundry/server/git/foundrydata/Data $EXPORT_DIR
cp -rvL ~/foundry/server/git/foundrydata/Logs $EXPORT_DIR
zip -r $EXPORT_FILE $EXPORT_DIR

Wenn ich das ZIP entpacke, entsteht dieser Verzeichnispfad:

/home/markus/foundry/export/2021-07-24_18-02_FoundryVTT/Config/...

Samt aller Unterverzeichnisse und Dateinamen kommt ein ziemlich langer Pfad zusammen und ich stoße an die Grenzen der max. Pfadlänge von NTFS.

Wie kann ich meinem Script beibringen, den Original-Pfad von /home/markus/foundry/export/2021-07-24_18-02_FoundryVTT/Config auf /Config zu verkürzen?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13176

Zeile 12 ersetzen durch

1
( cd "$EXPORT_DIR" && zip -r "$EXPORT_FILE" . )

Navaria

(Themenstarter)

Anmeldungsdatum:
30. Dezember 2006

Beiträge: 117

Wohnort: Hannover

mhh da hätt ich auch drauf kommen können ☺ Danke!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13176

Navaria schrieb:

mhh da hätt ich auch drauf kommen können ☺ Danke!

☺ Bitte!

Du kannst das übrigens noch eleganter machen:

1
2
3
4
5
#!/bin/sh

archive="$HOME/foundry/export/$(date +'%Y-%m-%d_%H-%M')_FoundryVTT_Export.zip"

cd ~/foundry/server/git/foundrydata && zip -r "$archive" Config Data Logs

Das spart die Kopiererei. zip expandiert Symlinks automatisch, erledigt also die Arbeit der Option "-L" von cp.

Navaria

(Themenstarter)

Anmeldungsdatum:
30. Dezember 2006

Beiträge: 117

Wohnort: Hannover

Cool, das probier ich direkt mal aus ☺

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13176

Was mir noch aufgefallen ist: Dein ursprüngliches Skript erhält die Berechtigungen und vor allem Zeitstempel nicht. D.h., im Archiv sind alle Zeitstempel die vom Kopieren und nicht die der tatsächlichen letzten Änderung. Ein Grund mehr für die Variante, die ohne Kopieren auskommt. 😉

Navaria

(Themenstarter)

Anmeldungsdatum:
30. Dezember 2006

Beiträge: 117

Wohnort: Hannover

Total gut, klasse ☺ Hab das direkt übernommen.

Antworten |