LINUX

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:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar