Comprimir archivos en Linux, las muchas variaciones y cómo usarlas

Algunos de nosotros hemos estado comprimiendo archivos en sistemas Unix y Linux durante muchas décadas, para ahorrar algo de espacio en disco y empaquetar archivos para archivar. Aun así, hay algunas variaciones interesantes en la compresión que no todos hemos intentado. Entonces, en esta publicación, vamos a ver la compresión y descompresión estándar, así como algunas otras opciones interesantes de compresión.

[Consejos para Linux de dos minutos: aprenda a dominar una gran cantidad de comandos de Linux en estos videos tutoriales de 2 minutos]

El comando zip básico

Primero, veamos lo básico Código Postal mando. Utiliza lo que es esencialmente el mismo algoritmo de compresión que gzip, Pero hay un par de diferencias importantes. Por un lado, el comando gzip se usa solo para comprimir un solo archivo donde zip puede comprimir archivos y unirlos en un archivo. Por otro lado, el comando gzip comprime "en su lugar". En otras palabras, deja un archivo comprimido, no el archivo original junto con la copia comprimida. Aquí hay un ejemplo de gzip en el trabajo:

$ gzip onefile $ ls -l -rw-rw-r-- 1 shs shs 10514 15 de enero 13:13 onefile.gz 

Y aquí está zip. Observe cómo este comando requiere que se proporcione un nombre para el archivo comprimido donde gzip simplemente usa el nombre del archivo original y agrega la extensión .gz.

$ zip twofiles.zip archivo * agregando: archivo1 (desinflado 82%) agregando: archivo2 (desinflado 82%) $ ls -l -rw-rw-r-- 1 shs shs 58021 15 de enero 13:25 archivo1 -rw-rw- r-- 1 shs shs 58933 15 de enero 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 de enero 13:35 twofiles.zip 

Observe también que los archivos originales todavía están allí.

La cantidad de espacio en disco que se ahorra (es decir, el grado de compresión obtenido) dependerá del contenido de cada archivo. La variación en el ejemplo a continuación es considerable.

$ zip mybin.zip ~ / bin / * agregando: bin / 1 (desinflado 26%) agregando: bin / append (desinflado 64%) agregando: bin / BoD_meeting (desinflado 18%) agregando: bin / cpuhog1 (desinflado 14%) agregando: bin / cpuhog2 (almacenado 0%) agregando: bin / ff (desinflado 32%) agregando: bin / file.0 (desinflado 1%) agregando: bin / loop (desinflado 14%) agregando: bin / notas (desinflado 23 %) agregando: bin / patrones (almacenado 0%) agregando: bin / runme (almacenado 0%) agregando: bin / tryme (desinflado 13%) agregando: bin / tt (desinflado 6%) 

El comando descomprimir

los abrir la cremallera el comando recuperará el contenido de un archivo zip y, como probablemente sospeche, dejará el archivo zip intacto, mientras que un comando similar de gunzip dejaría solo el archivo sin comprimir.

$ descomprimir twofiles.zip Archivo: twofiles.zip inflado: archivo1 inflado: archivo2 $ ls -l -rw-rw-r-- 1 shs shs 58021 15 de enero 13:25 archivo1 -rw-rw-r-- 1 shs shs 58933 15 de enero 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 de enero 13:35 twofiles.zip 

El comando zipcloak

los cremallera El comando encripta un archivo zip, solicitándole que ingrese una contraseña dos veces (para ayudar a garantizar que no se "meta la mano") y deja el archivo en su lugar. Puede esperar que el tamaño del archivo varíe un poco del original.

$ zipcloak twofiles.zip Ingrese la contraseña: Verifique la contraseña: cifrado: archivo1 cifrado: archivo2 $ ls -l total 204 -rw-rw-r-- 1 shs shs 58021 15 de enero 13:25 archivo1 -rw-rw-r-- 1 shs shs 58933 15 de enero 13:34 file2 -rw-rw-r-- 1 shs shs 21313 15 de enero 13:46 twofiles.zip <== slightly larger than unencrypted version 

Tenga en cuenta que los archivos originales todavía están allí sin encriptar.

El comando zipdetails

los zipdetails el comando le mostrará detalles: un lote de detalles sobre un archivo comprimido, probablemente mucho más de lo que te gustaría absorber. Aunque estamos viendo un archivo cifrado, zipdetails muestra los nombres de los archivos junto con las fechas de modificación del archivo, la información del usuario y del grupo, los datos de la longitud del archivo, etc. Tenga en cuenta que todo esto es "metadatos". No vemos el contenido de los archivos..

