zip crea archivos ZIP y comprime sus elementos, uno por uno. Se utiliza para entregar varios archivos en un paquete compatible con herramientas habituales de Linux, Windows y macOS. A diferencia de tar, no necesitas añadir otro compresor para obtener un ZIP comprimido.
Una carpeta no se incluye de forma recursiva si indicas solo su nombre: para empaquetar todo su contenido necesitas -r. También conviene revisar qué rutas entran en el archivo, porque la opción recursiva puede incluir archivos ocultos, configuraciones y datos que no quieras compartir.
👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Sintaxis básica del comando zip
La sintaxis identifica primero el archivo de destino y después uno o varios archivos o directorios de origen:
zip [OPCIONES] ARCHIVO.zip RUTAS...Explicación de la sintaxis
zip es el programa. OPCIONES cambia cómo se recorre, actualiza o protege el paquete. ARCHIVO.zip es el archivo que se crea o actualiza. RUTAS son los elementos que se añadirán; pueden ser nombres de archivo, directorios o patrones que resuelva el shell.
Si el archivo de destino ya existe, zip puede actualizar sus entradas con los archivos indicados. No supone que el contenido del archivo vaya a quedar como un espejo exacto del directorio: por ejemplo, actualizar el ZIP no elimina automáticamente entradas que ya no existan en el origen.
Opciones habituales de zip
| Opción | Función | Cuándo usarla |
|---|---|---|
| -r | Recorre directorios de forma recursiva. | Necesaria para incluir todos los archivos de una carpeta. |
| -u | Añade archivos nuevos y actualiza entradas si el archivo local es más reciente. | Actualizar un ZIP existente sin recrearlo desde cero. |
| -x PATRÓN | Excluye rutas que coinciden con un patrón. | Omitir cachés, dependencias o archivos de configuración. |
| -j | Guarda los archivos sin sus rutas de directorio. | Crear un paquete plano; revisa que no haya nombres repetidos. |
| -e | Solicita una contraseña y cifra las entradas. | Solo para casos no sensibles: el cifrado estándar es débil. |
| -T | Comprueba la integridad del ZIP recién creado. | Verificar el paquete al generarlo. |
| -0 / -9 | No comprime o busca una compresión mayor. | Ajustar velocidad/tamaño; archivos ya comprimidos suelen reducir poco. |
Comprimir archivos concretos
Indica los archivos que quieres guardar. El ZIP contendrá las rutas indicadas y el original permanecerá en su sitio:
zip documentos.zip contrato.pdf informe.txt
unzip -l documentos.zipLa primera orden crea el paquete; la segunda muestra sus entradas para comprobar que contiene los nombres esperados. Si zip o unzip no están instalados, instala los paquetes correspondientes de tu distribución.
Comprimir una carpeta completa
Añade -r para incluir los archivos de todos sus subdirectorios. La ruta superior también aparecerá dentro del archivo:
zip -r proyecto.zip proyecto/La recursión incluye archivos ocultos. Si quieres empaquetar el contenido sin conservar la carpeta superior, ejecuta la orden desde esa carpeta y guarda el ZIP en el directorio padre:
(cd proyecto && zip -r ../proyecto.zip .)Excluir secretos, dependencias y archivos temporales
Antes de compartir un paquete recursivo, excluye rutas que no deben viajar con el proyecto. Pon los patrones entre comillas para que los interprete zip y no el shell:
zip -r proyecto.zip proyecto/ \
-x '*/.git/*' '*/.env' '*/node_modules/*' '*.log'Revisa la lista final con unzip -l. Comprueba especialmente que no entren claves, tokens, copias locales de bases de datos, dependencias descargables o archivos temporales. La exclusión de archivos no sustituye la revisión manual cuando el paquete contiene información privada.
Verificar y extraer un archivo ZIP
Si recibes un archivo de otra persona o sistema, inspecciona sus rutas y prueba su integridad antes de extraerlo. Elige un destino separado para no sobrescribir por accidente archivos del directorio actual:
unzip -l proyecto.zip
unzip -t proyecto.zip
mkdir -p /tmp/proyecto-extraido
unzip proyecto.zip -d /tmp/proyecto-extraido-l lista las entradas, -t comprueba que los datos del archivo se pueden leer y -d indica dónde extraerlos. Un test correcto no demuestra que el archivo sea seguro: revisa rutas y contenido antes de ejecutarlo o abrir documentos desconocidos.
Actualizar un ZIP existente
La opción -u añade archivos nuevos y reemplaza entradas cuando la versión del disco es más reciente. No borra las entradas que ya no estén en la carpeta de origen:
zip -u respaldo.zip configuracion.yml
unzip -l respaldo.zipSi necesitas que el archivo refleje exactamente el estado actual de un directorio, no confundas -u con una sincronización completa. Las opciones de sincronización pueden borrar entradas del ZIP; conserva una copia y consulta el manual antes de usarlas.
Contraseñas y seguridad del ZIP
La opción -e solicita una contraseña en la terminal, evitando escribirla directamente en la línea de comandos. Sin embargo, el cifrado tradicional que ofrece zip se considera débil y no es apropiado para proteger información sensible. No uses el indicador de contraseña en claro ni confíes en un ZIP cifrado con el método estándar para secretos, documentos críticos o copias sensibles.
Si el archivo necesita protección real, utiliza una herramienta de cifrado moderna y comparte la clave por un canal distinto. Además, recuerda que una contraseña no oculta los nombres de archivo que se ven al listar algunos ZIP.
Errores frecuentes al usar zip
- La carpeta aparece vacía: faltaba -r para recorrer sus subdirectorios.
- El paquete contiene archivos privados: la recursión puede incluir archivos ocultos; inspecciona la lista y excluye rutas que no deban compartirse.
- El ZIP antiguo conserva archivos borrados del proyecto: -u añade o actualiza entradas, pero no sincroniza eliminaciones.
- El archivo no reduce su tamaño: PDF, JPEG, MP4 y otros formatos ya comprimidos pueden encogerse poco o nada.
- Se usa -e para proteger secretos: el cifrado ZIP estándar es débil; elige una herramienta moderna cuando la confidencialidad importe.
Comandos relacionados
- unzip, para listar y extraer archivos ZIP.
- tar, para agrupar archivos y, si hace falta, combinarlos con compresión.
- gzip y gunzip, para comprimir o descomprimir archivos individuales.
Referencias
Consulta el manual de zip en Debian para confirmar las opciones disponibles en tu versión. La FAQ de Info-ZIP explica la limitación del cifrado tradicional.
Vídeo: comprimir archivos ZIP
El siguiente Short muestra un ejemplo breve de compresión con ZIP. Para trabajar con carpetas o excluir archivos, aplica las opciones explicadas arriba y verifica después el contenido del paquete:

