4 votos

¿Crear un archivo tar con compresión xz?

Me gustaría crear un tarball utilizando la herramienta de compresión xz. Según google, a partir de la versión 10.10 hay un modificador "--xz" no documentado para tar, pero no consigo que funcione. En linux hay un interruptor "-J" que permite la compresión xz, pero no es compatible directamente con OS X.

La página de manual de tar hace referencia a la compresión xz, pero no muestra un ejemplo de cómo utilizarla. El resto de mis búsquedas dan como resultado algo similar a:

    tar cf - some_dir | xz -1 > some_dir.txz

Sin embargo, descomprimir eso desde la línea de comandos es menos que intuitivo y requiere que xz se encargue de la descompresión antes de pasar el archivo a tar.

Entonces, ¿cuál es el "estado del arte" en el uso de la compresión xz directamente desde el tar?

7voto

user3439894 Puntos 5883

Mirando el código fuente para el libarchive paquete de Apple Open Source para OS X 10.8.5, 10.9, 10.10 y MacOS 10.12.3, que contiene el código fuente para bsdtar incluye la posibilidad de utilizar xz compresión directamente en tar Sin embargo, no se implementó en tiempo de compilación hasta OS X 10.9.0 y posteriores. Aunque la página del manual bsdtar.1 no muestra el -J, --xz opciones aunque esté en el bsdtar.c código fuente .

Para crear un xz comprimido tar en OS X 10.9 o posterior utilice los siguientes ejemplos de sintaxis:

tar -cJf filename.tar.xz /path/to/folder_or_file ...

O:

tar --xz -cf filename.tar.xz /path/to/folder_or_file ...

Ejemplo:

tar -cJf Documents.tar.xz "$HOME/Documents"

O:

tar --xz -cf Documents.tar.xz "$HOME/Documents"

También he comprobado el Documents.tar.xz después de haber sido creado en un editor hexadecimal y sí tenía la cabecera adecuada que incluía el esperado 7zXZ parte de la firma.

1 votos

Fantástico. Supongo que esto me ha enseñado a NO confiar en las páginas man ya que el interruptor -J no aparece (en mi SO 10.11.6). ¿Hay algún mecanismo expuesto a través de tar para aumentar el número de hilos utilizados por xz para la compresión? Lo más cercano que puedo encontrar es el uso de XZ_OPT para pasar opciones, pero no funciona presumiblemente porque tar tiene su propia implementación interna de xz y no está llamando a un programa separado de xz. Para usar hilos vuelvo a usar tuberías, RE: tar -cv /ruta/to | xz -T0 > tarball.txz

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X