Respuestas:
Use la -J
opción de compresión para xz
. Y recuerda man tar
:)
tar cfJ <archive.tar.xz> <files>
Editar 2015-08-10:
Si está pasando los argumentos tar
con guiones (por ejemplo tar -cf
, en lugar de tar cf
), la -f
opción debe ser la última , ya que especifica el nombre del archivo (¡gracias a @ABB por señalarlo!). En ese caso, el comando se ve así:
tar -cJf <archive.tar.xz> <files>
f
último, incluso sin el guión.
tar
en macOS parece ser compatible, -J
pero la función no se encuentra en la página del manual. Tuve que buscarlo aquí. Aunque mencionan XZ en la sección sobre --options
...
Switch -J
solo funciona en sistemas más nuevos. El comando universal es:
Para hacer un archivo .tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
Explicación
tar cf - directory
lee el directorio / y comienza a ponerlo en formato TAR. La salida de esta operación se genera en la salida estándar.
|
canaliza la salida estándar a la entrada de otro programa ...
... que resulta ser xz -z -
. XZ está configurado para comprimir ( -z
) el archivo de la entrada estándar ( -
).
Redirige la salida desde xz
el tar.xz
archivo.
-f
no significa "desde el archivo" cuando se pasa a xz
. En cambio, es la abreviatura de --force
(ver xz (1) para más detalles), y es mejor no usarlo a menos que sea necesario.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0
o -0 -T0
como opciones, lo que generalmente le dará un archivo más pequeño que gzip en un tiempo comparable o más rápido, mientras que el valor predeterminado -6
es considerablemente más lento que gzip
Si te gusta el modo de tubería, esta es la solución más limpia:
tar c some-dir | xz > some-dir.tar.xz
No es necesario poner la f
opción para manejar archivos y luego usar -
para especificar que el archivo es la entrada estándar. Tampoco es necesario especificar la -z
opción para xz
, porque es predeterminada.
Funciona con gzip
y bzip2
también:
tar c some-dir | gzip > some-dir.tar.gz
o
tar c some-dir | bzip2 > some-dir.tar.bz2
La descompresión también es bastante sencilla:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Si solo tiene tar
archivo, puede usar cat
:
cat archive.tar | tar x
Si necesita enumerar solo los archivos, use tar t
.
Si desea utilizar opciones de compresión xz
o si está utilizando tar
MacOS, probablemente desee evitar la tar -cJf
sintaxis.
Según man xz
, la forma de hacer esto es:
tar cf - baz | xz -4e > baz.tar.xz
Porque me gustó el formato de Wojciech Adam Koszek , pero no la información:
c
crea un nuevo archivo para los archivos especificados. f
lee desde un directorio (lo mejor es poner este segundo porque -cf
! = -fc
)-
salidas a salida estándar|
canaliza la salida al siguiente comandoxz -4e
llamadas xz
con la -4e
opción de compresión. (igual a -4
--extreme
)> baz.tar.xz
dirige el archivo alquitranado y comprimido a baz.tar.xz
donde -4e
está, use sus propias opciones de compresión. A menudo utilizo -k
para --keep
el archivo original y -9
para la compresión muy pesado. -z
para establecer manualmente xz
en zip, aunque el valor predeterminado es comprimir si no se indica lo contrario.
Para hacer eco de Rafael van Horn , para descomprimir y descomprimir (ver nota a continuación):
xz -dc baz.tar.xz | tar x
Nota: a diferencia de la respuesta de Rafael , use en xz -dc
lugar de catxz
. Los documentos recomiendan esto en caso de que esté usando esto para secuencias de comandos. Es mejor tener el hábito de usar -d
o en --decompress
lugar de hacerlo unxz
también. Sin embargo, si debe hacerlo, usar esos comandos desde la línea de comandos está bien.
tar -cJf
sintaxis en MacOS? Solo curiosidad, porque estaba haciendo eso justo ahora y parecía estar funcionando.
Prueba esto: tar -cf file.tar file-to-compress ; xz -z file.tar
Nota:
|
porque esto ejecuta comandos simultáneamente. Usando ;
o &
ejecuta comandos uno tras otro.J
opción, pero esto funciona. Creo que necesitas RHEL6.
tar -c file-to-compress | xz -z > file.tar.xz
.
&
no iniciará un comando uno tras otro. En su lugar, lanzará el primero como un proceso en segundo plano.
v
al comando switches (tar -cJvf
) para que sea detallado muestra los archivos que se agregan al archivo.