Cómo crear archivos ZIP partidos

Valoración del Usuario:  / 0
MaloBueno 

Hoy tuve la necesidad de copiar un archivo de 4.9 GB a un pendrive con formato FAT 32. Como muchos sabrán, el formato de sistema de archivos FAT 32 permite un tamaño máximo de archivo de 4 GiB, por lo que sólo me quedaron dos opciones: formatear el pendrive a NTFS; o crear un archivo ZIP partido, es decir dividido en trozos de igual tamaño, para superar la limitación de 4 GiB.

En este caso me era imposible formatear a NTFS porque el pendrive contenía otros archivos que no podía borrar, por lo que procedí a crear un archivo ZIP partido en trozos de igual tamaño sin utilizar compresión (para que sea más rápido).



Para crear archivos ZIP en GNU/Linux se utiliza la herramienta zip. Entre muchas características, el formato de archivo ZIP permite dividir o partir el archivo en trozos de igual tamaño. Para lograr esto se utiliza la opción -s (split) especificando el tamaño de los trozos en kB (k), MB (m), GB (g) ó TB (t). Por ejemplo para crear el archivo test.zip partido en trozos de 300 MB, utilizar:

$ zip -s 300m -Z store test.zip *

El parámetro -Z store indica que se cree el archivo sin utilizar compresión (plano). Esto permite que la creación sea más rápida pero el tamaño mayor (ya que no se comprime). Luego se especifica el nombre del archivo a crear (test.zip), y con el asterisco (*) se indica que agregue al ZIP todos los archivos en el directorio actual.

El archivo original (dvd.iso) ocupa 4.9 GB, luego de crear el ZIP partido en trozos de 300 MB (test.zip) quedan los siguientes archivos:

$ ls -lh
total 9.8G
-rw-r--r-- 1 emi emi 300M nov 30 13:56 test.z01
-rw-r--r-- 1 emi emi 300M nov 30 13:50 test.z02
-rw-r--r-- 1 emi emi 300M nov 30 13:51 test.z03
-rw-r--r-- 1 emi emi 300M nov 30 13:51 test.z04
-rw-r--r-- 1 emi emi 300M nov 30 13:51 test.z05
-rw-r--r-- 1 emi emi 300M nov 30 13:52 test.z06
-rw-r--r-- 1 emi emi 300M nov 30 13:52 test.z07
-rw-r--r-- 1 emi emi 300M nov 30 13:52 test.z08
-rw-r--r-- 1 emi emi 300M nov 30 13:52 test.z09
-rw-r--r-- 1 emi emi 300M nov 30 13:53 test.z10
-rw-r--r-- 1 emi emi 300M nov 30 13:53 test.z11
-rw-r--r-- 1 emi emi 300M nov 30 13:53 test.z12
-rw-r--r-- 1 emi emi 300M nov 30 13:54 test.z13
-rw-r--r-- 1 emi emi 300M nov 30 13:54 test.z14
-rw-r--r-- 1 emi emi 300M nov 30 13:55 test.z15
-rw-r--r-- 1 emi emi 300M nov 30 13:56 test.z16
-rw-r--r-- 1 emi emi 187M nov 30 13:56 test.zip
-rwxrwxrwx 1 emi emi 4.9G nov 10  2010 dvd.iso

Ahora es posible copiar los trozos de 300 MB al sistema de archivos FAT 32 sin problemas, en lugar de tener que copiar el archivo de 4.9 GB.

Descomprimir el ZIP partido no es una tarea trivial, es necesario concatenar todos trozos (utilizando cat) y luego descomprimirlos (con la herramienta unzip):

$ cat test.* > merged.zip
$ unzip merged.zip

Es probable que la herramienta unzip retorne varias advertencias (Warning) respecto a la integridad del archivo concatenado (merged.zip), aunque seguramente será capaz de lidiar perfectamente con el mismo. Luego de descomprimir el resultado es:

$ ls -lh dvd.iso
-rw------- 1 emi emi 4,9G nov 10  2010 dvd.iso

La mayoría de las herramientas gráficas (Ark, File Roller, 7zip, etc.) son capaces de lidiar con los archivos multi-parte (Multi-part, Multi-session) sin problemas, aunque siempre es bueno saber utilizar las herramientas desde la línea de comandos ya que a veces no queda otra alternativa (por ejemplo cuando se trabaja sobre un servidor o en una sesión SSH remota).



Suscribirse

    Registrate para recibir las novedades y artículos por correo electrónico.

Linuxito en G+