Ich möchte ein tar gzip-Archiv erstellen, aber in umgekehrter Reihenfolge wie am häufigsten: Die Dateien im Archiv müssen einzeln komprimiert werden, anstatt das gesamte Archiv zu komprimieren. Auf diese Weise behält es die suchbare Eigenschaft bei, die es haben sollte. Es macht für mich viel mehr Sinn und ich weiß nicht, warum dies nicht bevorzugt wurde.
Ich habe einige Ideen dazu:
- Verwenden Sie ein Archivierungstool mit Komprimierung, z. B. 7zip
- Schreiben Sie dazu mein eigenes Skript, indem Sie zuerst die Dateien komprimieren und dann an tar übergeben (es wurde bereits ein handliches Python-Skript zum Schreiben einer tar-Datei gefunden, und die Python-GZIP-Bibliothek scheint einfach zu verwenden zu sein .
Idealerweise möchte ich jedoch weiterhin tar verwenden, da es sich um ein bekanntes De-facto-Tool für die Archivierung handelt, in dem ich arbeite. tar hat den --to-command
Schalter, mit dem extrahierte Dateien an ein Programm weitergeleitet werden können. Wenn ich einen symmetrischen Befehl hätte, wie --from-command
ich meinen Wunsch leicht umsetzen würde, mit:
tar cf my_archive.tar file1 file2 --from-command=gzip
tar xf my_archive.tar --to-command=gunzip
Meine Motivation liegt im Umgang mit Archiven, die eine große Anzahl großer Dateien enthalten. Ich habe sie derzeit tar-gzip, aber das Extrahieren von Dateien aus dem Archiv dauert lange - es muss dekomprimiert werden, bevor tar auf die Datei zugreifen kann, und das auf serielle Weise!
Also hier sind meine Fragen:
- Gibt es einen offensichtlichen Weg, dies zu erreichen, den ich ignoriere?
- Hat jemand schon ein Tool geschrieben, um speziell damit zu tun
tar
? - Wenn man
tar
undgzip
und Standardmethoden zum Archivieren und Komprimieren in Linux aufrufen würde , welche wäre die äquivalente, beliebte Methode zum Archivieren mit Komprimierung in der von mir erwähnten Weise (dh nichttar.gz
)? - Gibt es eine andere Möglichkeit, die große Zeit zu umgehen, die zum Extrahieren einer Datei aus einem großen Archiv mit gezippten Targets erforderlich ist?
Vielen Dank!
BEARBEITEN
Mir ist klar, dass ich meine Frage neu formulieren und verfeinern muss. Zumal es, wie Robin Hood betonte, recht einfache Lösungen gibt, um komprimierte Archive zu erstellen (nämlich zip
). Hier ist es also:
Gibt es eine Verwendungsmöglichkeit tar
, die echten Direktzugriff auf das Archiv ermöglicht, während es trotzdem komprimiert bleibt? Wenn nicht, gibt es einen anderen tar
Ersatz für Linux (der mit dem gleichen Grundprinzip und im Idealfall mit Unterstützung für die gleichen Befehlszeilenoptionen erstellt wurde), der dies erreicht?
Im Moment kann ich tar
im Allgemeinen ersetzen zip
durch:
tar c path/to/file1 path/to/file2 | gzip > arc.tar.gz
gunzip < arc.tar.gz | tar x
zu:
zip -qr - path/to/file1 path/to/file2 > arc.zip
unzip -qoX test.zip
Dies hat jedoch den Nachteil, dass nicht alle tar
Archivierungsoptionen unterstützt werden:
- Piping jeder extrahierten Datei einzeln in eine Pipe (den
--to-command
Switch) unzip
akzeptiert kein Archiv in Standardeingabe.funzip
tut dies jedoch - es wird nur die erste Datei im Archiv ausgegeben
Es ist also eher einschränkend.
Danke noch einmal!
tar
es für die Verwendung mit Bändern gedacht war - es unterstützt jedoch weiterhin durchsuchbare Archive!