Back to Our Home

Documentación

Introducción:

Zsplit y unzsplit son herramientas de línea de comandos que operan de forma similar a software tan popular como Symantec Norton Ghost TM o Acronis True Image TM y permiten crear una imagen exacta de una unidad de disco para operaciones de backup y clonado de discos, proporcionando una protección de datos total. Aunque, a diferencia de otras soluciones de software, zsplit y unzsplit ¡son libres para descargar y distribuir! Por favor, nótese que tanto zsplit como unzsplit están protegidos por la GNU GPL2.

Zsplit y unzsplit emplean la librería zlib para implementar las funciones de compresión y descompresión dentro de la memoria, incluyendo chequeos de integridad de los datos descomprimidos. Esta librería fue escrita por Jean-loup Gailly (compresión) y Mark Adler (descompresión). El autor agradece la posibilidad de emplear esta librería bajo las condiciones de la licencia zlib.

Modo de empleo:

Para conocer los detalles del empleo de las distintas opciones, por favor, consultar la documentación de ayuda de zsplit y unzsplit. A continuación se verán aquí algunas situaciones generales de backup/restauración en las que se emplean estas herramientas.

Operando en local:

Situación 1: En nuestro ordenador tenemos una unidad de disco hda con una partición Linux arrancable y zsplit en ella. Además, en nuestro ordenador tenemos una unidad de disco hdb con cualquier otro sistema operativo en él, por ejemplo, Windows XP. La unidad hda tiene el tamaño adecuado de modo que en el espacio restante puede contener la totalidad de la unidad hdb. Se desea obtener una imagen completa de hdb, para poder transferirla a uno o más discos DVD para su almacenamiento.

Asumiendo que arrancamos desde hda, seleccionamos el directorio donde la imagen de hdb se almacenará y tecleamos en la línea de comandos:

zsplit -s 4.5G -N WinXP_backup -d /dev/hdb

Ya está. La imagen de la unidad hdb se comprimirá al nivel establecido por defecto, se dividirá en trozos de 4.5 Gibibyte (gigabyte binario) y se guardará en el directorio actual (los trozos tendrán los nombres WinXP_backup_0.spl.zp, WinXP_backup_1.spl.zp, WinXP_backup_2.spl.zp, …). Cada uno de estos archivos cabrá exactamente en un disco DVD al que se podrá copiar para su almacenamiento. La opción ‘-d’ habilita la creación de un archivo debug.log en el directorio actual. Es este archivo se encuentra toda la información acerca del tamaño y tiempo de creación de los archivos de imagen. Si se desea guardar los archivos imagen en cualquier otro directorio de la unidad hda, teclearemos sobre la línea de comandos:

zsplit –s 4.5G –N WinXP_backup –o /cualquier/otro/directorio –d /dev/hdb

Por favor, nótese que, en algunos casos tales como una partición NTFS altamente fragmentada o con sectores defectuosos en el disco duro, puede suceder que zsplit aborte la operación con un error de entrada/salida. Para evitar esta situación, puede emplearse la opción ‘-r’, --noerror. Esta opción hace que zsplit entre en un modo de lectura especial, de modo que todos los sectores intactos serán leídos de forma segura, mientras que los sectores defectuosos serán excluídos. Por supuesto, el archivo de imagen de salida tendrá agujeros, con lo que existe cierta posibilidad de que el archivo de imagen pierda su consistencia. Por ello, es una buena idea, después de una operación de restauración, realizar una comprobación del disco restaurado con herramientas tales como “scandisk” (FAT16-FAT32), “chkdsk” (NTFS) o “fsck.xxx” (ext, swap, reiserfs).

El ejemplo anterior incluyendo la opción --noerror tiene la forma:

zsplit -s 4.5G -N WinXP_backup -o /cualquier/otro/directorio -d -r /dev/hdb

Para restaurar la totalidad de la unidad hdb, unzsplit debe encontrarse en la unidad arrancable hda y todos los trozos de la imagen de la unidad deben encontrarse en un mismo directorio de hda. Una vez hecho esto, se debe cambiar al directorio en el que se encuentran los trozos de la imagen de hdb y teclear en la línea de comandos:

unzsplit -D /dev/hdb -d WinXP_backup

Unzsplit leerá la lista de archivos del directorio actual con la parte de nombre común WinXP_backup (WinXP_backup_0.spl.zp, WinXP_backup_1.spl.zp, WinXP_backup_2.spl.zp, …), deducirá el orden correcto de lectura, los descomprimirá y los unirá en una única imagen. Finalmente, unzsplit restaurará la imagen a la unidad de disco /dev/hdb. Toda la información acerca del tiempo y tamaño de la operación de restauración se escribirá en el archivo debug.log del directorio actual.

