jueves, 28 de enero de 2010

Troceando y reensamblando archivos

Con el auge de la banda ancha, compartir archivos de gran tamaño se ha convertido en algo cotidiano (video digitalizado, imágenes de CD o DVD en formato .ISO, etc.) Algunas de las tecnologías más usadas para hacerlo (los servicios de descarga directa, de los que traté en el post anterior) imponen a veces restricciones en cuanto al tamaño máximo de cada archivo a compartir, por lo que es frecuente encontrar descargas troceadas en varios archivos que luego hay que volver a unir.

Para estos menesteres se vienen utilizando ciertas herramientas software como Hacha (sobre todo en la internet hispana) y HJ-Split. No es que tenga nada en contra de estas aplicaciones; a pesar de sus feas interfaces de usuario, cumplen su misión: permiten trocear un archivo grande en trozos más pequeños y reensamblarlos posteriormente de una forma sencilla, para torpes, como la mayoría de programas en Windows. Lo que sí me sorprende es que sean los más populares, existiendo alternativas menos dañinas a la vista como File Splitter.

Pero no es de estos programas de los que quería tratar en este post, sino de ciertas herramientas que ya tenemos en nuestro sistema para lidiar con archivos troceados, muchas veces sin ni siquiera saberlo. En el caso de usar Linux, tenemos en la consola la solución completa en la forma de dos utilidades básicas que vienen de fábrica:

split nos permite trocear un archivo indicándole el tamaño de los trozos, el prefijo y el sufijo a utilizar en los nombres de los archivos resultantes. Por ejemplo, para trocear un archivo AVI de 300 MB en trozos de 100 MB que se llamen como el archivo original más un sufijo numérico de dos dígitos (empezando por 00) lo invocaríamos desde la consola de la siguiente forma:

$ split -d -b 100M video.avi video.avi.

cat nos permite concatenar archivos, tanto de texto como binarios, volcando el resultado a la salida estándar (la pantalla). Si lo combinamos con el redireccionamiento de la salida estándar a un archivo, conseguiremos reensamblar el archivo original a partir de sus trozos (es vital enumerarlos en el orden correcto). Siguiendo con el ejemplo anterior:

$ cat video.avi.00 video.avi.01 video.avi.02 > video.avi

Si esto nos parece demasiado complicado, siempre podemos instalar un programa con interfaz gŕafica, similar a Hacha tecleando desde la consola (luego lo ejecutaremos como ghoz):

$ sudo apt-get install hoz-gui

En sistemas Windows no tenemos preinstalada ninguna herramienta (que yo sepa ;) similar a split, pero podemos usar el viejo comando copy para reensamblar archivos troceados de la siguiente forma:

c:> copy /b video.avi.00 + video.avi.01 + video.avi.02 video.avi

En fin, que tenemos distintas opciones a la hora de trocear y unir archivos, algunas incluso esperando en la consola de comandos a ser invocadas ;-)