varios ejemplos descomprimir crear comprimir comando archivos archivo abrir compression archive tar xz

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:

  1. c crea un nuevo archivo para los archivos especificados.
  2. f lee de un directorio (mejor poner este segundo porque -cf ! = -fc )
  3. - salidas a salida estándar
  4. | salida de tubos al siguiente comando
  5. xz -4e llama a xz con la opción de compresión -4e . (igual a -4 --extreme )
  6. > baz.tar.xz dirige el archivo baz.tar.xz y comprimido a baz.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:

  1. tar.gz y tar.xz no son lo mismo; xz proporciona una mejor compresión.
  2. 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

  1. 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.

  2. | canaliza la salida estándar a la entrada de otro programa ...

  3. ... que resulta ser xz -zf - . XZ está configurado para crear ( -z ) el archivo del archivo ( -f ) que pasa a ser una entrada estándar ( - ).

  4. Redirige la salida de xz al archivo tar.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>