Articles

Cómo Comprimir o Descomprimir Archivos Desde el Terminal Linux

  • Dave McKay

    @TheGurkha

  • Actualizado el 28 de mayo de 2019, a las 5:15 pm EDT
Mensaje de shell de Linux
Fatmawati Achmad Zaenuri/.com

Los archivos ZIP son un archivo universal comúnmente utilizado en sistemas Windows, macOS e incluso Linux. Puede crear un archivo zip o descomprimir archivos a partir de uno con algunos comandos comunes de terminal Linux.

El formato de archivo Comprimido ZIP

Gracias al dominio del formato ZIP en el ámbito de Windows, los archivos ZIP son probablemente la forma más común de archivo comprimido en el mundo.

Mientras .alquitrán.los archivos gz y tar.bz2 son comunes en Linux, los usuarios de Windows probablemente le enviarán un archivo en formato ZIP. Y, si desea archivar algunos archivos y enviarlos a un usuario de Windows, el formato ZIP será la solución más fácil y compatible para todos.

RELACIONADO: Cómo Extraer Archivos De a .alquitrán.gz or .alquitrán.Archivo bz2 en Linux

zip, descomprimir y otras utilidades

Es posible que ya sepa que los sistemas operativos Linux y Unix, como macOS, tienen herramientas que le permiten crear archivos ZIP y extraerlos, llamadas zip y unzip. Pero hay toda una familia de utilidades relacionadas, tales como zipcloakzipdetailszipsplit y zipinfo.

Advertisement

Comprobamos algunas distribuciones de Linux para ver si incluían estas utilidades en la instalación estándar. Todas las utilidades estaban presentes en Ubuntu 19.04, 18.10 y 18.04. También estuvieron presentes en Manjaro 18.04. Fedora 29 incluía zip y unzip, pero ninguna de las otras utilidades y ese también fue el caso de CentOS.

Para instalar los elementos que faltan en Fedora 29, utilice el siguiente comando:

sudo dnf install perl-IO-Compress

comando de instalación zip para Fedora

Para instalar los elementos que faltan en CentOS 7, use el siguiente comando:

sudo yum install perl-IO-Compress

Comando de instalación Zip en Centos

Advertisement

Si falta alguna de las utilidades zip de una distribución Linux que no se mencionó anteriormente, use la herramienta de administración de paquetes de esa distribución Linux para instalar el paquete requerido.

Cómo crear un archivo ZIP con el comando zip

Para crear un archivo ZIP, debe indicar a zip el nombre del archivo comprimido y qué archivos incluir en él. No es necesario añadir el».extensión zip » al nombre del archivo, pero no hace daño si lo hace.

Para crear un archivo llamado source_code.zip que contenga todos los archivos de código fuente en C y archivos de encabezado en el directorio actual, debe usar este comando:

zip source_code *.c *.h

comando zip en una ventana de terminal

está añadido. Se muestra el nombre del archivo y la cantidad de compresión que se logró en ese archivo.

salida del comando zip en una ventana de terminal

Anuncio

Si observa el nuevo archivo ZIP, puede ver que el «.la extensión de archivo zip» se ha agregado automáticamente mediante zip.

ls -l source_code.zip
ls en archivo zip en una ventana de terminal

Si usted no quiere ver la salida de zip el archivo ZIP creado, use el -q (silencio) opción.

zip -q source_code *.c *.h

-opción q quiet en una ventana de terminal

Que incluye directorios en archivos ZIP

Para incluir subdirectorios en el archivo ZIP, utilice la opción -r (recursivo) e incluya el nombre de subdirectorio en la línea de comandos. Para crear un archivo ZIP como antes e incluir también el subdirectorio archive, utilice este comando.

zip -r -q source_code archive/ *.c *.h

-r opción recursiva en una ventana de terminal

Para ser considerado con la persona que extraerá los archivos del archivo ZIP que está creando, a menudo es educado crear archivos ZIP con los archivos que contiene en un directorio. Cuando la persona que recibe el archivo ZIP lo extrae, todos los archivos se colocan cuidadosamente dentro de un directorio en su computadora.

Advertisement

En el siguiente comando, vamos a archivar el directorio work y todos los subdirectorios. Tenga en cuenta que este comando se emite desde el directorio padre de la carpeta work.

zip -r -q source_code work/

comprimir el directorio de trabajo en una ventana de terminal

Establecer el nivel de compresión

Puede establecer cuánta compresión se aplica a los archivos a medida que se agregan al archivo ZIP. El rango es de 0 a 9, siendo 0 ninguna compresión en absoluto. Cuanto mayor sea la compresión, más tiempo se tarda en crear el archivo ZIP. Para archivos ZIP de tamaño modesto, la diferencia horaria no es una penalización significativa. Pero entonces, para archivos ZIP de tamaño modesto, la compresión predeterminada (nivel 6) es probablemente lo suficientemente buena de todos modos.

