#4sysadmins

Inicio » Comandos para comprimir archivos

Comandos para comprimir archivos

gzip : Comprime un archivo. Crea un nuevo archivo .gz y elimina el origen.

gzip [opciones] archivo

Opciones:

  • Si no queremos eliminar el origen podemos usar la opción keep (-k) o redireccionar la salida, que además nos permite por ejemplo concatenar varios archivos.
$ gzip -k archivo
$ gzip -c archivo1.txt ab.txt ultimo.txt > unidos.txt.gz

Cuando descomprimamos unidos.txt.gz tendremos un único archivo unidos.txt que si desplegamos su contenido con cat veremos como se han concatenados los 3 archivos de textos (archivo1.txt, ab.txt y ultimo.txt). Si usamos -c con –d no se elimina el archivo comprimido al descomprimir su contenido.

  • Para descomprimir usamos la opción -d:
$ gzip -d unidos.txt.gz
  • Forzar la compresión o descompresión: -f
  • Mostrar información sobre el archivo comprimido (tamaño comprimido, tamaño descomprimido, ratio de compresión y nombre del archivo descomprimido: -l
  • No conserva la fecha ni el timestamp del archivo: -n
  • Comprimir de forma recursiva sobre un directorio. No comprimirá un directorio en un solo archivo.gz si no que descenderá a dicho directorio, comprimirá todos sus archivos uno a uno y si encuentra un directorio, descenderá igualmente a él y comprimirá uno a uno todo los archivos que encuentre: -r
$ gzip -r directorio
  • Para restablecer todos los archivos comprimidos por el comando anterior usamos gunzip:
$ gunzip -r directorio
  • Realizar test a un archivo gz: -t

bzip2 : Comprime usando los algoritmos de compresión de Burrows-Wheeler y de codificación de Huffman. Ofrece mejor compresión que gzip. bzip2 admite mucha de las opciones de gzip como: -c, -d, -t, -f, -k y -q (que omite warnings, no comentado en gzip, pero también válido para ambos)

  • Para comprimir usamos la opción -z:
$ bzip2 -z archivo
  • Para descomprimir también podemos usar bunzip2. Igualmente el origen se pierde a menos que usemos -k o redirecciones su salida con -c

xz : Comprime y descomprime archivos. Para muchos mejor herramienta que las 2 anteriores (gzip y bzip2). Admite gran parte de las opciones de los dos anteriores como por ejemplo: -z para comprimir (puede ser omitido), -d, -c, -k, -f, -l (muestra información), podremos agregar a -l una v para mayor información o incluso otra v (-lvv) para obtener mas datos aún. Al igual que gzip y bzip2 si no pasamos la opción -k o redirigimos la salida, el archivo de origen será eliminado. La opción -f (–force) de xz nos permite comprimir aun cuando el archivo es un enlace simbólico, tiene varios enlaces de referencia (hard links) o el archivo contiene uno o todos los permisos especiales como SUID, GUID y Sticky bit. Los permisos especiales no serán aplicados al nuevo archivo .xz creado.

xz conserva la sintaxis de los dos anteriores:

$ xz [opciones] archivo

Además de las opciones anteriormente comentadas, la herramienta xz nos brinda otras oportunidades como las siguientes:

[Opciones]:

  • Podemos comprimir en un formato diferente, por ejemplo lzma que ofrece mejor compresión:
$ xz -F lzma archivo
  • Para descomprimir tenemos otras opciones:
$ unxz archivo.xz
 $ unlzma archivo.lzma
$ xzcat archivo.xz > archivo_destino
$ lzcat archivo.lzma > archivo_destino
  • Podemos pasar nombres de archivos que queremos comprimir a través de un archivo. El nombre de cada archivo debe de ir en una línea independiente y además finalizar con salto de línea.
$ xz --file=archivo-de-nombres-de-archivos
  • Cambiar el nivel de compresión (por defecto es -6)
$ xz -8 archivo

Comentar que como es lógico a mayor nivel de compresión mas RAM será necesaria. Con gzip y bzip es normal el uso de -9 pero se desaconseja en xz.

  • Podemos fijar un límite de memoria RAM utilizada en el proceso de compresión:
$ xz -8 -M 32MiB archivo

Tabla de nivel de compresión y memoria usada:

-0 : 256KiB
-1 : 1MiB
-2 : 2MiB
-3 y -4 : 4MiB
-5 y -6 : 8MiB
-7 : 16MiB
-8 : 32MiB
-9 : 64MiB

Nota: Podemos usar el sufijo ‘-e‘ tras el nivel de compresión que ralentizará el proceso de compresión pero podría alcanzar mejores resultados sobre todo si lo usamos con los niveles -3 y -5

  • Hacer que xz comprima usando un archivo de entrada que es la salida de otro comando:
$ tar -cf - foo | xz -3e > foo.tar.xz
  • Concatenar varios archivos en uno solo:
$ xz -dcf a.txt b.txt.xz cl.txt dado.lzma > abcd.txt

Se añadirá a.txt a abcd.txt posteriormente se concatena el contenido de b.txt.xz, el cual es descomprimido en tiempo real y ‘pegado’ en abcd.txt, se añade cl.txt y de igual manera se descomprime dado.lzma y se añade a abcd.txt, dando como resultado un solo archivo con el contenido de los 4, aun estando 2 de ellos en formato comprimido.

Anuncios

1 comentario

  1. […] Podemos aprender mas sobre las herramientas de compresión (gzip, bzip2 y xz) aquí o incluso si queremos extender el conocimiento con mas opciones útiles de este comando, existe una […]

    Me gusta

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: