Ich habe das folgende archivierte Verzeichnis:
itunes20140618.tbz
Ich möchte daraus eine einzelne Datei mit dem Namen extrahieren:
itunes20140618/video
Wie würde ich das machen?
Bisher mache ich
$ bzip2 -d /tmp/itunes20140618.tbz
Aber es scheint, als würde ein Tar-Verzeichnis mit allem erstellt. Wie kann ich nur die einzelne Videodatei extrahieren?
Wenn ich derzeit eine Datei über Tar entpacke, dauert es etwa 1 Minute und bleibt dann weitere 20 Minuten hängen, während das Lesen des Tar-Archivs abgeschlossen ist. Irgendwelche Ideen, wie man das verbessern kann?
Antwort1
tar -xvjf itunes20140618.tbz itunes20140618/video
Das sollte in diesem Fall genügen. Wenn Sie jedoch weitere Hilfe benötigen, gehen Sie wie folgt vor:
info tar
Um bestimmte Archivmitglieder zu extrahieren, geben Sie deren exakte Mitgliedsnamen als Argumente an, wie von ausgegeben
--list (-t)
. Wenn Sie versehentlich eine der Dateien gelöscht haben, die Siecollection.tar
zuvor im Archiv abgelegt hatten (z. B.blues
), können Sie sie aus dem Archiv extrahieren, ohne die Struktur des Archivs zu ändern. Ihr Inhalt ist identisch mit dem der Originaldatei,blues
die Sie gelöscht haben.Stellen Sie zunächst sicher, dass Sie sich im
practice
Verzeichnis befinden, und listen Sie die Dateien im Verzeichnis auf. Löschen Sie nun die Dateiblues
und listen Sie die Dateien im Verzeichnis erneut auf.Sie können das Mitglied nun
blues
wie folgt aus der Archivdatei „collection.tar“ extrahieren:
$ tar --extract --file=collection.tar blues
Wenn Sie die Dateien im Verzeichnis erneut auflisten, sehen Sie, dass die Datei
blues
mit ihren ursprünglichen Berechtigungen, Datenänderungszeiten und dem Eigentümer wiederhergestellt wurde. (Diese Parameter sind identisch mit denen, die die Datei hatte, als Sie sie ursprünglich im Archiv abgelegt haben. Alle Änderungen, die Sie möglicherweise vor dem Löschen der Datei aus dem Dateisystem vorgenommen haben, wurden jedoch _nicht_ am Archivmitglied vorgenommen.) Die Archivdateicollection.tar
ist dieselbe wie vor dem Entpackenblues
. Sie können dies bestätigen, indemtar
Sie ausführen--list (-t)
.
Antwort2
Ein Archiv wie ein .zip
, .rar
oder .7z
besteht aus vielen gebündelten und komprimierten Dateien. Ein .tar
Archiv besteht aus vielen gebündelten Dateien, das Tar-Format beinhaltet jedoch keine Komprimierung. Eine .gz
, .bz2
oder .xz
-Datei ist eine einzelne komprimierte Datei. Ein .tar.gz
, .tar.bz2
, usw. ist ein komprimiertes Archiv; .tbz
ist ein Suffix, das gelegentlich anstelle von verwendet wird .tar.bz2
, genau wie .tgz
manchmal how anstelle von verwendet wird .tar.gz
.
bzip2 -d /tmp/itunes20140618.tbz
dekomprimiert die Datei. Sie erhalten das unkomprimierte Tar-Archiv. bzip2
erstellt kein Tar: es dekomprimiert, was ihm übergeben wird, und da es ein komprimiertes Tar erhält, ist die Ausgabe ein unkomprimiertes Tar. Sie können die resultierende Datei mit entpacken tar -xf /tmp/itunes20140618.tar
. Um nur eine Datei zu extrahieren, ist das tar -xf /tmp/itunes20140618.tar itunes20140618/video
.
Relativ aktuelle Versionen von tar unter Linux, FreeBSD, MINIX3 und OSX erkennen komprimierte Archive automatisch, sodass Sie tar zunächst aufrufen können, ohne sich Gedanken über die für das Archiv verwendete Komprimierung machen zu müssen:
tar xf itunes20140618.tbz itunes20140618/video
Ältere Versionen von Tar sowie viele heutige Systeme wie OpenBSD, Solaris und Linux mit BusyBox können zumindest bzip2
im Hintergrund aufrufen, auch wenn Sie es ihnen mit der -j
Option explizit mitteilen müssen.
tar -xjf itunes20140618.tbz itunes20140618/video