Es ist seltsam, dass niemand sonst erwähnt hat, dass moderne Versionen von GNU tar
das Komprimieren beim Bündeln ermöglichen:
tar -czf output.tar.gz directory1 ...
tar -cjf output.tar.bz2 directory2 ...
Sie können auch den Kompressor Ihrer Wahl verwenden, sofern er die Optionen ' -c
' (zu stdout oder von stdin) und ' -d
' (dekomprimieren) unterstützt:
tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...
Auf diese Weise können Sie einen alternativen Kompressor angeben.
[ Hinzugefügt : Wenn Sie Dateien extrahieren gzip
oder bzip2
komprimieren, tar
erkennt GNU diese automatisch und führt das entsprechende Programm aus. Das heißt, Sie können verwenden:
tar -xf output.tar.gz
tar -xf output.tgz # A synonym for the .tar.gz extension
tar -xf output.tar.bz2
und diese werden richtig gehandhabt. Wenn Sie einen nicht standardmäßigen Kompressor verwenden, müssen Sie dies bei der Extraktion angeben.]
Der Grund für die Trennung ist, wie in der ausgewählten Antwort, die Aufgabentrennung. Unter anderem bedeutet dies, dass Benutzer das cpio
Programm ' ' zum Packen der Dateien (anstelle von tar
) verwenden und dann den Kompressor der Wahl verwenden konnten (es war einmal der bevorzugte Kompressor pack
, später war er es compress
(was viel effektiver war als) pack
), und dann gzip
lief das um seine beiden Vorgänger herum und ist völlig konkurrenzfähig mit zip
(das auf Unix portiert wurde, aber dort nicht nativ ist), und jetzt, bzip2
was meiner Erfahrung nach normalerweise einen Vorteil von 10-20% gegenüber hat gzip
.
[ Hinzugefügt : Jemand hat in seiner Antwort vermerkt, dass cpio
es lustige Konventionen gibt. Das stimmt, aber bis GNU tar
die relevanten Optionen (' -T -
') erhielt, cpio
war der bessere Befehl, wenn Sie nicht alles archivieren wollten, was sich unter einem bestimmten Verzeichnis befand - Sie konnten tatsächlich genau auswählen, welche Dateien archiviert wurden. Der Nachteil cpio
war, dass man die Dateien nicht nur auswählen konnte , sondern auch auswählen musste . Es gibt noch einen Ort, an dem cpio
Punkte erzielt werden. Es kann eine In-situ-Kopie von einer Verzeichnishierarchie in eine andere ohne Zwischenspeicher erstellen:
cd /old/location; find . -depth -print | cpio -pvdumB /new/place
Im Übrigen ist die -depth
Option ' ' find
in diesem Zusammenhang wichtig - sie kopiert den Inhalt von Verzeichnissen, bevor die Berechtigungen für die Verzeichnisse selbst festgelegt werden. Als ich den Befehl überprüft habe, bevor ich den Zusatz zu dieser Antwort eingegeben habe, habe ich einige schreibgeschützte Verzeichnisse kopiert (Berechtigung 555). Als ich die Kopie löschen wollte, musste ich die Berechtigungen für die Verzeichnisse lockern, bevor ' rm -fr /new/place
' beendet werden konnte. Ohne die -depth
Option cpio
wäre der Befehl fehlgeschlagen. Ich erinnerte mich nur daran, als ich die Bereinigung durchführte - die angegebene Formel lautet für mich automatisch (hauptsächlich aufgrund vieler Wiederholungen über viele Jahre). ]]