Los archivos ZIP son un archivo universal comúnmente utilizado en sistemas Windows, macOS e incluso Linux. Puede crear un archivo zip o descomprimir archivos de uno con algunos comandos comunes de terminal Linux.
¿De qué vamos a hablar?
- 1 El formato de archivo comprimido ZIP
- 2 zip, descomprimir y otras utilidades
- 3 Cómo crear un archivo ZIP con el comando zip
- 4 Inclusión de directorios en archivos ZIP
- 5 Establecer el nivel de compresión
- 6 Agregar contraseñas a archivos ZIP
- 7 Cómo descomprimir un archivo ZIP con el comando descomprimir
- 8 Extracción de archivos a un directorio de destino
- 9 Extraer archivos ZIP protegidos con contraseña
- 10 Excluir archivos
- 11 Sobrescribir archivos
- 12 Mirando dentro de un archivo ZIP
- 13 Agregar una contraseña con el comando zipcloak
- 14 Ver detalles del archivo con el comando zipdetails
- 15 Buscar dentro del archivo con el comando zipgrep
- 16 Ver información con el comando zipinfo
- 17 Dividir el archivo con el comando zipsplit
El formato de archivo comprimido ZIP
Gracias al dominio del formato ZIP en el ámbito 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, descomprimir y otras utilidades
Es posible que ya sepa que Linux y los sistemas operativos similares a 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 servicios públicos relacionados, como zipcloak
, zipdetails
, zipsplit
y zipinfo
.
Comprobamos 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 18.04. Fedora 29 incluido zip
y unzip
, pero ninguna de las otras utilidades y ese fue también el caso de CentOS.
Para instalar los elementos que faltan en Fedora 29, utilice el siguiente comando:
sudo dnf install perl-IO-Compress
Para instalar los elementos que faltan en CentOS 7, utilice el siguiente comando:
sudo yum install perl-IO-Compress
Si falta alguna de las utilidades zip de 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, debe indicar zip
el nombre del archivo comprimido y los archivos que se incluirán en él. No necesita agregar la extensión “.zip” al nombre del archivo, pero no hace daño si lo hace.
Para crear un archivo llamado source_code.zip
que contienen todos los archivos de código fuente de C y los archivos de encabezado en el directorio actual, usaría este comando:
zip source_code *.c *.h
Cada archivo aparece a medida que se agrega. Se muestra el nombre del archivo y la cantidad de compresión que se logró en ese archivo.
Si observa el nuevo archivo ZIP, puede ver que la extensión de archivo “.zip” ha sido agregada automáticamente por zip
.
ls -l source_code.zip
Si no desea ver la salida de zip
A medida que se crea el archivo ZIP, utilice el -q
opción (tranquila).
zip -q source_code *.c *.h
Inclusión de directorios en archivos ZIP
Para incluir subdirectorios en el archivo ZIP, utilice el -r
(recursivo) e incluir el nombre del subdirectorio en la línea de comandos. Para crear un archivo ZIP como antes e incluir también el subdirectorio de archivo, utilice este comando.
zip -r -q source_code archive/ *.c *.h
Para ser considerado con la persona que extraerá los archivos del archivo ZIP que está creando, a menudo es cortés crear archivos ZIP con los archivos dentro de él contenidos en un directorio. Cuando la persona que recibe el archivo ZIP lo extrae, todos los archivos se colocan ordenadamente dentro de un directorio en su computadora.
En el siguiente comando, vamos a archivar el work
directorio y todos los subdirectorios. Tenga en cuenta que este comando se emite desde el directorio principal del work
carpeta.
zip -r -q source_code work/
Establecer el nivel de compresión
Puede establecer cuánta compresión se aplica a los archivos a medida que se agregan al archivo ZIP. El rango es de 0 a 9, sin que 0 sea ninguna compresión. Cuanto mayor sea la compresión, más tiempo se tarda en crear el archivo ZIP. Para archivos ZIP de tamaño modesto, la diferencia horaria no es una penalización significativa. Pero entonces, para archivos ZIP de tamaño modesto, la compresión predeterminada (nivel 6) es probablemente lo suficientemente buena de todos modos.
Llegar zip
para usar un nivel específico de compresión, pase el número como una opción en la línea de comandos, con un “-“, como este:
zip -0 -r -q source_code work/
El nivel de compresión predeterminado es 6. No hay necesidad de proporcionar el -6
opció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 que se archivan aquí, la diferencia entre ninguna compresión (nivel 0) y la compresión predeterminada (nivel 6) es de 400K. La diferencia entre la compresión predeterminada y el nivel más alto de compresión (nivel 9) es solo 4K.
Puede que no parezca mucho, pero para los archivos que contienen cientos o incluso miles de archivos, el smaLa cantidad de compresión adicional por archivo se sumaría a un ahorro de espacio que vale la pena.
Agregar contraseñas a archivos ZIP
Agregar contraseñas a archivos ZIP es fácil. Utilice el -e
(cifrar) y se le pedirá que ingrese su contraseña y que la vuelva a ingresar 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, utilice el comando descomprimir y proporcione el nombre del archivo ZIP. Tenga en cuenta que usted hacer necesidad de proporcionar la extensión “.zip”.
unzip source_code.zip
A medida que se extraen los archivos, se enumeran en la ventana del terminal.
Los archivos ZIP no llevan detalles de la propiedad del archivo. Todos los archivos que se extraen tienen el propietario establecido en el usuario que los está extrayendo.
Al igual que zip
, unzip
tiene un -q
(silencioso), para que no necesite ver la lista de archivos a medida que se extraen los archivos.
unzip -q source_code.zip
Extracción de archivos a un directorio de destino
Para extraer los archivos en un directorio específico, utilice el botón -d
(directorio) y proporcione la ruta al directorio en el que desea que se extraiga el archivo.
unzip -q source_code.zip -d ./development
Extraer archivos ZIP protegidos con contraseña
Si se ha creado un archivo ZIP con una contraseña, unzip
le pedirá la contraseña. Si no proporciona la contraseña correcta, unzip
no extraerá los archivos.
unzip -q source_code.zip
Si no le importa que otros vean su contraseña, ni que se almacene en su historial de comandos, puede proporcionar la contraseña en la línea de comandos con el -P
(contraseña) opción. (Debe usar una “P” mayúscula)
unzip -P fifty.treacle.cutlass -q source_code.zip
Excluir archivos
Si no desea extraer un archivo o grupo de archivos determinado, utilice el botón -x
(excluir) opción. En este ejemplo, queremos extraer todos los archivos excepto los que terminan en una extensión “.h”.
unzip -q source_code.zip -x *.h
Sobrescribir archivos
Supongamos que ha extraído un archivo pero ha eliminado algunos de los archivos extraídos por error.
Una solución rápida para eso sería extraer los archivos una vez más. Pero si intenta extraer el archivo ZIP en el mismo directorio que antes, unzip
le pedirá una decisión con respecto a la sobrescritura de los archivos. Esperará una de las siguientes respuestas.
Aparte de la r
(renombrar) respuesta, estas respuestas son sensibles a mayúsculas y minúsculas.
- y: Sí, sobrescribir este archivo
- n: No, no sobrescriba este archivo
- Un: Todos, sobrescribir todos los archivos
- N: Ninguno, sobrescribir ninguno de los archivos
- r: Cambie el nombre, extraiga este archivo pero así como un nuevo nombre. Se le pedirá un nuevo nombre.
Para forzar unzip
Para sobrescribir los archivos existentes, utilice el botón -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
Sólo extraiga los archivos del archivo que sean no en el directorio de destino. Para ello, utilice el -n
(nunca sobrescribir) opción.
unzip -n source_code.zip
Mirando dentro de un archivo ZIP
A menudo es útil e instructivo ver una lista de los archivos dentro de un archivo ZIP antes de extraerlo. Puede hacer esto con el -l
opción (archivo de lista). 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 dentro del archivo ZIP, su longitud y la hora y fecha en que se agregaron al archivo. Presione “q” para salir de less
.
Hay otras formas de echar un vistazo dentro de un archivo ZIP que dan diferentes tipos de información, como veremos.
Agregar una contraseña con el comando zipcloak
Si ha creado un archivo ZIP pero olvidó agregar una contraseña, ¿qué puede hacer? Puede agregar rápidamente una contraseña al archivo ZIP utilizando el zipcloak
mandar. Pase el nombre del archivo ZIP en la línea de comandos. Se le pedirá 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
El zipdetails
Le mostrará un comando lote de información relativa al archivo ZIP. La única forma sensata de manejar la cantidad de salida que este comando puede dar es canalizarla a través de 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 dentro del archivo ZIP como metadatos y no forma parte de los datos cifrados.
Buscar dentro del archivo con el comando zipgrep
El zipgrep
le permite buscar dentro de los archivos en un archivo ZIP. En el siguiente ejemplo, queremos saber qué archivos dentro de la ZLos archivos IP tienen el texto “keyval.h” en ellos.
zipgrep keyval.h source_code.zip
Podemos ver 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 en el archivo ZIP.
Ver información con el comando zipinfo
El zipinfo
le brinda otra forma de buscar dentro de un archivo ZIP. Como antes, canalizamos la salida a través de less
.
zipinfo source_code.zip | less
De izquierda a derecha la salida muestra:
- Los 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)
- Los datos y la marca de tiempo
- El nombre del archivo y cualquier directorio
El descriptor de archivo se compone de dos caracteres. El primer carácter será una “t” o una “b” para indicar un texto o archivo binario. Si se trata de una letra mayúscula, el archivo se cifra. El segundo carácter puede ser uno de los cuatro personajes. Este carácter representa qué tipo de metadatos se incluyen para este archivo: ninguno, un encabezado local extendido, un “campo adicional” o ambos.
- -: Si ninguno de los dos existe, el carácter será un guión
- l: Si hay un encabezado local extendido pero ningún campo adicional
- x: Si no hay ningún encabezado local extendido pero hay un campo adicional
- X: Si hay un encabezado local extendido y hay un campo adicional
Dividir el archivo con el comando zipsplit
Si necesita enviar el archivo ZIP a otra persona pero hay restricciones de tamaño o problemas con la transmisión del archivo, puede usar el zipsplit
para dividir el archivo ZIP original en un conjunto de archivos ZIP más pequeños.
El -n
(tamaño) le permite establecer un tamaño máximo para cada uno de los nuevos archivos ZIP. En este ejemplo, estamos dividiendo el source_code.zip
archivo. No queremos que ninguno de los nuevos archivos ZIP sea mayor de 100 KB (102400 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 del archivo ZIP.
Con estos comandos, puede crear sus propios archivos ZIP, descomprimir los archivos ZIP que reciba y realizar otras operaciones en ellos sin salir del terminal Linux.