Para obtener zip para usar un nivel específico de compresión, pase el número como una opción en la línea de comandos, con un «-«, así:

zip -0 -r -q source_code work/

-0 opción de compresión en una ventana de terminal

El nivel de compresión predeterminado es 6. No es necesario proporcionar la opción -6, pero no hará daño si lo hace.

zip -r -q source_code work/

compresión de nivel 6 en una ventana de terminal

El nivel máximo de compresión es el nivel 9.

zip -9 -r -q source_code work/

-9 compresión en una ventana de terminal

Publicidad

Con la selección de archivos y directorios que se archivan aquí, la diferencia entre no compresión (nivel 0) y la compresión predeterminada (nivel 6) es de 400K. La diferencia entre la compresión predeterminada y el nivel más alto de compresión (nivel 9) es solo 4K.

Eso puede no parecer mucho, pero para archivos que contienen cientos o incluso miles de archivos, la pequeña cantidad de compresión adicional por archivo se sumaría a un ahorro de espacio que vale la pena.

Agregar contraseñas a archivos ZIP

Agregar contraseñas a archivos ZIP es fácil. Utilice la opción-e (cifrar) y se le pedirá que introduzca su contraseña y que la vuelva a introducir para su verificación.

zip -e -r -q source_code work/

Agregar contraseñas a archivos zip en una ventana de terminal

Cómo descomprimir un archivo ZIP Con el Comando descomprimir

Para extraer los archivos de un archivo ZIP, use el comando descomprimir y proporcione el nombre del archivo ZIP. Tenga en cuenta que necesita proporcionar el «.extensión zip».

unzip source_code.zip

el comando descomprimir en una ventana de terminal

Anuncio

A medida que se extraen los archivos, se listan en la ventana de terminal.

la salida de descomprimir en una ventana de terminal

Los archivos ZIP no contienen detalles de la propiedad del archivo. Todos los archivos que se extraen tienen el propietario establecido en el usuario que los está extrayendo.

Al igual que zipunzip tiene una opción -q (silenciosa), por lo que no necesita ver la lista de archivos a medida que se extraen los archivos.

unzip -q source_code.zip

opción descomprimir-q en una ventana de terminal

Extraer archivos a un directorio de destino

Para extraer los archivos en un directorio específico, use la opción -d (directorio) y proporcione la ruta al directorio en el que desea que se extraiga el archivo.

unzip -q source_code.zip -d ./development

descomprima en un directorio de destino en una ventana de terminal

Extraiga archivos ZIP protegidos con contraseña

Si se ha creado un archivo ZIP con una contraseña, unzip le pedirá la contraseña. Si no proporciona la contraseña correcta, unzip no extraerá los archivos.

unzip -q source_code.zip

el comando descomprimir con contraseña en una ventana de terminal

Anuncio

Si no le importa que otros vean su contraseña, ni que se almacene en su historial de comandos, puede proporcionar la contraseña en la línea de comandos con el (contraseña). (Debe usar una «P» mayúscula.»)

unzip -P fifty.treacle.cutlass -q source_code.zip

descomprimir con contraseña en una ventana de terminal

Excluyendo archivos

Si no desea extraer un archivo o grupo de archivos en particular, use la opción -x (excluir). En este ejemplo, queremos extraer todos los archivos aparte de los que terminan en «.extensión h».

unzip -q source_code.zip -x *.h

opción de exclusión de descompresión en una ventana de terminal

Sobrescribir archivos

Supongamos que ha extraído un archivo pero ha eliminado algunos de los archivos extraídos por error.

Advertisement

Una solución rápida para eso sería extraer los archivos una vez más. Pero si intenta extraer el archivo ZIP en el mismo directorio que antes, unzip le pedirá una decisión con respecto a la sobreescritura de los archivos. Esperará una de las siguientes respuestas.

Además de la respuesta r(renombrar), estas respuestas distinguen entre mayúsculas y minúsculas.

  • y: Sí, sobrescribir este archivo
  • n: No, no sobrescribir este archivo
  • A: Todos, sobrescribir todos los archivos
  • N: Ninguno, sobrescribir ninguno de los archivos
  • r: Renombrar, extraer este archivo pero darle un nombre nuevo. Se le pedirá un nuevo nombre.

sobrescribir mensajes en una ventana de terminal

Para forzar unzippara sobrescribir cualquier archivo existente, utilice la opción -o (sobrescribir).

unzip -o -q source_code.zip

opción de sobrescritura en una ventana de terminal

La forma más eficiente de reemplazar los archivos que faltan sería tener unzip solo extraer cualquier archivo del archivo que no esté en el directorio de destino. Para ello, utilice la opción -n (nunca sobrescribir).

unzip -n source_code.zip

descomprimir con la opción-n nunca sobrescribir en una ventana de terminal

Mirar dentro de un archivo ZIP

