Es extraño que nadie más haya mencionado que las versiones modernas de GNU tarte permiten comprimir mientras estás agrupando:
tar -czf output.tar.gz directory1 ...
tar -cjf output.tar.bz2 directory2 ...
También puede utilizar el compresor de su elección siempre que admita las opciones ' -c' (a stdout, o desde stdin) y ' -d' (descomprimir):
tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...
Esto le permitiría especificar cualquier compresor alternativo.
[ Agregado : si está extrayendo gzipo bzip2comprimiendo archivos, GNU tarlos detecta automáticamente y ejecuta el programa apropiado. Es decir, puedes usar:
tar -xf output.tar.gz
tar -xf output.tgz # A synonym for the .tar.gz extension
tar -xf output.tar.bz2
y estos se manejarán adecuadamente. Si utiliza un compresor no estándar, debe especificarlo cuando realice la extracción.]
El motivo de la separación es, como en la respuesta seleccionada, la separación de funciones. Entre otras cosas, significa que la gente podría usar el cpioprograma ' ' para empaquetar los archivos (en lugar de tar) y luego usar el compresor de su elección (una vez, el compresor preferido era pack, más tarde fuecompress (que fue mucho más efectivo que pack), y luego gzipque corrió en torno a sus predecesores, y es completamente competitivo con zip(que se ha portado a Unix, pero no es nativo allí), y ahora bzip2, en mi experiencia, generalmente tiene una ventaja del 10-20% sobre gzip.
[ Agregado : alguien señaló en su respuesta que cpiotiene convenciones divertidas. Eso es cierto, pero hasta que GNU tarobtuviera las opciones relevantes (' -T -'), cpioera el mejor comando cuando no deseaba archivar todo lo que estaba debajo de un directorio determinado; de hecho, podía elegir exactamente qué archivos se archivarían. La desventaja cpioera que no solo podía elegir los archivos, sino que tenía que elegirlos. Todavía hay un lugar donde las cpiopuntuaciones; puede hacer una copia in situ de una jerarquía de directorios a otra sin ningún almacenamiento intermedio:
cd /old/location; find . -depth -print | cpio -pvdumB /new/place
Por cierto, la -depthopción " " activada findes importante en este contexto: copia el contenido de los directorios antes de establecer los permisos en los propios directorios. Cuando verifiqué el comando antes de ingresar la adición a esta respuesta, copié algunos directorios de solo lectura (permiso 555); cuando fui a eliminar la copia, tuve que relajar los permisos en los directorios antes de que ' rm -fr /new/place' pudiera terminar. Sin la -depthopción, el cpiocomando habría fallado. Solo recordé esto cuando fui a hacer la limpieza; la fórmula citada es así de automática para mí (principalmente en virtud de muchas repeticiones durante muchos años). ]