Cómo archivar o descomprimir archivos en la terminal de Linux

Indicador de shell de Linux

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.

Formato de archivo comprimido ZIP

Debido al dominio 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 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 un archivo .tar.gz o .tar.bz2 en Linux

zip, unzip y otras utilidades

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

Revisé algunas distribuciones de Linux para ver si estas utilidades están incluidas 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 incluido zip y unzip, pero ninguna de las otras utilidades lo hizo y también lo hizo 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 la distribución de Linux no mencionada anteriormente, use la herramienta de administración de paquetes en esa distribución de Linux para instalar el paquete requerido.

Cómo crear un archivo zip con un comando zip

Para crear un archivo ZIP, debe 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á este comando:

zip source_code *.c *.h

Todos los archivos se enumeran a medida que se agregan. Se muestran el nombre del archivo y la cantidad de compresión realizada en ese archivo.

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

ls -l source_code.zip

Si no quiere ver el resultado de zip a medida que se crea el archivo ZIP, utilice -q elección (tranquila).

zip -q source_code *.c *.h

Directorios incluidos en archivos ZIP

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

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

Para llamar la atención de la persona que extraerá los archivos del archivo ZIP que está creando, a menudo es de buena educación crear archivos ZIP con los archivos contenidos en un directorio. Una vez que el destinatario del archivo ZIP lo extrae, todos los archivos se colocan ordenadamente en un directorio de su computadora.

En el siguiente comando, archivaremos el archivo. work el directorio y todos los subdirectorios. Tenga en cuenta que este pedido se emite desde Padre Director Delaware work doblada.

zip -r -q source_code work/

Establecer el nivel de compresión

Puede establecer la cantidad de compresión aplicada a los archivos a medida que se agregan a un archivo ZIP. El rango es de 0 a 9, 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 moderado, la diferencia de tiempo no es una penalización significativa. Pero entonces, para archivos ZIP de tamaño moderado, la compresión predeterminada (nivel 6) probablemente sea bastante buena de todos modos.

Tiene zip para usar un cierto nivel de compresión, pase el número como una opción en la línea de comando con ‘-‘ de la siguiente manera:

zip -0 -r -q source_code work/

El nivel de compresión predeterminado es 6. No se requiere suministro -6 elección, pero no 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 la compresión (nivel 0) y la compresión predeterminada (nivel 6) es 400K. La diferencia entre la compresión predeterminada y el nivel de compresión más alto (nivel 9) es solo 4K.

Puede que no parezca mucho, pero para los archivos que contienen cientos o incluso miles de archivos, la pequeña cantidad de compresión adicional por archivo agregaría un ahorro de espacio útil.

Agregar contraseñas a archivos ZIP

Agregar contraseñas a archivos ZIP es fácil. usos -e (cifrado) y se le pedirá que ingrese la contraseña y que vuelva a ingresarla para su 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 e ingrese el nombre del archivo ZIP. Ten en cuenta que eres hacer debe proporcionar la extensión «.zip».

unzip source_code.zip

A medida que se eliminan los archivos, se enumeran en la ventana del terminal.

Los archivos ZIP no contienen datos de propiedad del archivo. El propietario ha configurado al usuario para que elimine todos los archivos extraídos.

Igual que zip, unzip Un deber -q (silencioso), por lo que no es necesario ver la lista de archivos a medida que se extraen.

unzip -q source_code.zip

Extraer archivos al directorio de destino

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

unzip -q source_code.zip -d ./development

Extraiga archivos ZIP protegidos con contraseña

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

unzip -q source_code.zip

Si no le importa que otros vean su contraseña, o si está almacenada en su historial de pedidos, puede proporcionar la contraseña en la línea de comando con -P opción (contraseña). (Debe utilizar «P.»)

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

Excluir archivos

Si no desea eliminar un archivo o grupo de archivos específico, utilice -x (exclusión) opción. En este ejemplo, queremos eliminar todos los archivos excepto los que terminan en la extensión «.h».

unzip -q source_code.zip -x *.h

Sobrescribir archivos

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

Eliminar los archivos nuevamente es una solución rápida para esto. Pero si intenta eliminar el archivo ZIP del mismo directorio que antes, unzip Le pediré una decisión sobre la sobrescritura de los archivos. Se espera una de las siguientes respuestas.

Fuera de r answer (renombrado), estas respuestas distinguen entre mayúsculas y minúsculas.

  • y: Si, escribe este archivo
  • norte: No, no escriba este archivo
  • LA: Todo, sobrescribe todos los archivos
  • NORTE: Ninguno, no sobrescriba ningún archivo
  • r: Cambie el nombre, elimine este archivo, pero cámbiele el nombre. Se le pedirá un nuevo nombre.

Para forzar unzip para sobrescribir cualquier archivo existente, use -o opción (suscripción).

unzip -o -q source_code.zip

La forma más eficaz de reemplazar los archivos que faltan es tenerlos unzip solo extraer archivos del archivo no en el directorio de destino. Para hacer esto, use -n elección (nunca sobrescrita).

unzip -n source_code.zip

Mirando dentro de un archivo ZIP

A menudo es útil e instructivo ver una lista de archivos dentro de un archivo ZIP antes de eliminarlos. Puedes hacer esto con -l (archivo de lista). Pasa por las cañerías less para gestionar la salida.

unzip -l source_code.zip | less

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

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

Agregue una contraseña al 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 zipcloak pedido. Ingrese 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 de comando zipdetails

El es zipdetails el comando le mostrará un suficiente Información del archivo ZIP. La única forma sensata de manejar la cantidad de salida que este comando puede proporcionar es manejarlo less .

zipdetails source_code.zip | less

Tenga en cuenta que el archivo 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.

Mire dentro del archivo de comando zipgrep

El es zipgrep el comando te permite buscar en los archivos en 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

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

Ver información con el comando zipinfo

El es zipinfo el comando le ofrece otra forma de buscar dentro de un archivo ZIP. Como antes, pasamos por las tuberías de salida. less.

zipinfo source_code.zip | less

El resultado muestra de izquierda a derecha:

  • Permisos de archivo
  • La versión de la herramienta utilizada para crear el archivo ZIP
  • Tamaño de archivo original
  • Descriptor de archivo (descrito a continuación)
  • Método de compresión (deflación, en este caso)
  • Sello de fecha y hora
  • Nombre de archivo y cualquier directorio

El descriptor de archivo tiene dos caracteres. El primer carácter para expresar texto o un archivo binario es «t» o «b». Si es una letra mayúscula, el archivo está encriptado. El segundo carácter puede ser uno de cuatro caracteres. Este carácter indica el tipo de metadatos incluidos en este archivo: cualquiera, un encabezado local extendido, un «campo adicional» o ambos.

  • -: Si no es así, el carácter es un guión.
  • es: 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

Comparta el archivo con el comando zipsplit

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

El es -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, compartimos source_code.zip expediente. No queremos que ninguno de los nuevos archivos ZIP supere los 100 KB (102400 bytes).

zipsplit -n 102400 source_code.zip

El tamaño que seleccione 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 sin salir de la terminal de Linux.