sábado, 29 de marzo de 2008

Quien parte y reparte se lleva la mejor parte

La entrada que escribo a continuación es un "microtutorial" para indicar cómo podemos partir archivos y luego volverlos a unir. Esta operación es muy sencilla y puede facilitar el transpaso de información entre usuarios.


Vamos a suponer que nosotros, los que vamos a partir los archivos, utilizamos Linux. El destinatario de los archivos (el que deberá unir las partes) podrá tener Windows o Linux. Este tutorial nos enseñará a hacer un script en Linux para partir los archivos, y otro (para Linux ó Windows) para unirlos.


Bajo Linux:

En primer lugar, supongamos que tenemos el archivo "grande": archivo.ext en la carpeta "/home/usuario/loquesea/".

Abrimos una consola y nos metemos en la carpeta donde está el archivo que deseamos partir:

cd /home/usuario/loquesea/

Ahora vamos a partirlo. Para ello, utilizaremos la orden "split":

split -b numerom archivo.ext parte_

La orden "split" corta el archivo que le digamos, en nuestro ejemplo, "archivo.ext".

Hay que decir cómo de grande queremos que sean esas partes, por lo que en "número" ponemos el número de Mega Bytes que ocupará como máximo cada una de las partes (son Mega Bytes porque después del número aparece una "m", se pueden utilizar otras unidades, por ejemplo, si no ponemos nada, son bytes).

La palabra "parte_" es el nombre del prefijo que he puesto yo, podemos poner lo que queramos. En nuestro ejemplo, generaría una serie de archivos más pequeños llamados "parte_aa, parte_ab, parte_ac, ... , parte_ba, parte_bb, parte_bc, ... , parte_zy, parte_zz".

Una vez que tenemos nuestro archivo grante partido en archivos más pequeños, podemos mandarlos de manera más fácil. Nuestro receptor deberá unirlos a la llegada, ¿Cómo los unimos?

Lo primero es que todas las partes que forman el archivo total han de estar descargadas y colocadas todas ellas en la misma carpeta.

Recordemos que seguimos en Linux (luego explicaré cómo se unen estos archivos en Windows). Abrimos una consola y nos vamos a la carpeta donde tengamos colocadas todas las partes:

cd /home/usuarioreceptor/descargas_por_ejemplo_/

Después, utilizaremos la orden "cat" que concatena archivos:

cat parte_* > archivo.ext

En "parte_" ponemos el prefijo (parte común) que haya puesto el que ha partido el archivo inicial. Así regeneramos el archivo llamado "archivo.ext" uniendo todas sus partes.

Implementar esto en scripts para Linux no es difícil, pero no aporta demasiado debido a que casi es más rápido utilizar en consola las órdenes anteriores. Podrían ser algo como:

dividir.sh

#/bin/sh/
echo Nombre del archivo?
read a
echo Megas maximos por parte?
read M
echo Prefijo?
read p
echo Dividiendo partes...
split -b $M\m $a $p\_
echo ***Finalizado***

unir.sh

#/bin/sh/
echo Nombre del prefijo?
read p
echo Que nombre quiere ponerle al archivo generado?
read a
echo Uniendo...
cat $p\_* > $a
echo ***Finalizado***

Hemos supuesto que los prefijos llevan siempre un signo "_" entre lo que llamamos "prefijo" en el programa y la numeración, es decir, que siempre es de la forma "prefijo_aa, prefijo_ab..."


Bajo Windows:

Ahora queremos pasar nuestros archivos previamente divididos con split a un usuario de Windows, por lo general, menos habituado a la consola. Queremos hacer un script sencillo para que sólo deba hacer "doble click" para unir las partes. El código (que se puede hacer en un editor de texto y que se debe guardar como ".bat") podría ser algo como el que sigue:

unir.bat

@echo off
copy /b parte_aa +parte_ab +parte_ac archivo.ext
echo Ya este todo unido :D!
echo Pulsa ESPACIO para finalizar.
pause


Donde en "parte_aa +parte_ab +parte_ac", en realidad hay que continuar con todas las partes que hayamos generado con el split. Si metemos ese archivo ("unir.bat") en la misma carpeta en la que están todas las partes, y hacemos doble click sobre él, se unirán todas para formar el archivo completo original ("archivo.ext").


Ayuda y referencias:

Para dudas sobre los comandos utilizados bajos Linux, abrid una consola y teclear:
  • split --help
  • cat --help
Fuentes y referencias:

No hay comentarios:

Publicar un comentario

Querido astarothista!,

Si te ha gustado la entrada y quieres dejar constancia de ello, tienes alguna sugerencia para completarla o corregirla, quieres mostrar tu opinión respecto a algo de lo que se haya hablado en esta entrada (con respeto) o simplemente quieres dejarme un mensaje a mi o a la comunidad, no dudes en comentar ;)!

Recuerda que también estamos en Facebook y en Google+.