A menudo es útil e instructivo ver una lista de los archivos dentro de un archivo ZIP antes de extraerlo. Puede hacer esto con la opción -l (archivo de lista). Se canaliza a través de less para que la salida sea manejable.

unzip -l source_code.zip | less

opción de lista de descompresión en una ventana de terminal

Anuncio

La salida muestra los directorios y archivos dentro del archivo ZIP, su longitud y la hora y fecha en que se agregaron al archivo. Pulse «q» para salir de less.

lista de salida de archivo en una ventana de terminal

Hay otras formas de mirar dentro de un archivo ZIP que dan diferentes tipos de información, como veremos.

Agregue una contraseña Con el comando zipcloak

Si ha creado un archivo ZIP pero olvidó agregar una contraseña, ¿qué puede hacer? Puede agregar rápidamente una contraseña al archivo ZIP utilizando el comando zipcloak. Pase el nombre del archivo ZIP en la línea de comandos. Se le solicitará una contraseña. Debe verificar la contraseña ingresándola por segunda vez.

zipcloak source_code.zip

zipcloak en una ventana de terminal

Ver detalles del archivo Con el comando zipdetails

El comando zipdetails le mostrará mucha información sobre el archivo ZIP. La única forma sensata de manejar la cantidad de salida que este comando puede dar es canalizarla a través de less .

zipdetails source_code.zip | less

el comando zipdetails en una ventana de terminal

Anuncio

Tenga en cuenta que la información incluirá nombres de archivo incluso si el archivo ZIP está protegido con contraseña. Este tipo de información se almacena dentro del archivo ZIP como metadatos y no forma parte de los datos cifrados.

salida de zipdetails en una ventana de terminal

Buscar Dentro del Archivo Con el zipgrep Comando

El zipgrep comando permite buscar dentro de los archivos en un archivo ZIP. En el siguiente ejemplo, queremos saber qué archivos dentro del archivo ZIP tienen el texto «keyval».h» en ellos.

zipgrep keyval.h source_code.zip
el zipgrep comando en una ventana de terminal

podemos ver que los archivos slang.c y getval.c contienen la cadena «keyval.h».También podemos ver que hay dos copias de cada uno de estos archivos en directorios diferentes en el archivo ZIP.

Ver información Con el Comando zipinfo

El comando zipinfo le da otra forma de mirar dentro de un archivo ZIP. Como antes, canalizamos la salida a través de less.

zipinfo source_code.zip | less

comando zipinfo en una ventana de terminal

De izquierda a derecha se muestra la salida:

  • Los permisos de archivo
  • La versión de la herramienta utilizada para crear el archivo ZIP
  • El tamaño del archivo original
  • Un descriptor de archivo (descrito a continuación)
  • El método de compresión (deflación, en este caso)
  • La marca de datos y hora
  • El nombre del archivo y cualquier directorio
Anuncio

El descriptor de archivo se compone de dos personajes. El primer carácter será una «t» o una » b » para indicar un archivo de texto o binario. Si es una letra mayúscula, el archivo está cifrado. El segundo carácter puede ser uno de los cuatro caracteres. Este carácter representa qué tipo de metadatos se incluyen para este archivo: ninguno, un encabezado local extendido, un «campo adicional» o ambos.

  • -: Si ninguno de los dos existe, el carácter será un guion
  • l: si hay un encabezado local extendido pero no un campo adicional
  • x: si no hay un encabezado local extendido pero hay un campo adicional
  • X: si hay un encabezado local extendido y hay un campo adicional

salida zipinfo en una ventana de terminal

Dividir el archivo con el comando zipsplit

Si necesita enviar el archivo ZIP a otra persona pero hay restricciones de tamaño o problemas con la transmisión del archivo, puede usar el comando zipsplit comando para dividir el archivo ZIP original en un conjunto de archivos ZIP más pequeños.

La opción-n (tamaño) le permite establecer un tamaño máximo para cada uno de los nuevos archivos ZIP. En este ejemplo, estamos dividiendo el archivo source_code.zip. No queremos que ninguno de los nuevos archivos ZIP tenga más de 100 KB (102400 bytes).

zipsplit -n 102400 source_code.zip

el comando zipsplit en una ventana de terminal

Anuncio

El tamaño que elija no puede ser menor que el tamaño de ninguno de los archivos del archivo ZIP.

Con estos comandos, puede crear sus propios archivos ZIP, descomprimir archivos ZIP que reciba y realizar otras operaciones en ellos sin salir de la terminal Linux.

Dave McKay
Dave McKay usó computadoras por primera vez cuando la cinta de papel perforado estaba de moda, y ha estado programando desde entonces. Después de más de 30 años en la industria de TI, ahora es periodista tecnológico a tiempo completo. Durante su carrera, ha trabajado como programador independiente, gerente de un equipo internacional de desarrollo de software, gerente de proyectos de servicios de TI y, más recientemente, como Oficial de Protección de Datos. Dave es un evangelista de Linux y defensor del código abierto.Lea la Biografía completa »