it-swarm.com.de

Wie kann ich Dateien mit dem Befehl 'tar' in ein anderes Verzeichnis extrahieren?

Ich dachte, tar archive.tar /users/mylocation würde funktionieren, aber das tut es nicht. Wie kann ich das machen?

662
goovim

Verwenden Sie zum Extrahieren eines Archivs in ein anderes Verzeichnis als das aktuelle die tar-Option -C oder --directory wie in

tar -xf archive.tar -C /target/directory

Beachten Sie, dass das Zielverzeichnis vorhanden sein muss, bevor Sie diesen Befehl ausführen (es kann von mkdir /target/directory erstellt werden).

Lesen Sie die Handbuchseite (Befehl: man tar) für andere Optionen.

945
Wesley Rice

Beachten Sie, dass Sie die Option --strip-components=1 hinzufügen, wenn Ihr Tarball bereits einen zu ändernden Verzeichnisnamen enthält:

tar xf archive.tar -C /target/directory --strip-components=1
258
Bryan Larsen

Die vorherigen Antworten und Kommentare kombinieren:

So extrahieren Sie einfach den Inhalt und erstellen ein Zielverzeichnis, falls es fehlt:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

So extrahieren und entfernen Sie das Stammverzeichnis (erste Ebene) in der Zip-Datei

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
30
Thamme Gowda

Eine andere Option ist --one-top-level. Dadurch wird automatisch ein Verzeichnis erstellt, das auf dem Dateinamen des Originals basiert.

tar zxvf filename.tgz --one-top-level

Wenn Sie möchten, können Sie auch Ihre eigene angeben, und tar erstellt sie automatisch.

tar zxvf filename.tgz --one-top-level=new_directory
18

Was ich in Bezug auf die Extraktion interessant fand, ist, dass es davon abhängt, wie Sie das Archiv erstellt haben, siehe dieses Beispiel

cd /tmp
mkdir folder
touch folder/file.txt

wenn Sie tar -zcvf folder.tar.gz folder ausführen, ist alles wie erwartet = Wenn Sie es jetzt entpacken, wird es als /tmp/folder/ entpackt (Ordner wird erstellt, wenn Sie es entfernt haben).

Wenn Sie jedoch tar als tar -zcvf tmp-folder.tar.gz /tmp/folder erstellen und im Ordner/tmp entpacken, wird das Ergebnis /tmp/tmp/folder sein! In diesem Fall müssen Sie es entpacken, um/- tar -xf tmp-folder.tar.gz -C /

2
Betlista

Mit tar 1.29 können wir einfach den Verzeichnisnamen nach dem tar-Dateinamen hinzufügen. Zum Beispiel,

tar zxvf tar-file directory-name/