Además de la respuesta @Lekensteyn, me gustaría agregar que este comportamiento se basa en la filosofía Hacer una cosa y hacerlo bien : el tar
programa sabe cómo colocar múltiples archivos en una sola secuencia (con .tar
extensión), gzip
sabe cómo comprimir un archivo único (agregando .gz
extensión) *. Al combinar esas herramientas, puede crear un comando que comprime varios archivos en un solo .tag.gz
archivo.
Este enfoque es muy flexible: puede combinar algunos comandos Unix estándar para hacer todo tipo de cosas. Por ejemplo, si escribe un mejor programa para comprimir archivos, no necesita modificarlo tar
para permitir que cree .tar.mymegazip
archivos; en su lugar, simplemente canaliza tar
la salida a su compresor.
Del mismo modo, tar
no sabe nada sobre SSH, pero combinando comandos puede crear un script que archiva archivos, los carga en una máquina remota a través de SSH y los descomprime allí.
Compare esto con el zip
comando, que no se originó en Unix: tiene herramientas integradas para comprimir directorios completos, cifrar archivos, dividir el archivo en archivos zip más pequeños, etc.
(nota al pie): sí, tar
es capaz de comprimir o bzip archivos usando -z
y -j
modificadores, se agregaron por conveniencia, y el tar de GNU en realidad está engendrando gzip
o bzip2
como un nuevo proceso.
tar c dir/ | gzip > dir.tar.gz
y lostar czf dir.tar.gz dir/
comandos hacen lo mismo. Un ejemplo en el quetar
se combina con SSH ytar
(de nuevo):tar cz Documents/ | ssh user@host 'tar xz
(equivalente rsync sería:rsync -a Documents user@host:
)