$ zipdetails twofiles.zip 0000 ENCABEZADO LOCAL # 1 04034B50 0004 Extraer Zip Spec 14 '2.0' 0005 Extraer OS 00 'MS-DOS' 0006 Indicador de propósito general 0001 [Bit 0] 1 'Cifrado' [Bits 1-2] 1 'Máximo Compresión '0008 Método de compresión 0008' Desinflado '000A Última hora de modificación 4E2F6B24' Mar 15 de enero 13:25:08 2019 '000E CRC F1B115BD 0012 Longitud comprimida 00002904 0016 Longitud sin comprimir 0000E2A5 001A Longitud del nombre de archivo 0005 001C Longitud extra 001C 001E Nombre de archivo' '0023 ID extra # 0001 5455 'UT: Marca de tiempo extendida' 0025 Longitud 0009 0027 Banderas '03 mod access '0028 Mod Time 5C3E2584' Tue Jan 15 13:25:08 2019 '002C Access Time 5C3E27BB' Tue Jan 15 13:34:35 2019 '0030 ID extra # 0002 7875' ux: Unix Extra Type 3 '0032 Longitud 000B 0034 Versión 01 0035 Tamaño de UID 04 0036 UID 000003E8 003A Tamaño de GID 04 003B GID 000003E8 003F CARGA DE PAGO 2943 CABEZAL LOCAL # 2 04034B50 2947 Extracto Zip Spec 14' 2.0 '2948 Extract OS 00' MS-DOS '2949 Indicador de propósito general 0001 [Bit 0] 1' Cifrado '[Bits 1-2] 1' Compresión máxima '294B C Método de omisión 0008 'Desinflado' 294D Última hora de modificación 4E2F6C56 'Mar 15 de enero 13:34:44 2019' 2951 CRC EC214569 2955 Longitud comprimida 00002913 2959 Longitud sin comprimir 0000E635 295D Longitud del nombre de archivo 0005 295F Longitud extra 001C 2961 Nombre de archivo 'archivo2' 2966 ID extra # 0001 5455 'UT: Marca de tiempo extendida' 2968 Longitud 0009 296A Banderas '03 mod access '296B Mod Time 5C3E27C4' Tue Jan 15 13:34:44 2019 '296F Access Time 5C3E27BD' Tue Jan 15 13:34:37 ​​2019 '2973 Extra ID # 0002 7875 'ux: Unix Extra Type 3' 2975 Longitud 000B 2977 Versión 01 2978 UID Tamaño 04 2979 UID 000003E8 297D GID Tamaño 04 297E GID 000003E8 2982 PAYLOAD 5295 CENTRAL HEADER # 1 02014B50 5299 Creado Zip Spec 1E '3.0' 529A Creado OS 03 'Unix' 529B Extracto Zip Spec 14 '2.0' 529C Extracto OS 00 'MS-DOS' 529D Indicador de propósito general 0001 [Bit 0] 1 'Cifrado' [Bits 1-2] 1 'Máxima compresión' 529F Método de compresión 0008 'Desinflado' 52A1 Última modificación 4E2F6B24 'Mar 15 de enero 13:25:08 2019' 52A5 CRC F1B115BD 52A9 Longitud comprimida 00002904 52AD Uncompr Longitud essed 0000E2A5 52B1 Longitud del nombre del archivo 0005 52B3 Longitud extra 0018 52B5 Longitud del comentario 0000 52B7 Inicio del disco 0000 52B9 Int. Atributos del archivo 0001 [Bit 0] 1 Datos de texto 52BB Ext. 0001 5455 'UT: Marca de tiempo extendida' 52CA Longitud 0005 52CC Flags '03 mod access '52CD Mod Time 5C3E2584' Tue Jan 15 13:25:08 2019 '52D1 Extra ID # 0002 7875' ux: Unix Extra Type 3 '52D3 Longitud 000B 52D5 Versión 01 52D6 UID Tamaño 04 52D7 UID 000003E8 52DB GID Tamaño 04 52DC GID 000003E8 52E0 CENTRAL HEADER # 2 02014B50 52E4 Creado Zip Spec 1E '3.0' 52E5 Creado OS 03 'Unix' 52E6 Extracto Zip Spec 14 '2.0' 52E7 Extracto OS 00 'MS-DOS' 52E8 Indicador de propósito general 0001 [Bit 0] 1 'Cifrado' [Bits 1-2] 1 'Compresión máxima' 52EA Método de compresión 0008 'Desinflado' 52EC Última hora de modificación 4E2F6C56 'Mar 15 de enero 13:34:44 2019 '52F0 CRC EC214569 52F4 Longitud comprimida 00002913 52F8 Longitud sin comprimir 0000E635 52FC Longitud del nombre de archivo 0005 52FE Longitud adicional 0018 5300 Longitud de comentario 0000 5302 Inicio de disco 0000 5304 Atributos de archivo int 0001 [Bit 0] 1 Datos de texto 5306 Atributos de archivo externo 81B40000 530A Compensación de encabezado local 00002943 530E Nombre de archivo 'archivo2' 5313 ID extra # 0001 5455 'UT: Marca de tiempo extendida' 5315 Longitud 0005 5317 Banderas '03 mod access '5318 Mod Time 5C3E27C4' Tue Jan 15 13:34:44 2019 '531C Extra ID # 0002 7875' ux: Unix Extra Type 3 '531E Longitud 000B 5320 Versión 01 5321 UID Tamaño 04 5322 UID 000003E8 5326 GID Tamaño 04 5327 GID 000003E8 532B FIN CENTRAL HEADER 06054B50 532F Número de este disco 0000 5331 Central Dir Disk no 0000 5333 Entradas en este disco 0002 5335 Total de entradas 0002 5337 Tamaño de Central Dir 00000096 533B Offset a Central Dir 00005295 533 Longitud 0000 Hecho 

