Estoy tratando de crear un .tar.xz
archivo comprimido en un comando. ¿Cuál es la sintaxis específica para eso?
Lo he intentado tar cf - file | xz file.tar.xz
, pero eso no funciona.
compression
archive
tar
xz
George K.
fuente
fuente
v
al comando switches (tar -cJvf
) para que sea detallado muestra los archivos que se agregan al archivo.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
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
eltar.xz
archivo.fuente
-f
no significa "desde el archivo" cuando se pasa axz
. 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 gzipSi te gusta el modo de tubería, esta es la solución más limpia:
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 paraxz
, porque es predeterminada.Funciona con
gzip
ybzip2
también:o
La descompresión también es bastante sencilla:
Si solo tiene
tar
archivo, puede usarcat
:Si necesita enumerar solo los archivos, use
tar t
.fuente
Usar las opciones de compresión xz
Si desea utilizar opciones de compresión
xz
o si está utilizandotar
MacOS, probablemente desee evitar latar -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
llamadasxz
con la-4e
opción de compresión. (igual a-4
--extreme
)> baz.tar.xz
dirige el archivo alquitranado y comprimido abaz.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 manualmentexz
en zip, aunque el valor predeterminado es comprimir si no se indica lo contrario.Descomprimir y descomprimir
Para hacer eco de Rafael van Horn , para descomprimir y descomprimir (ver nota a continuación):
Nota: a diferencia de la respuesta de Rafael , use en
xz -dc
lugar decatxz
. 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 hacerlounxz
también. Sin embargo, si debe hacerlo, usar esos comandos desde la línea de comandos está bien.fuente
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.fuente
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.