Zusätzlich zur @Lekensteyn-Antwort möchte ich hinzufügen, dass dieses Verhalten auf der Do one thing and do it well- Philosophie basiert. Das tar
Programm weiß, wie mehrere Dateien in einem Stream (mit der .tar
Erweiterung) gespeichert werden , und gzip
weiß, wie man einen komprimiert einzelne Datei ( .gz
Erweiterung hinzufügen ) *. Durch Kombinieren dieser Tools können Sie einen Befehl erstellen, der mehrere Dateien zu einer einzigen .tag.gz
Datei komprimiert .
Dieser Ansatz ist sehr flexibel - Sie können einige Standard-Unix-Befehle kombinieren, um alle möglichen Dinge zu erledigen. Wenn Sie beispielsweise ein besseres Programm zum Komprimieren von Dateien schreiben, müssen Sie keine Änderungen tar
vornehmen, um .tar.mymegazip
Dateien zu erstellen. Stattdessen leiten Sie tar
die Ausgabe einfach an Ihren Kompressor weiter.
Genauso wenig tar
weiß man über SSH Bescheid, aber durch das Kombinieren von Befehlen kann man ein Skript erstellen, das Dateien archiviert, sie über SSH auf einen entfernten Rechner hochlädt und dort wieder entarchiviert.
Vergleichen Sie dies mit dem zip
Befehl, der nicht von Unix stammt - er verfügt über integrierte Tools zum Komprimieren ganzer Verzeichnisse, Verschlüsseln von Dateien, Aufteilen des Archivs in kleinere Zip-Dateien usw.
(Fußnote) - Ja, tar
Dateien können mit -z
und gzip oder bzip selbst -j
umgeschaltet werden. Sie wurden der Einfachheit halber hinzugefügt, und GNU tar spawnt tatsächlich gzip
oder bzip2
als neuer Prozess.
tar c dir/ | gzip > dir.tar.gz
undtar czf dir.tar.gz dir/
Befehle machen dasselbe. Ein Beispiel , wotar
mit SSH und kombiniert wirdtar
(wieder):tar cz Documents/ | ssh user@host 'tar xz
(rsync äquivalent wäre:rsync -a Documents user@host:
)