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.warund was wir wollen, ist nurproject/application.warAlso:tar -cvf output_filename.tar -C /home/testuser/workspace projectHinweis:Zwischen
workspacebefindet 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/tarextrahiert den Tarball basierend auf dem angegebenen Pfad und behält den Erstellungspfad bei; in unserem Beispiel die Dateiapplication.warwird nach/home/deploy/project/application.warextrahiert ./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.