Situación 2: Vamos a realizar una copia de seguridad completa de la unidad de disco hda de nuestro ordenador. Por favor, nótese que no importa qué sistema operativo se encuentra instalado en la unidad (Win95, Win98, WinNT o Linux). Lo que necesitamos para esta situación es: un dispositivo de almacenamiento del tamaño adecuado (hdb), El LiveCD de DeviceImage y, por supuesto, la herramienta zsplit. Por favor, nótese que también se puede emplear cualquier otra distribución en LiveCD tal como KNOPPIX, pero ni zsplit ni unzsplit están incluídas en esta distribución, con lo que, después de arrancar desde el CD de Knoppix, es necesario descargarlas en el entorno Knoppix con la ayuda de un disquete, ftp o smbmount.

Para crear una imagen de la unidad hda, arrancamos el ordenador desde el LiveCD de DeviceImage, creamos (si no existen particiones) una partición en el dispositivo hdb (por ejemplo, ext2 en hdb1), montamos esta partición en cualquier directorio del entorno del LiveCD (mount -t [sistemaarchivo] /dev/hdb1 /un/directorio/nuevo), cambiamos a este directorio (cd /un/directorio/nuevo) y usamos zsplit para crear la imagen de la unidad.

Si deseamos realizar la copia en forma de varios archivos imagen:

zsplit -s 700M -N WinXP_backup -d /dev/hda

De este modo se crea una imagen de la unidad hda comprimida y dividida en trozos de 700 Mebibyte (Megabyte binario) de tamaño.

Si deseamos realizar la copia en forma de un único archivo de imagen:

zsplit -N WinXP_backup -d /dev/hda

De este modo se crea una imagen de la unidad hda en un único archivo.

Para restaurar la unidad hda necesitamos una segunda unidad (por ejemplo, hdb), conteniendo el/los archivo/s imagen y el LiveCD de DeviceImage con unzsplit. El procedimiento a seguir es:

arrancamos el ordenador desde el LiveCD de DeviceImage y montamos la partición de la unidad hdb que contiene el/los archivo/s imagen, cambiamos al directorio que las contiene y tecleamos en la línea de comandos:

unzsplit -D /dev/hda -d WinXP_backup

Unzsplit lee la lista de archivos del directorio actual con la parte de nombre común WinXP_backup (WinXP_backup_0.spl.zp, WinXP_backup_1.spl.zp, …), descomprime y une las partes del archivo imagen en un único archivo y restaúra esta imagen al dispositivo /dev/hda. La información de depuración se escribe en el archivo debug.log en el directorio actual.

Operando sobre la red:

Situación 1: Se desea realizar una copia en forma de imagen del dispositivo de arranque y el sistema sobre el que se actúa no posee otra unidad para emplear como almacén, pero se dispone de un segundo ordenador y existe una conexión de red entre ambos sistemas. Zsplit, con la ayuda de netcat y dd, realizarán la operación y harán posible almacenar la imagen del dispositivo a copiar en otro sistema a través de la red. La situación podría ser la siguiente:

La imagen debe crearse desde la unidad de arranque del sistema A y copiarse a una unidad del sistema B. Para ello, arrancamos el sistema A con el LiveCD de DeviceImage. Se supone que tenemos un sistema Linux en el ordenador B. En caso contrario, también podemos arrancar el sistema B con el LiveCD de DeviceImage. Después de que ambos sistemas hayan arrancado, se necesita conocer las direcciones IP que se les ha asignado. Para ello, puede emplearse el comando ifconfig -a. Asumiendo que el sistema A posee la IP 192.168.0.1 y el sistema B posee la IP 192.168.0.2, el proceso a seguir es:

Paso 1: sobre el sistema B, se teclea en línea de comandos:

nc -l -p 9000 | zsplit -s 4.5G -N Linx_bkp -d -

Esta orden hará que netcat entre en el modo de escucha en el puerto 9000. Cualquier dato proveniente de este puerto, será redirigido a zsplit, que comprimirá todos los datos de stdin empleando el nivel de compresión por defecto y dividirá los datos comprimidos en trozos de 4.5 Gibibyte (Gibabyte binario) y guardará estos trozos en el directorio actual (archivos Linx_bkp_0.spl.zp, Linx_bkp_1.spl.zp, Linx_bkp_2.spl.zp, …). En el directorio actual se escribirá el archivo debug.log, con toda la información acerca de la fecha/tiempo de creación y de su tamaño.

Paso 2: En el sistema A, en línea de comandos, se tecleará:

dd if=/dev/hda bs=1024 | nc 192.168.0.2 9000

Esto iniciará una corriente de datos sobre la red hacia el puerto 9000 del sistema con IP 192.168.0.2. El tiempo que tarde en completarse la operación de transferencia de la imagen creada hacia el sistema B estará en función de la velocidad de la red y del tamaño del disco duro del sistema A. Como resultado de esta operación, se obtendrá la imagen de la unidad hda del ordenador A en forma de trozos comprimidos en el ordenador B. La ventaja de este método es que se obtiene la imagen comprimida en trozos al final de la operación. La desventaja es que la velocidad de transferencia de datos a través de la red es baja, debido a que, en este caso, transferimos datos no comprimidos.

Si se desea una mayor velocidad de transferencia a través de red, se puede recurrir al siguiente procedimiento:

