Cómo usar el comando Zip en Linux para comprimir archivos y carpetas

Imagen de Zipper Imagen Principal Para Cómo Usar El Comando Zip De Linux

El comando zip en Linux es probablemente la forma más simple e intuitiva de trabajar con archivos ZIP en la línea de comandos. Y no solo eso, el formato de archivo ZIP es universal: casi todos los sistemas operativos tienen un programa nativo que puede trabajar con él. Aquí están todas las formas en que puedes usar este comando en cualquier línea de comandos de Linux.

Tabla de Contenidos

  • Cómo instalar Zip en Linux
  • Comando Zip en Linux: Sintaxis y Opciones
  • Cómo comprimir un archivo en Linux usando el comando Zip
  • Cómo comprimir una carpeta en Linux usando el comando Zip
  • Cómo descomprimir un archivo usando el comando Zip de Linux
  • Cómo descomprimir una carpeta de Linux con Zip
  • Preguntas Frecuentes

Cómo instalar Zip en Linux

La última versión del comando zip de Linux debería estar disponible en todos los principales gestores de paquetes.

Para Debian/Ubuntu:

sudo apt install zip

Para Arch Linux:

sudo pacman -S zip

Para Fedora:

sudo dnf install zip

Para Gentoo

sudo emerge --ask zip

Nota: Antes de instalar cualquier cosa, asegúrate de actualizar primero tu gestor de paquetes para obtener la última versión del comando zip. Puedes aprender cómo hacer eso y más con nuestra hoja de trucos del gestor de paquetes de Linux.

Nota: Con zip instalado, el comando unzip también estará disponible ahora.

Comando Zip en Linux: Sintaxis y Opciones

Hay una sintaxis básica para el comando zip, y solo toma dos parámetros: el nombre del archivo ZIP de salida y el nombre del archivo de entrada.

zip [opciones]  

Ejemplo de Comando Zip en Terminal Linux

Sus posiciones son importantes aquí. Si los haces al revés, la computadora se preguntará por qué intentas hacer un “archivo-a-archivar.jpg” con un “archivo-zip.zip” que no existe y devolverá un error.

En cuanto a establecer las opciones, necesitarás trabajar con banderas. Hay 8 banderas que necesitarías regularmente para un uso normal:

  • -d eliminar entradas archivadas seleccionadas en el archivo ZIP.
  • -q realizar la tarea en silencio sin imprimir nada en la terminal.
  • -T probar la integridad del archivo ZIP.
  • -e cifrar archivo.
  • -u actualizar el archivo ZIP agregando nuevos archivos al archivo.
  • -m mover archivo al archivo.
  • -r agregar recursivamente archivos dentro de una carpeta a un archivo ZIP.
  • -x excluir archivos con los nombres de archivo seleccionados.
  • -i incluir solo archivos con los nombres seleccionados.

Puedes colocar las banderas donde quieras, ya sea antes de la salida, después de la entrada, entre las dos; incluso puedes usar múltiples banderas esparcidas por toda la línea en cualquier orden. Solo asegúrate de escribirlas después de escribir zip.

La excepción son -x y -i, que necesitan una nueva entrada después de usarlas.

Cómo comprimir un archivo en Linux usando el comando Zip

La forma más fácil de archivar archivos con el comando zip es escribir zip seguido del nombre del archivo ZIP y luego el archivo que intentas archivar o comprimir. Las banderas son opcionales, así que puedes hacerlo así para comprimir rápidamente cualquier archivo en Linux.

zip archive.zip text_file.txt

Comando Básico de Carpeta Zip en Terminal Linux

También puedes agregar más archivos añadiendo los otros después del primer archivo que intentabas archivar. Y si alguno de estos tiene espacios en sus nombres, puedes encerrarlos entre comillas.

zip archive.zip "file 1.txt" "file 2.txt" "file 3.txt" "file 4.txt"

Ejemplo de Archivar Múltiples Archivos En Un Solo Comando Zip De Linux

Usando la bandera -d

La bandera -d te permite eliminar un archivo archivado dentro del archivo ZIP de la misma manera en que lo habrías agregado a uno.

