martes, 3 de noviembre de 2015

A vueltas con el Clonezilla

Clonezilla siempre ha sido, como decía aquí, 'mi seguro de vida'. Y me resulta muy fácil porque yo, normalmente, no modifico mi particionado, así que solo restauro la partición 'root' (/) en la misma partición en la que creé la imagen. 
Pero me asaltaba una duda: ¿Qué pasará si cambio algo, e intento restaurar una antigua imagen de 'root' en una partición distinta (o de distinto tamaño), o incluso de otro disco?
Y la respuesta (de momento teórica, nunca lo he probado) es que si la nueva partición es mayor que la original con la que creé la imagen... no hay ningún problema. Bueno, solo uno, que, tras restaurar, me sobrará algo de la nueva partición, que quedaría como espacio no particionado, y que entiendo que no sería ningún problema absorberlo en la misma, o en la partición vecina, a través de Gparted.
Pero los problemas se presentan si la nueva partición objetivo ('target') es menor que la partición que originó la imagen. Como dicen las FAQ's de la web de Clonezilla... ...If the target partition size is smaller, then it will go wrong. Unless Clonezilla has file-based function in the future. Maybe...
Así que, de momento... 'verde me lo ponen', y el fracaso está anunciado.
 
He visto por Google algunos métodos para solventar el problema de restaurar, por ejemplo este pero me parecen complejos (reducir previamente todas las particiones, etc) y se refieren a 'clonar' un disco duro. De todas formas, aquí lo dejo referenciado, por si llegase el caso. Pero para mi objetivo, la restauración de la partición raiz, o root (/) en una partición más pequeña, se me ocurrió esta idea:
Vamos a ver, si yo, una vez instalado mi Debian (y mis aplicaciones, personalizaciones, etc, habituales) en una partición raiz de unos 20-25 GB, que me ocuparía menos de 7 GB, redimensiono (con Gparted) esta partición y la reduzco a, por ejemplo, 8-10 GB, y hago ahora la imagen con Clonezilla... nunca tendría problemas para restaurarla en un nueva partición, si tuviese 10 GB o más, que sería mayor ¿no?
(por supuesto, después de hacer ese redimensionamiento, y la imagen, volvería a redimensionarla para mantener el tamaño primitivo de 20-25 GB). Pero como la imagen correspondería a una partición de 8-10 GB, y nunca se me va a ocurrir restaurar en una partición menor que eso... asunto resuelto, siempre lo haría 'en una partición mayor', donde ya comenté que no hay problemas.

Como suelo hacer cuando 'teorizo' (o quiero aprender algo), lo consulté en mi 'foro de cabecera', EspacioLinux. Ahí, 'maese' neurus, uno de sus gurús, me comentó que era factible.
También me aclaró el tema (que me preocupaba, porque había oído hablar de ello), de los 'inodos'