Nótese que la diferencia entre este procedimiento y el anterior es el orden de ejecución de zsplit y dd.

 

 

Paso 1: en el ordenador B tecleamos en línea de comandos:

nc -l -p 9000 | dd of=Linx_bkp_0.spl.zp bs=1024

En este caso, netcat escuchará en el puerto 9000 y redirigirá todos los datos a dd, que guardará los datos en un único archivo de imagen: Linx_bkp_0.spl.zp. Por favor, nótese que la norma de nombrado de los archivos de imagen continúa siendo la misma aún siendo un único archivo. En el caso de que queramos restaurar el archivo imagen, es importante para unzsplit indicar la parte del nombre “0_spl.zp” (ver documentación de unzsplit).

Paso 2: en el sistema A tecleamos en línea de comandos:

zsplit -c -d /dev/hda | nc 192.168.0.2 9000

En este caso, zsplit leerá /dev/hda empleando el nivel de compresión por defecto y redirigirá la salida hacia netcat, que realizará la transferencia de datos hacia el sistema B.

La ventaja de este método es que se consigue la mayor tasa de transferencia de datos posible a través de la red. La desventaja es que, al final de la operación, se obtiene un único archivo imagen.

También podemos restaurar la unidad hda del sistema A a través de la red. Supongamos que, después del proceso de backup tenemos la imagen de hda del sistema A dividida en trozos en el sistema B.

Para realizar el proceso de restauración, hay que seguir los siguientes pasos: arrancar el sistema A con el LiveCD de DeviceImage. Si no se dispone de una partición Linux arrancable en B, también podemos iniciar el sistema B con el LiveCD de DeviceImage. Una vez arrancados ambos sistemas, debemos conocer las IP que tienen asignadas. Después, seguimos los pasos:

Paso 1: en el sistema A, tecleamos:

nc -l -p 9000 | dd of=/dev/hda bs=1024

Netcat escuchará en el puerto 9000 y redirigirá la entrada a dd, que restaurará /dev/hda.

Paso 2: en el sistema B, nos situamos en el directorio que contiene los archivos de imagen y tecleamos:

unzsplit -c -d Linx_bkp | nc 192.168.0.1 9000

Unzsplit leerá la lista de archivos del directorio actual con la parte de nombre común Linx_bkp, determinará el orden correcto de lectura y leerá secuencialmente los trozos, descomprimiéndolos y enviando la salida a netcat. Netcat se conectará al puerto 9000 del sistema con IP 192.168.0.1 y transferirá toda los datos hacia dd en el sistema A. A su vez, dd restaurará la unidad hda. La opción -d controla la información de salida acerca de tamaños y tiempos del proceso de restauración y la escribe en el archivo debug.log.

Situación 2: supongamos que deseamos realizar una copia exacta a través de la red para, por ejemplo, distribuir una instalación idéntica a través de la red. El siguiente procedimiento podría ser de ayuda:

Nótese que este procedimiento es muy similar al mencionado arriba. La diferencia es que, en este caso, empleamos las herramientas zsplit y unzsplit junto con netcat y que tenemos que arrancar todas los sistemas con el LiveCD de DeviceImage.

Para iniciar el procedimiento de clonación, se debe arrancar ambos sistemas con el LiveCD de Device image, definiendo también sus respectivas direcciones IP (ver página man de ifconfig). Supongamos que el sistema A tiene la IP 192.168.0.1 y que el sistema B tiene la IP 192.168.0.2 y definimos el sistema A como maestro y el B como esclavo (la dirección de la clonación será desde el maestro A hacia el esclavo B). Téngase en cuenta que el tamaño de la unidad de disco de B debe ser igual o mayor que la del sistema A.

Paso 1: En el sistema B, tecleamos en línea de comandos:

nc -l -p 9000 | unzsplit -D /dev/hda -d -

Netcat escuchará el puerto 9000 y redirigirá la entrada de datos hacia unzsplit, que, a su vez, descomprimirá y restaurará los datos hacia /dev/hda.

Paso 2: En el sistema A, tecleamos en línea de comandos:

zsplit -c -d /dev/hda | nc 192.168.0.2 9000

zsplit leerá la unidad /dev/hda y empleando el nivel de compresión por defecto dirigirá todos los datos comprimidos hacia netcat, que realizará la transferencia hacia netcat del sistema B, que se encontraba en modo de escucha.

Copyright(C) 2005 - 2007 DeviceImage-Project

Contact Us

07.07.2007: DeviceImage software goes commercial. Please see here for details.

28.11.2006: Broadening multilanguage option of the homepage. Italian translation has been added. Thank you very much Gianfranco!

14.03.2006: Added mini-HowTo your feedback is very appreciated

27.09.2005: Broadening a multilanguage homepage, Spanish translation has been added, thank you very much Jose!

05.06.2005: zspli/unzsplit version 1.2.0 has been released, please see release notes. Also DeviceImage-LiveCD is now available.

08.04.2005: started multilanguage version of DeviceImage homepage + Forum.

06.03.2005: zsplit/unzsplit version 1.0.1 has been released, please see release notes.