El comando zipgrep

los zipgrep El comando utilizará una función de tipo grep para localizar contenido particular en sus archivos comprimidos. Si el archivo está encriptado, deberá ingresar la contraseña provista para el encriptado de cada archivo que desee examinar. Si solo desea verificar el contenido de un solo archivo del archivo, agregue su nombre al final del comando zipgrep como se muestra a continuación.

$ zipgrep peligro twofiles.zip file1 [twofiles.zip] file1 contraseña: Ciertos pesticidas deben prohibirse ya que son peligrosos para el medio ambiente. 

El comando zipinfo

los zipinfo El comando proporciona información sobre el contenido de un archivo comprimido, ya sea cifrado o no. Esto incluye los nombres de archivo, tamaños, fechas y permisos..

$ zipinfo twofiles.zip Archivo: twofiles.zip Tamaño del archivo zip: 21313 bytes, número de entradas: 2 -rw-rw-r-- 3.0 unx 58021 Tx defN 19-ene-15 13:25 archivo1 -rw-rw-r - 3.0 unx 58933 Tx defN 19-ene-15 13:34 archivo2 2 archivos, 116954 bytes sin comprimir, 20991 bytes comprimidos: 82.1% 

El comando zipnote

los zipnote El comando se puede utilizar para extraer comentarios de archivos zip o agregarlos. Para mostrar comentarios, solo prefacio el nombre del archivo con el comando. Si no se han agregado comentarios anteriormente, verá algo como esto:

$ zipnote twofiles.zip @ file1 @ (comentario sobre esta línea) @ file2 @ (comentario sobre esta línea) @ (comentario sobre el archivo zip debajo de esta línea) 

Si desea agregar comentarios, escriba el resultado del comando zipnote en un archivo:

$ zipnote twofiles.zip> comentarios 

A continuación, edite el archivo que acaba de crear, insertando sus comentarios sobre el (comentario sobre esta línea) líneas. Luego agregue los comentarios utilizando un comando zipnote como este:

$ zipnote -w twofiles.zip < comments 

El comando zipsplit

los zipsplit El comando se puede usar para dividir un archivo zip en varios archivos zip cuando el archivo original es demasiado grande, tal vez porque está intentando agregar uno de los archivos a una pequeña unidad de disco USB. La forma más fácil de hacer esto parece ser especificar el tamaño máximo para cada una de las partes del archivo comprimido. Este tamaño debe ser lo suficientemente grande como para acomodar el archivo incluido más grande.

$ zipsplit -n 12000 twofiles.zip Se crearán 2 archivos zip (100% de eficiencia) creando: twofile1.zip creando: twofile2.zip $ ls twofile * .zip -rw-rw-r-- 1 shs shs 10697 15 de enero 14 : 52 twofile1.zip -rw-rw-r-- 1 shs shs 10702 15 de enero 14:52 twofile2.zip -rw-rw-r-- 1 shs shs 21377 15 de enero 14:27 twofiles.zip 

Observe cómo los archivos extraídos se denominan secuencialmente "twofile1" y "twofile2".

Envolver

los Código Postal El comando, junto con algunos de sus compatriotas, proporciona un gran control sobre cómo generar y trabajar con archivos comprimidos.

[Ver también: consejos y trucos invaluables para solucionar problemas de Linux] Únase a las comunidades de Network World en Facebook y LinkedIn para comentar temas que son lo más importante.