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 tarprograma sabe cómo colocar múltiples archivos en una sola secuencia (con .tarextensión), gzipsabe cómo comprimir un archivo único (agregando .gzextensión) *. Al combinar esas herramientas, puede crear un comando que comprime varios archivos en un solo .tag.gzarchivo.
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 tarpara permitir que cree .tar.mymegaziparchivos; en su lugar, simplemente canaliza tarla salida a su compresor.
Del mismo modo, tarno 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 zipcomando, 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í, tares capaz de comprimir o bzip archivos usando -zy -jmodificadores, se agregaron por conveniencia, y el tar de GNU en realidad está engendrando gzipo bzip2como un nuevo proceso.
tar c dir/ | gzip > dir.tar.gzy lostar czf dir.tar.gz dir/comandos hacen lo mismo. Un ejemplo en el quetarse combina con SSH ytar(de nuevo):tar cz Documents/ | ssh user@host 'tar xz(equivalente rsync sería:rsync -a Documents user@host:)