GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tarieren Sie ein Verzeichnis, aber speichern Sie keine vollständigen absoluten Pfade im Archiv

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:

  1. Erstellung eines Tarballs ohne vollständigen Pfad:vollständiger Pfad /home/testuser/workspace/project/application.war und was wir wollen, ist nur project/application.war Also:

    tar -cvf output_filename.tar  -C /home/testuser/workspace project
    

    Hinweis:Zwischen workspace befindet sich ein Leerzeichen und project; tar ersetzt den vollständigen Pfad nur durch project .

  2. 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 Datei application.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

aus
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.


Linux
  1. Absolute / kanonische / relative Pfade?

  2. Linux-tar-Befehl

  3. Wie tariere ich ein Verzeichnis, ohne die Verzeichnisstruktur beizubehalten?

  4. Wie erhalte ich das absolute Verzeichnis einer Datei in Bash?

  5. Führen Sie ein ls aus, ohne den vollständigen Pfad zu erhalten

Absoluter vs. relativer Pfad in Linux:Was ist der Unterschied?

Das ultimative Tar Command Tutorial mit 10 praktischen Beispielen

Finden Sie die Dateien, die in einem Verzeichnis vorhanden sind, aber nicht im anderen

So erstellen Sie ein Linux-kompatibles Zip-Archiv eines Verzeichnisses auf einem Mac

Wie kopiere ich einen Verzeichnisbaum, aber nicht die Dateien in Linux?

Gibt es eine schnelle Möglichkeit, die allerletzte Datei in einem großen TAR zu erhalten?