
Has descargado un archivo .zip en tu servidor. ¿Y ahora qué? En la mayoría de los sistemas Linux, hacer doble clic no es una opción. El comando unzip es cómo abres archivos zip desde la terminal, y a diferencia de tar o gzip, no viene preinstalado en todas las distribuciones.
Esa distinción importa. Muchos administradores de sistemas SSH en un VPS recién instalado, escriben unzip y reciben «comando no encontrado.» Realmente es un rito de paso. La utilidad maneja la extracción de archivos zip con un conjunto de opciones que cubren desde descompresión simple de un solo archivo hasta extracción selectiva con coincidencia de patrones y archivos protegidos por contraseña.
Esta guía cubre la instalación, tareas de extracción diarias, scripting y las trampas que hacen tropezar a las personas. También compararemos unzip con tar y gzip para que sepas cuándo usar qué herramienta.
Cómo instalar unzip en Linux
Antes de poder extraer cualquier cosa, necesitas la utilidad instalada. El proceso depende del gestor de paquetes de tu distribución.
Debian y Ubuntu
En sistemas basados en Debian como Ubuntu y Linux Mint, APT maneja todo. Actualiza primero tu índice de paquetes para asegurarte de que estás obteniendo la versión más reciente:
sudo apt update && sudo apt upgradeLuego instala unzip:
sudo apt install unzipEn versiones anteriores que no han cambiado a la nueva sintaxis de apt, puede que necesites apt-get install unzip en su lugar. El mismo resultado, sintaxis antigua. Ambos obtienen de los mismos repositorios.
CentOS, AlmaLinux y Rocky Linux
Los derivados de RHEL se dividen entre dos gestores de paquetes dependiendo de la versión. CentOS 7 y versiones anteriores utilizan yum. CentOS Stream 8+, AlmaLinux, and Rocky Linux utilizan dnf. Los comandos se ven casi idénticos:
sudo yum install unzipO en sistemas más nuevos:
sudo dnf install unzipDe cualquier manera, actualiza tus repos primero con yum update o dnf update. En una instalación de servidor mínima, unzip casi seguramente no está presente. Eso es cierto tanto para imágenes de contenedores como para despliegues de VM nuevos, así que presupuestar treinta segundos adicionales durante el aprovisionamiento.
Verificar la Instalación
Ejecuta esto independientemente de la distribución:
unzip -vSi imprime un número de versión y información de compilación, estás listo. Si no imprime nada útil, algo salió mal con la instalación.
Cómo comprimir y descomprimir archivos en Linux
Con unzip instalado, puedes comenzar a extraer. Las siguientes secciones cubren los escenarios más comunes que enfrentarás en el trabajo diario.
Cuidado: los límites de tamaño de tu sistema de archivos pueden rechazar grandes extracciones en silencio. Si unzip lanza un error en un archivo grande, verifica tu espacio en disco y límites de inodes antes de culpar a la herramienta.
Cómo descomprimir un archivo en Linux
La sintaxis básica es muy simple. Navega al directorio que contiene tu archivo comprimido y ejecuta:
unzip archive_file.zipEso vuelca todo en tu directorio de trabajo actual. Obviamente, necesitas permisos de lectura-escritura en ese directorio. Si los permisos son incorrectos, recibirás una serie de errores de «permiso denegado» y nada se extraerá.
Si el archivo comprimido está en otro lugar, pasa la ruta completa:
unzip /home/user/downloads/archive_file.zipLos archivos extraídos aún estarán en tu directorio actual, no en el directorio del archivo comprimido. Eso confunde constantemente a las personas. ¿Lo descargaste en /tmp pero estás en /root? Felicidades, tu directorio de inicio raíz ahora tiene un montón de archivos inesperados en él.
Cómo descomprimir múltiples archivos a la vez
¿Tienes una carpeta llena de archivos zip? Usa un comodín:
unzip '*.zip'Las comillas importan. Sin ellas, tu shell intenta expandir el glob antes de que unzip lo vea, lo que conduce a errores extraños cuando tienes más de un archivo comprimido. Bash y zsh hacen esto, y los mensajes de error no son útiles en absoluto.
Si los archivos comparten un patrón de nomenclatura como backup-1.zip, backup-2.zip, ¡especifícalo!
unzip 'backup-*.zip'Algunas shells también necesitan un escape de barra invertida en lugar de comillas. Si un método falla, intenta el otro. Es una de esas cosas que «funcionan en mi máquina» que dependen de la configuración de tu shell.
Descomprimir en un directorio específico en Linux
La opción -d te permite extraer a una carpeta de destino sin tener que cambiar de directorio:
unzip archive_file.zip -d /target/folder/destinationLa ruta puede ser absoluta o relativa. Si el directorio de destino no existe, unzip lo crea por ti. Esta es una de las opciones más utilizadas porque mantiene tu directorio de trabajo limpio y pone los archivos exactamente donde los quieres.
Incluso puedes combinar rutas de origen y destino en un solo comando, extrayendo de un lugar y depositando en otro:
unzip /origin/path/archive_file.zip -d /target/folder/destinationNo es necesario moverte a ningún lado. Ejecuta esto desde donde estés. En un servidor con docenas de directorios y una estructura de carpetas compleja, esto ahorra una cantidad sorprendente de tiempo.
Extraer archivos específicos de un archivo zip
Un archivo zip suele contener decenas de archivos. No siempre necesitas todos ellos. Extrae un solo archivo nombrándolo:
unzip file_archive.zip file1.txtExtrae una carpeta específica de la misma manera:
unzip file_archive.zip folder_name/Para elementos anidados, proporciona la ruta completa dentro del archivo comprimido:
unzip file_archive.zip directory/path/target_file.txt¿Necesitas todo excepto unos pocos archivos? La opción -x excluye elementos:
unzip file_archive.zip -x file_1.txt file_2.txtEsto es útil cuando un archivo comprimido contiene un archivo de configuración que ya has personalizado y no deseas que se sobrescriba. O cuando estás haciendo una actualización parcial y solo necesitas piezas específicas de un paquete de despliegue grande. Los administradores de servidores utilizan este patrón constantemente cuando los archivos comprimidos contienen docenas o cientos de archivos, pero solo unos pocos son relevantes.
Descomprimir un archivo zip protegido por contraseña
Si intentas extraer un zip encrypted sin proporcionar una contraseña, la terminal te pedirá una. Puedes escribirla allí, pero para scripting, eso es inútil. La opción -P (P mayúscula) pasa la contraseña en línea:
unzip -P yourpassword file_archive.zipAdvertencia de seguridad: esto expone la contraseña en tu historial de shell y lista de procesos. En un servidor compartido, cualquier persona que ejecute ps aux puede verlo. Adecuado para pipelines automatizados en máquinas aisladas. Terrible para sistemas de múltiples usuarios.
Usar unzip en scripts de automatización bash
Los administradores que manejan archivos zip recurrentes (copias de seguridad, exportaciones de registros, volcado de datos) no deberían ejecutar unzip manualmente cada vez. Para eso están los scripts. Envuelve la lógica de extracción en un archivo bash, añade un poco de lógica de limpieza, y tienes algo que se ejecuta de forma autónoma.
Aquí hay un ejemplo práctico que extrae un archivo de registro y rota registros antiguos:
#!/bin/bash
log_archive="/path/to/logs/log_archive.zip"
log_destination="/path/to/extracted/logs/"
max_logs=5
unzip "$log_archive" -d "$log_destination"
cd "$log_destination" || exit
log_files=($(ls -1t *.log))
if [ ${#log_files[@]} -gt $max_logs ]; then
excess_logs=$(( ${#log_files[@]} - max_logs ))
for ((i = 0; i < excess_logs; i++)); do
rm "${log_files[$i]}"
done
fiGuárdalo como unzip_log.sh, hazlo ejecutable con chmod +x unzip_log.sh y ejecútalo. Para automatizar la extracción diaria, añade un trabajo cron:
0 2 * * * /path/to/unzip_log.shEso ejecuta el script a las 2:00 todos los días. Ajusta el horario para que coincida con tus necesidades de rotación de registros.
Combinar unzip con otros comandos de Linux
Linux brilla cuando encadenas comandos juntos. La utilidad unzip no es una excepción. Redirigir la salida entre herramientas te permite construir flujos de trabajo de extracción que manejan escenarios complejos en una sola línea.
Encuentra y extrae cada archivo zip en un árbol de directorios:
find /path/to/zips -type f -name '*.zip' -exec unzip {} -d /path/to/destination/ \;Extrae solo archivos que coinciden con un patrón de un archivo usando grep y awk:
unzip archive.zip $(unzip -l archive.zip | grep 'pattern' | awk '{print $4}')Lo que está sucediendo aquí: unzip -l lista el contenido del archivo, grep filtra por tu patrón, awk agarra la columna de nombres de archivo, y el unzip externo extrae esos archivos específicos. Es feo, funciona, y lo usarás más a menudo de lo que esperarías.
Unzip vs Tar y Gzip: principales diferencias
Linux tiene múltiples formatos de archivo y compresión. Los principales que encontrarás son .zip, .tar, .tar.gz (o .tgz), y.gz.. No son intercambiables, y elegir la herramienta equivocada desperdicia tiempo.
El formato zip agrupa archivos y los comprime en un solo paso. Soporta protección por contraseña de forma nativa y funciona en Windows, macOS, y Linux sin software adicional. Esa compatibilidad multiplataforma es por la que los archivos zip siguen siendo omnipresentes, especialmente cuando alguien en una máquina con Windows te envía algo.
Tar, en contraste, solo archiva. Agrupa archivos en un solo archivo .tar sin compresión. Lo rediriges a través de gzip para obtener un .tar.gz, que luego comprime todo el grupo. Dos pasos, dos herramientas. La relación de compresión tiende a ser mejor que zip porque gzip ve todo el archivo como una sola secuencia en lugar de comprimir cada archivo individualmente. Para extraer:
tar -xf archive.tar
gunzip archive.tar.gzEn servidores Linux, domina .tar.gz. La mayoría de los paquetes de código fuente, copias de seguridad de configuración, y paquetes de instalación se envían en ese formato porque tar y gzip vienen preinstalados en todas partes. El formato zip requiere instalar unzip primero, lo que es un pequeño inconveniente pero real cuando estás provisionando máquinas a gran escala o creando imágenes de contenedor donde cada paquete adicional aumenta el tamaño de la imagen.
Para Linux de escritorio, herramientas GUI como PeaZip manejan todos los formatos a través de una interface de apuntar y hacer clic. Conveniente para uso personal, pero no puedes automatizar una GUI. Mantente con herramientas de línea de comandos para cualquier cosa que necesite ser repetible o automatizada.
Mejores prácticas para manejar archivos Zip
Extraer archivos es fácil. Extraerlos de forma segura y sin romper cosas requiere un poco más de reflexión.
Verifica la integridad del archivo
No extraigas archivos a ciegas, especialmente aquellos descargados de internet. Existen archivos zip maliciosos, y pueden contener desde malware hasta bombas zip que consumen todo tu espacio en disco. Una bomba zip es un pequeño archivo que se expande en petabytes de datos. Tu servidor se queda sin espacio en disco, los servicios se caen, y pasas la siguiente hora limpiando.
Primero, lista el contenido sin extraer:
unzip -l downloaded_file.zipEscanea los nombres de archivo. Cualquier cosa sospechosa (ejecutables que no esperabas, rutas que intentan escapar del directorio con ../, o archivos con tamaños descomprimidos absurdamente grandes) es una señal de alerta.
Verifica el checksum contra la fuente:
md5sum downloaded_file.zipCompara la salida con cualquier checksum que proporcione la página de descarga. Si no coinciden, el archivo fue corrupto o manipulado durante la transferencia.
También puedes probar la integridad estructural del archivo:
unzip -t downloaded_file.zipEsto recorre el zip sin realmente escribir archivos. Si algo está dañado por dentro, te lo dirá.
Preservar los archivos y permisos existentes
El comportamiento predeterminado de unzip sobrescribe archivos con nombres coincidentes. En un servidor de producción, eso puede arruinar tu día en aproximadamente dos segundos. Imagina extraer un archivo de configuración que reemplaza silenciosamente tu cuidadosamente ajustado nginx.conf con una versión predeterminada. La opción -n lo previene:
unzip -n archive.zipCon -n, los archivos existentes permanecen intactos. La extracción omite cualquier archivo que ya exista en el directorio de destino. Sin mensajes de confirmación, sin drama. Esta es la opción que quieres cuando haces actualizaciones parciales o restaurando archivos específicos de una copia de seguridad.
Los permisos de archivo son otra cosa que puede salir mal. Tu archivo puede contener archivos con permisos establecidos en 777 (muy abiertos) o 000 (completamente bloqueados). Si preservar los permisos originales importa, usa -o:
unzip -o archive.zipEsto mantiene los permisos que tenían los archivos cuando fueron comprimidos. Si eso es bueno o malo depende de quién creó el archivo y cuán consciente de la seguridad eran. Siempre revisa los permisos después de la extracción en cualquier cosa que esté expuesta a internet pública.
Preguntas frecuentes: comando unzip en Linux
Ejecuta unzip filename.zip y el contenido se extrae a tu directorio actual. Si los quieres en otro lugar, agrega –d /target/path para especificar el destino. Ese es todo el flujo de trabajo para el 90% de los casos de uso. Si el archivo está protegido por contraseña, añade -P seguido de la contraseña antes del nombre de archivo.
Dos comandos: sudo apt update para actualizar tu lista de paquetes, y después sudo apt install unzip para instalar la utilidad. Toma aproximadamente cinco segundos en una conexión decente. Verifica con unzip -v para confirmar que está funcionando.
Unzip maneja .zip archivos, que agrupan y comprimen en un solo formato con protección por contraseña opcional. Tar archiva archivos sin comprimirlos; necesitas gzip o bzip2 encima de tar para compresión. Zip es más portable entre sistemas operativos ya que Windows lo maneja de forma nativa. Tar es más común en servidores Linux porque tar y gzip vienen con cada distribución. La relación de compresión con tar.gz tiende a ser ligeramente mejor ya que gzip comprime el archivo como una sola secuencia.
Usa la opción -d: unzip archive.zip -d /target/path. El directorio se crea si no existe. Funciona con rutas absolutas y relativas. También puedes combinarlo con una ruta de origen, así que unzip /downloads/file.zip -d /var/www/html extrae de una ubicación a otra sin ningún comando cd.
Conclusiones
El comando unzip hace una cosa y la hace bien: abre archivos zip en Linux. Instálalo a través del gestor de paquetes de tu distribución (apt, yum, o dnf), aprende las opciones -d, -n y-l flags, y has cubierto el 95% de los escenarios del mundo real. La mayor parte de lo que harás con unzip encaja en una sola línea.
Para cualquier cosa más compleja (extracción por lotes a través de árboles de directorios, rotación de registros, filtrado basado en patrones), envuelve unzip en un script bash y prográmalo con cron. Encadena con find y grep para flujos de trabajo que tomarían eternamente hacerlo manualmente.
Y siempre, siempre verifica la integridad del archivo antes de extraer archivos de fuentes no confiables. Lista los contenidos con -l, verifica el checksum con md5sum, y prueba con -t. Se necesitan diez segundos adicionales y se evita el tipo de incidentes que generan informes de incidentes. Tu futuro yo te lo agradecerá.