Para descomprimir archivos 7z en GNU/Linux es necesario instalar el paquete p7zip
7-Zip es un formato de compresión de archivos que logra el mayor radio o grado de compresión. En GNU/Linux, el paquete p7zip
incluye la herramienta 7za
. La aplicación soporta los formatos 7z (que implementa el algoritmo de compresión LZMA), ZIP, CAB, ARJ, GZIP, BZIP2, TAR, CPIO, RPM y DEB. El radio de compresión en el nuevo formato 7z es un 30-50% mejor que en el formato ZIP. 7za
es un ejecutable stand-alone y maneja menos formatos de archivo que 7z.
Para instalar 7-Zip en CentOS 6 es necesario agregar el repositorio EPEL del proyecto Fedora (ver este artículo).
yum install p7zip
Para comprimir un directorio utilizando el formato 7z se utiliza 7za
con los siguientes parámetros:
7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archivo.7z dir1
Este ejemplo agrega todos los archivos dentro del directorio dir1
al archivo archivo.7z
utilizando la configuración "ultra". El parámetro -t7z
indica el formato de archivo 7z, el parámetro -m0=lzma
indica el algoritmo LZMA (Lempel-Ziv-Markov), el parámetro -mx=9
indica el nivel de compresión 9 (Ultra), el parámetro -mfb=64
indica el número de fast bytes para el algoritmo LZMA (puede ser de 3 a 255, valores más grandes proveen mayor radio de compresión a expensas de mayor tiempo de ejecución), el parámetro -md=32m
indica el tamaño de diccionario (32 megabytes), finalmente el parámetro -ms=on
indica que se cree un archivo sólido.
Los parámetros avanzados descritos anteriormente son opcionales y es posible comprimir un directorio de forma más simple ejecutando directamente:
7za -t7z archivo.7z dir1
Para extraer archivos se utiliza la función x
, por ejemplo para extraer un archivo 7z separado en múltiples partes (document.zip.001, document.zip.002, document.zip.003, etc.):
7za x document.zip.001
Finalmente, un ejemplo completo:
$ cd /tmp/
$ mkdir test
$ cd test/
$ touch pepe
$ echo 1111111 > pepe
$ ls -la total 4 -rw-rw-r-- 1 pepe pepe 8 Nov 27 09:04 pepe
$ cat pepe 1111111
$ cd ..
$ 7za a -t7z pepe.7z test 7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs) Scanning Creating archive pepe.7z Compressing test/pepe Everything is Ok
$ 7za l pepe.7z 7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs) Listing archive: pepe.7z -- Path = pepe.7z Type = 7z Method = LZMA Solid = - Blocks = 1 Physical Size = 167 Headers Size = 159 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2012-11-27 09:04:15 ....A 8 8 test/pepe 2012-11-27 09:04:09 D.... 0 0 test ------------------- ----- ------------ ------------ ------------------------ 8 8 1 files, 1 folders
$ rm -rf test
$ 7za x pepe.7z 7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs) Processing archive: pepe.7z Extracting test/pepe Extracting test Everything is Ok Folders: 1 Files: 1 Size: 8 Compressed: 167
$ ll test total 4 -rw-rw-r-- 1 pepe pepe 8 Nov 27 09:04 pepe
$ cat test/pepe 1111111