Cómo comprimir y descomprimir archivos en Linux
Las utilidades de compresión comprimen archivos (borg y rar) y son similares en sus funciones y operaciones. Zip / unzip es uno de los comandos utilizados en Linux para crear archivos comprimidos y extraerlos. En las distribuciones modernas de Linux, estas utilidades se instalan de forma predeterminada. Si tiene algún problema, puede instalar ambas utilidades desde el indicador de shell, pero debe ser un usuario root para hacerlo.
En el sistema basado en RedHat / CentOS
# yum install zip unzip
En un sistema basado en Ubuntu / Debian
# apt-get install zip unzip
- Zip es una utilidad de compresión y empaquetado de archivos para Linux y Unix.
- Unzip enumerará, probará o extraerá archivos de archivos ZIP.
Los programas zip y unzip funcionan exactamente de la misma manera que PKZIP y PKUNZIP en el entorno DOS. Los archivos comprimidos utilizan menos espacio en disco que los archivos normales y se transfieren más rápido que los archivos sin comprimir más grandes. En Linux, puede comprimir archivos con la ayuda de Gzip o Zip. Si intercambia archivos con usuarios que no son de Linux, puede usar zip para evitar problemas de compatibilidad.
Archivo zip (Comprimir)
El proceso de compresión reemplaza el archivo original con un nuevo archivo que tiene una extensión adicional que es .Código Postal (el caso del comando zip), así que no elimine el .Código Postal archivos que usted crea. ¡Son los archivos originales en un contenedor comprimido! La sintaxis tiene la forma
# zip [option] [-b path] filezip file
- opción: hay opciones disponibles de comando zip
- -b ruta: dónde guardar temporalmente el archivo zip hasta que finalice la compresión y luego copiarlo en el directorio de trabajo actual
- filezip: es el nombre del archivo zip que se creará
- expediente: es el nombre del archivo original. Puede ser más de un archivo
El comando dado a continuación crea un archivo file.zip que contiene una copia del archivo llamado archivo10 ubicado en el directorio actual.
# zip compressfile file10
# ls -l file* -rw-r--r-- 1 root root 17 May 17 20:44 file1 -rw-r--r-- 1 root root 179 May 17 20:44 compressfile.zip
Para comprimir una carpeta, usamos -r
opción de comando zip. El comando dado a continuación comprimirá el directorio prueba de guión en el nombre del archivo back.zip:
# zip -r back script-test/ adding: script-test/ (stored 0%) adding: script-test/hello2 (deflated 8%) adding: script-test/password-gen.sh (deflated 4%) adding: script-test/continue.sh (deflated 20%) adding: script-test/folder1/ (stored 0%) adding: script-test/folder1/file1 (stored 0%)
Vea también cómo funciona en el directorio del archivo. Puedes ver el resultado
# ls -l back.zip -rw-r--r-- 1 root root 6255 May 21 12:31 back.zip
Puede agregar el .Código Postal extensión al final del archivo zip usted mismo.
# zip extension.zip file10 adding: file10 (stored 0%)
El comando lo entenderá directamente sin agregar la misma extensión nuevamente.
# ls -l extension.zip -rw-r--r-- 1 root root 179 May 21 13:15 extension.zip
Puedes ver el resultado.
Descomprimir archivo (Extraer)
Descomprimir comando extraer el .Código Postal archivo solamente. Entonces lo usaremos para extraer los archivos zip creados. Para extraer un archivo, haga lo siguiente
# unzip compressfile.zip Archive: compressfile.zip extracting: file10
Extrae el contenido del directorio actual. Entonces, si hay archivos originales, le preguntará si desea reemplazarlos
# unzip file.zip replace file10? [y]es, [n]o, [A]ll, [N]one, [r]ename: A extracting: file10
Cuando el archivo zip contiene más de un archivo, hará la operación con todos los archivos. Intentemos extraer la carpeta zip
# unzip back.zip Archive: back.zip creating: script-test/ inflating: script-test/hello2 inflating: script-test/password-gen.sh inflating: script-test/continue.sh creating: script-test/folder1/ extracting: script-test/folder1/file1
Más opciones de comando para comprimir y descomprimir
1) Comprimir el directorio actual
El comando dado a continuación comprimirá el directorio actual y también todos los subdirectorios:
# zip -r backupfile.zip . adding: hello2 (deflated 8%) adding: script-test/ (stored 0%) adding: script-test/hello2 (deflated 8%)
2) Comprimir todo el archivo en el directorio actual
El comando escrito a continuación creará un archivo llamado backfile.zip que contiene todos los archivos en el directorio actual. Nombres de archivo que comienzan con «.» no están incluidos.
# zip backfile.zip * adding: administration.sh (deflated 26%) adding: backupfile.zip (stored 0%) adding: back.zip (stored 0%)
# ls -l backfile.zip -rw-r--r-- 1 root root 28702 May 21 13:09 backfile.zip
3) Extrayendo todo el archivo comprimido en el directorio actual
Puede extraer todo el archivo zip como se muestra a continuación
# unzip *.zip Archive: backfile.zip extracting: backupfile.zip extracting: back.zip extracting: compressfile.zip
4) Sobrescribir con fuerza los archivos existentes al descomprimir
Durante la descompresión, si hay archivos originales, el comando de descompresión le preguntará si desea reemplazar o cambiar el nombre de los archivos recién extraídos. La operación puede no ser fácil si tiene algunos archivos en el archivo comprimido.
# unzip script-fol.zip Archive: script-fol.zip replace script-test/extension.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: y extracting: script-test/extension.zip replace script-test/hello2? [y]es, [n]o, [A]ll, [N]one, [r]ename:
Entonces puede forzar el comando descomprimir para sobrescribir los archivos existentes con unzip -o
mando
# unzip -o script-fol.zip Archive: script-fol.zip extracting: script-test/extension.zip inflating: script-test/hello2 extracting: script-test/script.zip inflating: script-test/bonjour~ inflating: script-test/script-test/hello2 inflating: script-test/script-test/bonjour~ inflating: script-test/script-test/password-gen.sh
5) Comprimir archivo a otro directorio
Es posible comprimir un archivo y guardar el archivo zip en otro directorio indicando la nueva ruta de destino con el nombre del archivo zip al final.
# zip test/zipfolder/file10.zip file10 adding: file10 (stored 0%)
6) Descomprimir el archivo a otro directorio
Al igual que con la operación de compresión, es posible extraer archivos a otro directorio. Está con -d
opción de comando descomprimir
# unzip file10.zip -d ~/script-test/ Archive: file10.zip extracting: /root/script-test/file10
7) Mejor compresión
También puedes probar -9
opción para una mejor compresión como se muestra a continuación:
# zip -9 -r backupfile mydata
8) Comprimir varios archivos
Es posible comprimir varios archivos en un archivo zip. Y lo comprimimos en otro directorio.
# zip /mnt/zip/script.zip continue.sh hello password-gen.sh adding: continue.sh (deflated 20%) adding: hello (deflated 8%) adding: password-gen.sh (deflated 4%)
9) Ver el contenido de un archivo zip sin descomprimir
Es posible ver el contenido de un archivo zip con la unzip -l
mando. Es como cuando enumeras un detalle del contenido de una carpeta sin moverte sobre ella.
# unzip -l /mnt/zip/script.zip Archive: /mnt/zip/script.zip Length Date Time Name --------- ---------- ----- ---- 179 04-25-2017 02:10 continue.sh 66 05-15-2017 20:12 hello 107 04-25-2017 02:10 password-gen.sh --------- ------- 352 3 files
10) Extraer uno o más archivos de un archivo comprimido
Si un archivo comprimido tiene más de un archivo, es posible extraer solo uno o más archivos. Esta operación no extraerá todo el archivo del archivo comprimido. Debe especificar cada nombre de archivo para extraer
# unzip /mnt/zip/script.zip hello continue.sh -d ~/test/zipfolder/ Archive: /mnt/zip/script.zip inflating: /root/test/zipfolder/continue.sh inflating: /root/test/zipfolder/hello
El uso del comando anterior significa que ya conoce exactamente el nombre de los archivos a extraer. Entonces, significa, por ejemplo, que ha enumerado el contenido del archivo comprimido con el comando descomprimir -l
11) Excluir cierto archivo durante la descompresión
Como podemos filtrar archivos para extraer, es posible excluir ciertos archivos durante la descompresión.
# unzip backfile.zip -x file10 administration.sh -d /tmp Archive: backfile.zip inflating: /tmp/administration_complete inflating: /tmp/administration_total extracting: /tmp/backupfile.zip extracting: /tmp/back.zip inflating: /tmp/bonjour~ extracting: /tmp/compressfile.zip inflating: /tmp/continue.sh creating: /tmp/folder1/ inflating: /tmp/hello inflating: /tmp/hello2 creating: /tmp/intro-script/ inflating: /tmp/mon-nom inflating: /tmp/password-gen.sh creating: /tmp/script-test/ extracting: /tmp/toto h. Check the integrity of a compressed archive
Puede comprobar si un archivo comprimido no tiene errores. Es posible con unzip -t
mando
# unzip -t backfile.zip Archive: backfile.zip testing: administration_complete OK testing: administration.sh OK testing: administration_total OK testing: backupfile.zip OK testing: back.zip OK testing: bonjour~ OK testing: compressfile.zip OK testing: continue.sh OK testing: file10 OK testing: folder1/ OK testing: hello OK testing: hello2 OK testing: intro-script/ OK testing: mon-nom OK testing: password-gen.sh OK testing: script-test/ OK testing: toto OK No errors detected in compressed data of backfile.zip.
12) Descomprimir un archivo sin crear directorios
Si un archivo comprimido contiene una carpeta, durante la operación de extracción volverá a crear la estructura exacta. Es posible extraer el archivo sin crear la carpeta que ya estaba presente. Pero su contenido se extraerá directamente
Consideraremos el archivo zip del ejemplo anterior. Contiene carpeta1 y prueba de guión carpetas, extraeremos sin crear las dos
# unzip -j backfile.zip Archive: backfile.zip inflating: administration_complete inflating: administration.sh inflating: administration_total extracting: backupfile.zip extracting: back.zip inflating: bonjour~ extracting: compressfile.zip inflating: continue.sh extracting: file10 inflating: hello inflating: hello2 inflating: mon-nom inflating: password-gen.sh extracting: toto
Puede ver que las carpetas no están presentes
13) Lista de información detallada sobre el archivo
Es posible tener la información detallada sobre el contenido de un archivo como con ls -l
mando.
# unzip -Z backfile.zip Archive: backfile.zip Zip file size: 28702 bytes, number of entries: 17 -rwxr-xr-x 3.0 unx 147 tx defN 17-Apr-25 02:21 administration_complete -rwxr-xr-x 3.0 unx 144 tx defN 17-Apr-25 02:10 administration.sh -rwxr-xr-x 3.0 unx 147 tx defN 17-Apr-25 02:19 administration_total -rw-r--r-- 3.0 unx 18727 bx stor 17-May-21 12:54 backupfile.zip -rw-r--r-- 3.0 unx 6255 bx stor 17-May-21 12:45 back.zip -rwxr-xr-x 3.0 unx 78 tx defN 17-Apr-25 02:10 bonjour~ -rw-r--r-- 3.0 unx 179 bx stor 17-May-21 12:44 compressfile.zip -rwxr-xr-x 3.0 unx 179 tx defN 17-Apr-25 02:10 continue.sh -rw-r--r-- 3.0 unx 17 tx stor 17-May-17 20:44 file10 drwxr-xr-x 3.0 unx 0 bx stor 17-May-17 04:28 folder1/ -rwxrwxr-- 3.0 unx 66 tx defN 17-May-15 20:12 hello -rwxrwxr-- 3.0 unx 66 tx defN 17-May-15 20:12 hello2 drwxrwxrwt 3.0 unx 0 bx stor 17-Apr-27 02:44 intro-script/ -rwxr-xr-x 3.0 unx 147 tx defN 17-Apr-25 02:10 mon-nom -rwxr-xr-x 3.0 unx 107 tx defN 17-Apr-25 02:10 password-gen.sh drw-r--r-- 3.0 unx 0 bx stor 17-May-19 17:41 script-test/ -rwxr-xr-x 3.0 unx 20 tx stor 17-Apr-25 02:10 toto 17 files, 26279 bytes uncompressed, 26118 bytes compressed: 0.6%
Proporcionará información como el nombre del archivo, su tamaño total y el número total de archivos que contiene. El avance da la cantidad de archivos enumerados, el tamaño total de datos comprimidos y sin comprimir de los archivos enumerados (sin contar los encabezados internos de los archivos zip) y la relación de compresión.
14) Actualice uno o más archivos del archivo comprimido.
Supongamos que comprimimos un archivo y luego modificamos un archivo. Existe la posibilidad de agregar el archivo de actualización al archivo comprimido con el zip -u
mando.
En el siguiente ejemplo, hemos actualizado un archivo toto y agregue un nuevo archivo papi
# zip -u backfile.zip toto papi adding: toto/ (stored 0%) adding: papi (stored 0%)
Ahora vamos a comprobar
# unzip -Z backfile.zip | grep "toto" -rwxr-xr-x 3.0 unx 0 bx stor 17-May-16 17:46 toto
# unzip -Z backfile.zip | grep "papi" -rw-r--r-- 3.0 unx 0 bx stor 17-May-22 01:10 papi
Puede la fecha en la salida de cada comando. Puede ver que la fecha de actualización es mayo en vez de abril
15) Actualice todos los archivos del archivo comprimido
Puede reemplazar (actualizar) una entrada existente en el archivo zip solo si se ha modificado más recientemente que la versión que ya está en el archivo zip. A diferencia de la opción de actualización, esto no agregará archivos que no estén ya en el archivo zip.
# zip -f test.zip
16) Realice la compresión y la extracción en silencio.
Cuando hacemos compresión de extracción, normalmente el comando zip muestra el resultado de la operación. Es posible decidir no mostrar el resultado a la salida con -q
opción del comando zip pero necesitaremos verificar el resultado después de un cierto tiempo
# zip -rq /mnt/zip/script-fol.zip script-test/
# ls -l /mnt/zip/ total 68 -rw-r--r-- 1 root root 69072 May 22 01:35 script-fol.zip
17) Conversión de archivos de texto al descomprimir
Algunos sistemas que no son Linux almacenan archivos de texto con dos caracteres de final de línea CR y LF en lugar del carácter único (LF) más eficiente que se usa en todos los sistemas Unix. Puede tener problemas de compatibilidad. Puedes usar unzip -a
para enfrentarlo con un mnemónico para la conversión ASCII. Convierte archivos que supuestamente son texto, dejando solo aquellos que están marcados como binarios.
# unzip -a script-fol.zip Archive: script-fol.zip creating: script-test/ extracting: script-test/extension.zip [binary] inflating: script-test/hello2 [text] extracting: script-test/script.zip [binary] inflating: script-test/bonjour~ [text]
18) Comprimir solo el subdirectorio de un directorio principal en un archivo individual
Supongamos que tenemos una carpeta con algunos archivos y subdirectorios. Ahora suponga que solo necesitamos comprimir este subdirectorio. Te daré una línea de guión para hacerlo. Asegúrese de ingresar al directorio principal primero.
Primero verificaremos si estamos en el directorio correcto
# pwd /mnt/zip/test
Ahora veamos los subdirectorios que tenemos
# ls -lF /mnt/zip/test total 12 -rw-r--r-- 1 root root 0 May 22 02:31 COURSE -rw-r--r-- 1 root root 0 May 22 02:31 FILE -rw-r--r-- 1 root root 434 May 22 02:33 file.zip drwxr-xr-x 2 root root 4096 May 22 02:44 pap/ drwxr-xr-x 2 root root 4096 May 22 02:44 pop/ -rw-r--r-- 1 root root 0 May 22 02:31 TEXT
Puedes ver que tenemos papilla y música pop subcarpeta. Probemos nuestro guión
# for i in */; do zip -r "${i%/}.zip" "$i"; done adding: pap/ (stored 0%) adding: pop/ (stored 0%)
Revisemos sus archivos zip
# ls COURSE FILE file.zip pap pap.zip pop pop.zip TEXT
Puede ver que crea la carpeta zip con el nombre respectivo. Tenga en cuenta que nuestro comando solo comprime cada subdirectorio de nivel 1 del directorio principal, no todos los directorios descendientes del subdirectorio.
Si desea ver cómo funciona esto, incluya un eco antes del zip y verá los comandos impresos en lugar de ejecutados.
# for i in */; do echo zip -r "${i%/}.zip" "$i"; done zip -r pap.zip pap/ zip -r pop.zip pop/
19) Comprimir archivos y directorios en un archivo individual
Puede comprimir tanto los archivos como los directorios en un archivo individual por alguna razón. Para hacerlo, puede usar la línea de secuencia de comandos a continuación
# for i in *; do zip -r "${i%}.zip" "$i"; done adding: COURSE (stored 0%) adding: FILE (stored 0%) adding: file.zip (stored 0%) adding: pap/ (stored 0%) adding: pop/ (stored 0%) adding: TEXT (stored 0%)
# ls COURSE FILE FILE.zip pap pop TEXT COURSE.zip file.zip file.zip.zip pap.zip pop.zip TEXT.zip
20) Mostrar información detallada sobre un archivo comprimido
Puede obtener información más detallada sobre un archivo comprimido con -v
opción de comando descomprimir
# unzip -v backfile.zip Archive: backfile.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 147 Defl:N 125 15% 04-25-2017 02:21 beced85d administration_complete 147 Defl:N 125 15% 04-25-2017 02:19 beced85d administration_total 18727 Stored 18727 0% 05-21-2017 12:54 9a9d9d5b backupfile.zip 6255 Stored 6255 0% 05-21-2017 12:45 57a487bf back.zip 78 Defl:N 70 10% 04-25-2017 02:10 7ea59cec bonjour~
Conclusión
En este tutorial, hemos entendido el concepto de compresión (zip) y descompresión (descompresión) y hemos visto cómo podemos manipular archivos comprimidos. Háganos saber si conoce más opciones.
Leer también: