Indicador de shell de Linux

Cómo comprimir o descomprimir archivos desde la terminal de Linux

Fatmawati Achmad Zaenuri / Shutterstock.com

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

El formato de archivo comprimido ZIP

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

Si bien los archivos .tar.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.

zip, unzip y otras utilidades

Es posible que ya sepa que los sistemas operativos Linux y tipo Unix, como macOS, tienen herramientas que le permiten crear archivos ZIP y extraer archivos de ellos, llamados zip y unzip. Pero hay toda una familia de utilidades relacionadas, como zipcloak, zipdetails, zipsplit , y zipinfo.

Verificamos 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 el 18.04. Fedora 29 incluido zip y unzip, pero ninguna de las otras utilidades y este también fue el caso de CentOS.

Para instalar los elementos que faltan en Fedora 29, use 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

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

Cómo crear un archivo ZIP con el comando zip

Para crear un archivo ZIP tienes que decir zip el nombre del archivo de almacenamiento y los archivos que se incluirán en él. No es necesario que agregue la extensión «.zip» al nombre del archivo, pero no está de más si lo hace.

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

zip source_code *.c *.h

Cada archivo se enumera a medida que se agrega. Se muestran el nombre del archivo y la cantidad de compresión que se realizó en ese archivo.

Si observa el nuevo archivo ZIP, puede ver que la extensión de archivo «.zip» fue agregada automáticamente por zip.

ls -l source_code.zip

Si no quiere ver la salida de zip a medida que se crea el archivo ZIP, utilice el -q opción (silencioso).

zip -q source_code *.c *.h

Incluir directorios en archivos ZIP

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

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

Para ser respetuoso con la persona que extraerá los archivos del archivo ZIP que cree, a menudo es de buena educación 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 ordenadamente en un directorio de su computadora.

En el siguiente comando, archivaremos el work directorio y todos los subdirectorios. Tenga en cuenta que este comando se emite desde el directorio principal del work carpetas.

zip -r -q source_code work/

Ajustar el nivel de compresión

Puede establecer el nivel de compresión que se aplica a los archivos cuando se agregan al archivo ZIP. El rango es de 0 a 9, siendo 0 sin compresión alguna. Cuanto mayor sea la compresión, más tiempo llevará crear el archivo ZIP. Para archivos ZIP de tamaño modesto, la diferencia de tiempo no es una penalización significativa. Pero entonces, para archivos ZIP de tamaño modesto, la compresión predeterminada (nivel 6) probablemente sea bastante buena de todos modos.

Obtener zip para usar un nivel de compresión específico, pase el número opcional en la línea de comando, con un «-«, así:

zip -0 -r -q source_code work/

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

zip -r -q source_code work/

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

zip -9 -r -q source_code work/

Con la selección de archivos y directorios archivados aquí, la diferencia entre sin compresión (nivel 0) y compresión predeterminada (nivel 6) es de 400 KB. La diferencia entre la compresión predeterminada y el nivel de compresión más bajo. Superior (nivel 9) es solo de 4K.

Puede que no parezca mucho, pero para archivos con cientos o incluso miles de archivos, la pequeña cantidad de compresión adicional por archivo ahorraría espacio.

Agregar contraseñas a archivos ZIP

Agregar contraseñas a archivos ZIP es fácil. Utilizar el -e (cifrar) y se le pedirá que ingrese su contraseña y la ingrese nuevamente para verificación.

zip -e -r -q source_code work/

Cómo descomprimir un archivo ZIP con el comando descomprimir

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

unzip source_code.zip

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

Los archivos ZIP no contienen detalles de propiedad del archivo. Todos los archivos extraídos tienen el propietario establecido en el usuario que los extrajo.

Al igual que zip, unzip un -q (silencioso), para que no necesite ver la lista de archivos mientras extrae los archivos.

unzip -q source_code.zip

Extraer archivos a un directorio de destino

Para extraer los archivos a un directorio específico, use el -d (directorio) y especifique la ruta al directorio donde desea extraer el archivo.

unzip -q source_code.zip -d ./development

Extraer archivos ZIP protegidos con contraseña

Si se creó un archivo ZIP con una contraseña, unzip se le pedirá la contraseña. Si no proporciona la contraseña correcta, unzip no extraiga los archivos.

unzip -q source_code.zip

Si no le importa que otras personas vean su contraseña o que se almacene en su historial de pedidos, puede proporcionar la contraseña en la línea de comando con el -P (contraseña). (Debe utilizar una «P» mayúscula)

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

Excluir archivos

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

unzip -q source_code.zip -x *.h

Sobrescribir archivos

Suponga que extrajo un archivo, pero eliminó algunos de los archivos extraídos por error.

Una solución rápida sería volver a extraer los archivos. Pero si intenta extraer el archivo ZIP en el mismo directorio que antes, unzip le pedirá una decisión sobre la sobrescritura de archivos. Esperará una de las siguientes respuestas.

Separado de r (renombrar) respuesta, estas respuestas distinguen entre mayúsculas y minúsculas.

  • u: Sí, sobrescribe este archivo
  • no : No, no sobrescriba este archivo
  • A: Todo, sobrescribe todos los archivos
  • NO : Ninguno, no sobrescribe ninguno de los archivos.
  • r: Cambie el nombre, extraiga este archivo pero asígnele un nombre nuevo. Se le pedirá que ingrese un nuevo nombre.

Forzar unzip para sobrescribir archivos existentes, utilice el -o (sobrescribir) opción.

unzip -o -q source_code.zip

La forma más eficiente de reemplazar los archivos que faltan sería tener unzip extraiga solo los archivos del archivo que no estén en el directorio de destino. Para hacer esto, use el -n (nunca sobrescribir).

unzip -n source_code.zip

Mira dentro de un archivo ZIP

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

unzip -l source_code.zip | less

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

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

Agrega una contraseña con el comando zipcloak

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

zipcloak source_code.zip

Ver detalles del archivo con el comando zipdetails

los zipdetails El comando le mostrará mucha información sobre el archivo ZIP. La única forma sensata de lidiar con la cantidad de salida que este comando puede dar es canalizarlo less .

zipdetails source_code.zip | less

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 en el archivo ZIP como metadatos y no forma parte de los datos cifrados.

Busque en el archivo con el comando zipgrep

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

zipgrep keyval.h source_code.zip

Vemos 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 diferentes directorios del archivo ZIP.

Mostrar información con el comando zipinfo

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

zipinfo source_code.zip | less

De izquierda a derecha, la salida muestra:

  • 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)
  • Datos y marca de tiempo
  • El nombre del archivo y cualquier directorio

El descriptor de archivo consta de dos caracteres. 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á encriptado. El segundo carácter puede ser cualquiera de los cuatro. Este carácter representa el tipo de metadatos incluidos para este archivo: ninguno, un encabezado local extendido, un «campo adicional» o ambos.

  • -: Si ninguno existe, el carácter será un guión.
  • me : 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 un campo adicional

Divida el archivo con el comando zipsplit

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

los -n La opción (tamaño) le permite establecer un tamaño máximo para cada uno de los nuevos archivos ZIP. En este ejemplo, dividimos el source_code.zip archivar. No queremos que los nuevos archivos ZIP superen los 100 KB (102,400 bytes).

zipsplit -n 102400 source_code.zip

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

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

Deja un comentario

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

Experto Geek - Tu Guía en Tendencias Tecnológicas