
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
Para instalar los elementos que faltan en CentOS 7, use el siguiente comando:
sudo yum install perl-IO-Compress
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.