zip -d archive.zip remove_me.jpg

Terminal Linux Usando La Bandera D 1

También puedes usarla para eliminar carpetas enteras dentro del archivo. Sin embargo, esto no funcionará para archivos fuera del archivo ZIP (así que no puedes usarlo para eliminar archivos después de archivar).

Usando la bandera -q

La bandera -q es para asegurarte de que zip no devolverá un mensaje cuando haga su trabajo.

zip -q archive.zip text_file.txt

Terminal Linux Usando La Bandera Q

Es útil cuando estás usando el comando zip con un script. Pero si estás usando esto por tu cuenta, es posible que desees evitar usar la bandera -q ya que no sabrás si el proceso de archivado fue exitoso sin verificar con el comando dir o ls.

Usando la bandera -T

Algunos archivos Algunos archivos ZIP pueden corromperse durante la descarga: sucede. Puedes usar la bandera -T para verificar la integridad, así sabrás si realmente es un archivo dañado o si simplemente estás ingresando la contraseña incorrecta.

zip -T archive.zip

Terminal Linux Usando La Gran Bandera T

Esto es bastante importante al descargar archivos grandes como imágenes de sistemas operativos. Para archivos como estos, puedes grabarlos con éxito en un USB en vivo y terminar con errores una vez que ejecutes el archivo de imagen en tu máquina. Lo mismo ocurre con videos y música que tienen partes cortadas en lugares aleatorios.

Usando la bandera -u

Si deseas agregar un nuevo archivo a un archivo ZIP existente, puedes usar la bandera -u.

zip -u archive.zip new_file.txt

Terminal Linux Usando La Bandera U

También puedes agregar más archivos añadiéndolos después del primer archivo, como si estuvieras usando el comando zip normalmente para crear un nuevo archivo ZIP.

Usando la bandera -e

Si deseas agregar una contraseña, necesitas usar la bandera -e. Esta opción solo aplica la contraseña y el cifrado al archivo que agregas al archivo ZIP dentro de su comando, por lo que los archivos anteriores permanecerán sin cifrar si usas esto con la bandera -u.

zip -e archive.zip text_file.txt

Terminal Linux Usando La Bandera E Con Terminal Pidiendo Contraseña

Lo grandioso de los archivos ZIP es que el proceso de creación de la contraseña también agrega una capa adicional de protección además de dar acceso. Tu contraseña funciona como una firma digital que se utiliza para descifrar una capa de cifrado adicional agregada al archivo ZIP.

Usando la bandera -m

Por último, la bandera -m elimina el archivo original después de que se archiva en el archivo ZIP. Piensa en esto como automatizar un paso adicional para que no tengas que eliminarlo tú mismo.

zip -m archive.zip text_file.txt

Terminal Linux Usando La Bandera M Con Antes Y Después De Dir Para Mostrar Que El Archivo Desapareció

Un detalle importante a recordar: la bandera -m elimina archivos de tal manera que hace imposible recuperarlos sin usar una herramienta de restauración de archivos. Así que asegúrate de mantener una copia de seguridad, o simplemente elimina las cosas manualmente usando el comando rm en su lugar.

Cómo comprimir una carpeta en Linux usando el comando Zip

Si usas el comando zip en una carpeta sin procesar, te quedarás con una carpeta que no contiene ningún archivo. Siempre que intentes comprimir una carpeta, necesitas usar la bandera -r.

Usando la bandera -r

La bandera -r, también conocida como recursiva, revisa cada contenido de una carpeta y sus subcarpetas y archiva cada uno en el archivo ZIP. También retendrá la estructura actual de cada subcarpeta.

zip -r archive.zip my_folder

Terminal Linux Usando La Bandera R

Esto también funciona si deseas archivar todo dentro de la carpeta actual. Simplemente reemplaza my_folder con ./ y cambiará su objetivo a todo dentro de la actual.

zip -r archive.zip ./

Usando El Comando Unzip De Linux Con La Bandera R En Todos Los Archivos Dentro De La Carpeta Actual

Además, puedes usar esto junto con la bandera -u para incluir carpetas y su contenido en un archivo ZIP existente.

