Dearchivierung einer einzelnen hängenden Datei

Dearchivierung einer einzelnen hängenden Datei

Ich versuche, ein sehr großes Verzeichnis zu entpacken. So funktioniert das Entpacken des gesamten Verzeichnisses:

$ sudo tar -xjf itunes20140618.tbz --verbose
x itunes20140618/
x itunes20140618/genre_artist
x itunes20140618/imix_type
...etc...

Wenn ich jedoch versuche, nur eine einzelne Datei zu entpacken, wird dies zwar korrekt durchgeführt, aber der Befehl bleibt dann auf unbestimmte Zeit hängen. Außerdem wird bei Verwendung der Anweisung --verbose keine Ausgabe gedruckt. Hier ist ein Beispiel:

$ sudo tar -xjf itunes20140618.tbz itunes20140618/imix --verbose
[ nothing prints...it just hangs. But it does un-tar that single file ]

Antwort1

Geben Sie nach Argumenten, die keine Optionen sind, keine Optionen an. Dies gilt insbesondere, wenn tares sich um einen nicht standardmäßigen Befehl mit mehreren Implementierungen handelt, die mehrere alte und neuere Möglichkeiten zum Analysieren von Optionen, Aktionen und Argumenten für diese unterstützen.

In:

tar -xjf itunes20140618.tbz itunes20140618/imix --verbose

itunes20140618.tbzwäre ein Argument für die -fOption, itunes20140618/imixein zusätzliches Nicht-Optionsargument, das als Name eines aus dem Archiv zu extrahierenden Mitglieds verwendet wird. Ob es --verboseals zusätzliches Argument (der Name eines anderen zu extrahierenden Mitglieds) oder als Option behandelt wird, hängt von der Implementierung und Version tarund möglicherweise sogar davon ab, wie es kompiliert wurde oder von der Laufzeitumgebung.

In Ihrem Fall kann es durchaus sein, dass Sie tarzu denen (der Mehrheit) gehören, die das nicht --verboseals generelle Option betrachten.

Verwenden Sie hier:

tar -xjf itunes20140618.tbz --verbose itunes20140618/imix

Oder die portablere Variante:

bunzip2 < itunes20140618.tbz | tar xvf - itunes20140618/imix

Oder ersetzen Sie es tardurch den Standard (der allerdings weniger portabel ist) pax:

bunzip2 < itunes20140618.tbz | pax -vr itunes20140618/imix

Antwort2

Sie verwenden bzip2, was keinDateiarchivierungsprogrammfungiert also tarim Wesentlichen als file archiverund bzip2komprimiert sie.

Wenn Sie beispielsweise eine Sammlung von Dateien mit tar archivieren und die resultierende Archivdatei dann mit gzip komprimieren, entsteht eine Datei mit der Erweiterung .tar.gz.

Dieser Ansatz hat jedoch einen Nachteil, wie im Wiki-Artikel beschrieben:

Das Extrahieren oder Ändern einer Datei ist schwierig. Zum Extrahieren einer Datei muss ein ganzes Archiv dekomprimiert werden, was zeit- und platzaufwändig sein kann.

Daher schlage ich vor, nur .taroder .zipoder zu verwenden .rar, wenn Sie häufig eine einzelne Datei extrahieren.

verwandte Informationen