Me niego a profundizar sobre los inodos, la Wikipedia lo explica. Simplificando, es un sistema de almacenaje de datos de cada archivo (que te ocupa un espacio) que, si tienes muchísimos pequeños archivos, incluso vacíos, y cada uno ocupa un inodo, te puede hacer quedar sin espacio en la partición por falta de inodos y, aunque quieras agrandarla,como los inodos siguen siendo los mismos, no consigues nada, porque mantienes la misma cantidad posible de esos inodos. Pero si es el caso opuesto (achicar la partición), por esta vía no hay problema,mantienes el número de inodos de la partición grande (hombre, claro esta que, si la achicas, te puedes quedar sin espacio para los archivos, pero no, por lo dicho, por falta de inodos). Un pequeño lío ¿no? Pero me queda claro que, normalmente, no habrá problemas.
Pero, además, otro estupendo (y sabio) forero, EnriqueK, me dió otro interesante enfoque:
Cómo respaldar una partición (o un disco) sin usar Clonezilla
El concepto es muy sencillo: en vez de usar Clonezilla (y aceptar sus limitaciones para restaurar en una partición de distinto tamaño, por aquello de que es 'una imagen de la propia partición original) lo que puedo hacer, porque en Linux 'todo son archivos', es respaldar los propios archivos de la raiz (/), creando un tarball (o tarball.gz). De esta forma, tu restaurarías 'solo los archivos', independientemente del tamaño de la partición y, mientras te quepan... debe funcionar.
Para eso se utiliza la utilidad tar (que normalmente viene instalada por defecto). Esta utilidad nos permite agrupar varios archivos en un único paquete (tarball), que además podemos comprimir usando opciones de compresión. Y la ventaja del tarball.gz es que puedes guardar el archivo en un medio externo con cualquier tipo de formato, manteniendo todas las relaciones y permisos de los archivos, cosa que no pasaría si haces una copia directa de archivos (por ejemplo) a un disco externo formateado en NTFS (si estuviese en EXT4,parece ser que si).
La única pega (respecto a Clonezilla) es que el proceso es bastante más lento, pero para una sola partición (la root (/), o raiz) puede ser una alternativa a considerar.
El procedimiento es muy sencillo: supongamos que quiero guardar el tarball de mi root (que sería, en el ejemplo, mi partición /dev/sda1, que la tengo etiquetada como Root_Debian) en un medio (disco externo o partición). En mi caso, lo voy a guardar en mi partición /dev/sda6 que la tengo etiquetada como Respaldo. El tener etiquetadas las particiones es muy cómodo.
Pues bien hago lo siguiente:
1- Arranco el PC con un LiveCD (yo he usado un viejo Ubuntu 10.10 que tenía por ahí…)
2- una vez en modo Live, monto las particiones que voy a usar: la 'Root_Debian' y la 'Respaldo'
3- abro una consola y, ahí...
sudo -i (para ponerme como root)
cd /media/Respaldo (y me posiciono en la partición Respaldo, que es donde guardaré el tarball)
Y, una vez hecho esto, creo el tarball (que llamaré 'Debian3nov2015.tar.gz) de la partición que etiqueté como Root_Debian con la orden...
tar -zcvf Debian3nov2015.tar.gz /media/Root_Debian
que, por supuesto, se me guardará en la partición 'Respaldo'


Y, para restaurarla, el mismo procedimiento (LiveCD, etc, etc.) y
sudo -i
cd /media/Respaldo

y ahora... 
tar -zxvf Debian3nov2015.tar.gz --directory /
Y con esto se restauraría. Fíjate que con el mandato '--directory /' le indicas que se extraiga en la raiz (/).
NOTA: respecto a las opciones incluidas...
    Sirve para indicar que queremos crear el archivo .tar
z     Comprime el archivo .tar usando Gzip, reduciendo así el tamaño total del archivo.tar deseado
f     Cuando se usa con la opción -c sirve para forzar la creación del fichero.tar indicado
v     Ordena que se muestre por pantalla todos los pasos que se vayan realizando.
    Indica que se extraigan, y en su caso se descompriman, los directorios y archivos que se encuentren dentro del fichero.tar especificado.
Y hay otra opción, para poner detrás del nombre del tar.gz a crear, que es la
-- exclude=directorio_a_excluir
que puede ser interesante. Por ejemplo, --exclude=/temp

Así que esta es otra manera de hacerlo, sin Clonezilla, y sin los condicionantes comentados cuando el tamaño de la partición 'objetivo' sea un poco menor. Yo siempre lo haré así (salvaguardar, para poder restaurar, solo la partición raiz), porque los backups de, por ejemplo, mis archivos de /home, los suelo hacer por copia directa a un disco externo, pero el propio EnriqueK creó un Tutorial para restaurar todo un disco duro, que, por si alguien está interesado en ello, se encuentra aquí
(Nota final: por concretar cifras, el proceso para crear un 'tarball' de mi partición root (que actualmente tiene 20,5 GB, con 11 ocupadas) me tardó unos 20 minutos y el tarball me ocupa  6,5 GB. En similares condiciones, una imagen con Clonezilla la hago en unos 6-8 minutos, y me ocupa unos 6,2 GB)

¡Ah! y un tema 'postrero': Yo no se si, después de reinstalar el tarball de una partición root, habría problemas con el arranque. Si es así, entiendo que teniendo a mano la herramienta SuperGrub2 para arrancar la distro, y reinstalando el GRUB, se solucionaría. Por aquí comentaba cómo hacerlo.

No hay comentarios:

Publicar un comentario