zip -r -u archive.zip another_folder

Terminal Linux Usando La Bandera R Con La Bandera U

Usando la bandera -i

La bandera -i te permite seleccionar un archivo específico que deseas incluir y excluye todo lo demás dentro de una carpeta.

zip -r archive.zip my_folder -i my_folder/a_subfolder/file1.txt

Terminal Linux Usando La Bandera I

Al usar * asteriscos con la bandera -i, puedes seleccionar archivos que compartan nombres similares pero que podrían terminar con algo como un número. Por ejemplo, escribir *.txt hará que el comando zip incluya todos los archivos TXT dentro de la carpeta.

zip -r archive.zip my_folder -i "*.txt"

Terminal Linux Usando La Bandera I Con Asterisco

Usando la bandera -x

La bandera -x te permite excluir solo ciertos archivos mientras comprimes una carpeta completa.

zip -r archive.zip my_folder -x my_folder/dont_zip.jpg

Terminal Linux Usando La Bandera X

Además, la bandera -x anula la bandera -i cuando se usan juntas. De esta manera, puedes, por ejemplo, decirle a zip que incluya todos los demás archivos del mismo tipo excepto el archivo que no deseas que se comprima.

zip -r archive.zip my_folder -i "*.txt" -x my_folder/dont_zip.txt

Terminal Linux Usando La Bandera X Y La Bandera I Juntas

Cómo descomprimir un archivo usando el comando Zip de Linux

El programa unzip es un programa asociado al programa zip predeterminado. Extrae archivos de tu archivo ZIP.

Para usar este programa, solo necesitas escribir unzip y el nombre del archivo del archivo ZIP.

unzip archive.zip

Comando Básico de Descompresión en Linux

Al usar el comando unzip, descomprimirás el archivo ZIP dentro del directorio de trabajo actual, independientemente de dónde provenga el archivo ZIP.

Para extraer o descomprimir un archivo de Linux dentro de un archivo ZIP para que los demás permanezcan sin extraer, puedes agregar su nombre de archivo después de la parte donde escribes el archivo.

unzip archive.zip file.txt

Descompresión Selectiva de Archivo Txt

Cómo descomprimir una carpeta de Linux con Zip

Mientras que unzip normalmente extraerá carpetas ubicadas dentro de un archivo ZIP, puede ser bastante difícil hacer que extraiga solo ciertas carpetas. Pero eso no significa que sea imposible.

unzip archive.zip my_folder/a_subfolder/*

Descompresión Selectiva de Contenidos De Una Sola Carpeta

Esa línea de código extrae todo dentro de a_subfolder.

Además, cuando descomprimes una carpeta, el programa unzip crea una nueva carpeta dentro del directorio de trabajo actual y descomprime sus carpetas allí. Si existe una carpeta con el mismo nombre (o una versión anterior de la carpeta está presente), pregunta si está bien reemplazar el archivo que actualmente está en la carpeta.

Preguntas Frecuentes

¿Qué hace el comando gzip en Linux?

El comando gzip de Linux es una herramienta que puedes usar para almacenar y comprimir archivos en un archivo GZ.

¿Es ZIP mejor que TAR?

De alguna manera, ZIP es mejor que TAR porque los archivos ZIP pueden comprimir, cifrar y proteger su contenido. Sin embargo, los archivos TAR están destinados a combinar archivos en un solo archivo para una transferencia de archivos más rápida, mientras que los archivos ZIP (a pesar de ser utilizados para el mismo propósito) vienen con esas características adicionales en mente.

¿Es TAR más rápido que ZIP?

Los archivos TAR no comprimen ni cifran su contenido. Así que si estás buscando una forma más rápida de combinar una gran cantidad de archivos en un solo archivo fácil de transferir, verás algunas mejoras con TAR en comparación con ZIP. Sin embargo, podrías encontrar más fácil transferir un archivo ZIP en lugar de un archivo TAR porque los archivos ZIP tienden a ser mucho más pequeños que los archivos TAR.

Crédito de la imagen: Unsplash, Capturas de pantalla de Terenz Jomar Dela Cruz