compression - ejemplos - descomprimir tar.gz ubuntu
Crea un tar.xz en un comando (5)
Estoy intentando crear un archivo comprimido .tar.xz
en un comando. ¿Cuál es la sintaxis específica para eso?
He intentado tar cf - file | xz file.tar.xz
tar cf - file | xz file.tar.xz
, pero eso no funciona.
Usando las opciones de compresión xz
Si desea usar opciones de compresión para xz
, o si está utilizando tar
en MacOS, probablemente desee evitar la sintaxis tar -cJf
.
Según el man xz
, la forma de hacerlo 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 de un directorio (mejor poner este segundo porque-cf
! =-fc
) -
-
salidas a salida estándar -
|
salida de tubos al siguiente comando -
xz -4e
llama axz
con la opción de compresión-4e
. (igual a-4
--extreme
) -
> baz.tar.xz
dirige el archivobaz.tar.xz
y comprimido abaz.tar.xz
donde -4e
es, use sus propias opciones de compresión. A menudo uso -k
para --keep
el archivo original y -9
para una compresión muy fuerte. -z
para configurar manualmente xz
en zip, aunque de manera predeterminada está comprimido si no se indica lo contrario.
Para descomprimir y deshacer
Hacer eco de Rafael van Horn , para descomprimir y deshacer (ver nota a continuación):
xz -dc baz.tar.xz | tar x
Nota: a diferencia de la respuesta de Rafael , use xz -dc
lugar de catxz
. Los documentos recomiendan esto en caso de que esté usando esto para scripting. Lo mejor es tener el hábito de usar -d
o - --decompress
lugar de unxz
también. Sin embargo, si es necesario, usar esos comandos desde la línea de comandos está bien.
Pruebe esto: tar -cf file.tar file-to-compress ; xz -z file.tar
tar -cf file.tar file-to-compress ; xz -z file.tar
Nota:
- tar.gz y tar.xz no son lo mismo; xz proporciona una mejor compresión.
- No use tubería
|
porque esto ejecuta comandos simultáneamente. Usando;
o&
ejecuta comandos uno tras otro.
Si le 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 opción f
para tratar los archivos y luego usarlos -
para especificar que el archivo es la entrada estándar. Tampoco es necesario especificar la opción -z
para xz
, porque es la 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
Descomprimir también es bastante sencillo:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Si solo tiene un archivo tar
, puede usar cat
:
cat archive.tar | tar x
Si necesita enumerar solo los archivos, use tar t
.
Switch -J
solo funciona en sistemas más nuevos. El comando universal es:
Para hacer 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 -zf -
. XZ está configurado para crear (-z
) el archivo del archivo (-f
) que pasa a ser una entrada estándar (-
).Redirige la salida de
xz
al archivotar.xz
Use la opción de compresión -J
para xz
. Y recuerda al man tar
:)
tar cfJ <archive.tar.xz> <files>
Editar 2015-08-10:
Si pasa los argumentos a tar
con guiones (por ejemplo, tar -cf
en lugar de tar cf
), entonces la opción -f
debe ser la última , ya que especifica el nombre del archivo (¡gracias a @A-B-B para señalarlo!). En ese caso, el comando se ve así:
tar -cJf <archive.tar.xz> <files>