Comprimir archivos con ZStandard en Linux

Comprimir archivos con ZStandard en Linux.

Probablemente estés familiarizado con herramientas de compresión como gzip, bzip o xz. Pero talvez desconozcas que en 2015 un desarrollador de Facebook lanzo ZStandart, una herramienta más conocida como zstd, que logra una alta tasa de compresión en un tiempo menor al de la mayoría de sus competidores.

Reconozco y me incluyo yo mismo, que en el mundo linux nos cuesta mucho adoptar oficialmente nuevos estándares (para que tocar lo que funciona bien). Aun siendo así, Zstandard está siendo adoptado por grandes empresas para la compresión de enormes cantidades de datos, además de recibir un apoyo total por parte de distribuciones como Arch Linux, que cambió la compresión de sus paquetes xz a Zstandard.

Comprimir archivos con ZStandard

Comprimir archivos con ZStandard

 

Comprimir archivos con ZStandard en Linux

En una prueba obtenida sobre la compresión de un archivo de 1350 Megabytes, con respecto a otros algoritmos se han obtenido los siguientes resultados.

Tipo de compresiónTamaño de la salidaTiempo de proceso
zstd934 MB43 segundos
zip956 MB85 segundos
gzip955 MB87 segundos
bzip2/bz2943 MB322 segundos
rar877 MB382 segundos
7zip851 MB635 segundos
xz856 MB964 segundos

Como puedes observar, la velocidad de la compresión es muy alta. Precisamente ese es su punto fuerte y, el que nosotros necesitamos. Lamentablemente, no todas las distribuciones linux lo tienen incluido, pero sí que lo podemos encontrar en sus repositorios oficiales. Vamos a instalar ZStandard.

En Debian, Ubuntu, Mint y derivados:

sudo apt install zstd

En Fedora, CentOS, Alma y derivados:

sudo dnf install prename

En Arch Linux, Manjaro y derivados:

sudo pacman -S zstd

Vemos un ejemplo de instalación en Ubuntu 18.04.

root@sololinux:/home/sergio# cd
root@sololinux:~# 
root@sololinux-demo:~# sudo apt install zstd
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
  zstd
0 actualizados, 1 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 278 kB de archivos.
Se utilizarán 1.141 kB de espacio de disco adicional después de esta operación.
Des:1 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 zstd amd64 1.3.3+dfsg-2ubuntu1.2 [278 kB]
Descargados 278 kB en 1s (356 kB/s)
Seleccionando el paquete zstd previamente no seleccionado.
(Leyendo la base de datos ... 376296 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../zstd_1.3.3+dfsg-2ubuntu1.2_amd64.deb ...
Desempaquetando zstd (1.3.3+dfsg-2ubuntu1.2) ...
Configurando zstd (1.3.3+dfsg-2ubuntu1.2) ...
Procesando disparadores para man-db (2.8.3-2ubuntu0.1) ...
root@sololinux-demo:~#

 

El uso de la herramienta es muy simple, observa la compresión del archivo «libera.sh».

zstd libera.sh

Imagen de ejemplo.

Comprimir con zstd

Comprimir con zstd

 

Para descomprimir agregamos la «opción -d». No olvides que la extensión final es zst.

zstd -d libera.sh.zst

Verás algo similar a…

sergio@sololinux:~$ zstd -d libera.sh.zst
zstd: libera.sh already exists; overwrite (y/N) ? y
libera.sh.zst       : 1986 bytes                                               
sergio@sololinux:~$

 

Esta a aplicación dispone de muchas opciones, que tal vez te puedan resultar de utilidad.

zstd -h

Opciones de zstd:

sergio@sololinux:~$ zstd -h
*** zstd command line interface 64-bits v1.3.3, by Yann Collet ***
Usage : 
      zstd [args] [FILE(s)] [-o file] 

FILE    : a filename 
          with no FILE, or when FILE is - , read standard input
Arguments : 
 -#     : # compression level (1-19, default:3) 
 -d     : decompression 
 -D file: use `file` as Dictionary 
 -o file: result stored into `file` (only if 1 input file) 
 -f     : overwrite output without prompting and (de)compress links 
--rm    : remove source file(s) after successful de/compression 
 -k     : preserve source file(s) (default) 
 -h/-H  : display help/long help and exit 

Advanced arguments : 
 -V     : display Version number and exit 
 -v     : verbose mode; specify multiple times to increase verbosity
 -q     : suppress warnings; specify twice to suppress errors too
 -c     : force write to standard output, even if it is the console
 -l     : print information about zstd compressed files 
--ultra : enable levels beyond 19, up to 22 (requires more memory)
--long[=#]  : enable long distance matching with given window log (default : 27)
 -T#    : use # threads for compression (default:1) 
 -B#    : select size of each job (default:0==automatic) 
--no-dictID : don't write dictID into header (dictionary compression)
--[no-]check : integrity check (default:enabled) 
 -r     : operate recursively on directories 
--format=gzip : compress files to the .gz format 
--test  : test compressed file integrity 
--[no-]sparse : sparse mode (default:enabled on file, disabled on stdout)
 -M#    : Set a memory usage limit for decompression 
--      : All arguments after "--" are treated as files 

Dictionary builder : 
--train ## : create a dictionary from a training set of files 
--train-cover[=k=#,d=#,steps=#] : use the cover algorithm with optional args
--train-legacy[=s=#] : use the legacy algorithm with selectivity (default: 9)
 -o file : `file` is dictionary name (default: dictionary) 
--maxdict=# : limit dictionary to specified size (default : 112640) 
--dictID=# : force dictionary ID to specified value (default: random)

Benchmark arguments : 
 -b#    : benchmark file(s), using # compression level (default : 1) 
 -e#    : test all compression levels from -bX to # (default: 1)
 -i#    : minimum evaluation time in seconds (default : 3s) 
 -B#    : cut file into independent blocks of size # (default: no block)
--priority=rt : set process priority to real-time 
sergio@sololinux:~$

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

Chat de SoloLinux en Telegram

 

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido