tar -cjf site1.tar.bz2 -C /var/www/site1 .
Im obigen Beispiel wechselt tar in das Verzeichnis /var/www/site1
bevor es seine Sache macht, weil die Option -C /var/www/site1
gegeben wurde.
Ab man tar
:
OTHER OPTIONS
-C, --directory DIR
change to directory DIR
Die Option -C
Werke; Nur zur Verdeutlichung poste ich 2 Beispiele:
-
Erstellung eines Tarballs ohne vollständigen Pfad:vollständiger Pfad
/home/testuser/workspace/project/application.war
und was wir wollen, ist nurproject/application.war
Also:tar -cvf output_filename.tar -C /home/testuser/workspace project
Hinweis:Zwischen
workspace
befindet sich ein Leerzeichen undproject
; tar ersetzt den vollständigen Pfad nur durchproject
. -
Extrahieren des Tarballs mit Änderung des Zielpfads (standardmäßig
.
, d.h. aktuelles Verzeichnis)tar -xvf output_filename.tar -C /home/deploy/
tar
extrahiert den Tarball basierend auf dem angegebenen Pfad und behält den Erstellungspfad bei; in unserem Beispiel die Dateiapplication.war
wird nach/home/deploy/project/application.war
extrahiert ./home/deploy
:im Auszug angegeben
project
:Wird beim Erstellen des Tarballs angegeben
Hinweis:Wenn Sie den erstellten Tarball in einem Zielverzeichnis ablegen möchten, fügen Sie einfach den Zielpfad vor dem Namen des Tarballs hinzu. B.:
tar -cvf /path/to/place/output_filename.tar -C /home/testuser/workspace project
Scheint -C
zu sein Option bis tar v2.8.3 funktioniert nicht konsistent auf allen Plattformen (Betriebssystemen). -C
Die Option soll dem Archiv ein Verzeichnis hinzufügen, aber auf Mac und Ubuntu fügt sie ein absolutes Pfadpräfix in die generierte tar.gz-Datei ein.
tar target_path/file.tar.gz -C source_path/source_dir
Daher ist die konsistente und robuste Lösung cd
in source_path (übergeordnetes Verzeichnis von source_dir) und führen Sie
tar target_path/file.tar.gz source_dir
oder
tar -cf target_path/file.tar.gz source_dir
in deinem Skript. Dadurch wird das absolute Pfadpräfix in der Verzeichnisstruktur Ihrer generierten tar.gz-Datei entfernt.