Realizar una copia de seguridad del sistema

Un backup, o copia de seguridad, permité en caso de fallo o pérdida de datos restaurar los datos al estado de la fecha del backup. Existen muchas herramientas que realizan este tipo de tareas, pero sin duda alguna rsync es la más utilizada. En este tutorial en lugar de hacer un backup de datos, se realizará un backup del sistema raíz (/), y a configurar su sistema para poder arrancar desde este backup en caso de que su sistema raíz principal presente problemas para arrancar.

Tabla de contenidos

¿Qué es rsync?
rsync es una herramienta de código abierto que ofrece transmisión eficiente de datos incrementales; se encuentra disponible bajo la licencia GNU General Public License y es mantenido por Wayne Davison.

El uso de rsync es sencillo: rsync [opciones] fuente destino, sin embargo existen multitud de opciones. Si desea conocer todas las opciones disponibles de rsync, puede consultar el man rsync. A continuación se destacan algunas de las opciones más interesantes:
  • -r, --recursive Activa el modo recursivo en directorios.
  • -l, --links Conserva los enlaces simbólicos.
  • -H, --hard-links Conserva los enlaces relativos.
  • -E, --executability Preserva el permiso de ejecución, si existe.
  • -p, --perms Preserva todos los permisos.
  • -o, --owner Preserva el propietario (rsync debe ser ejecutado como root).
  • -g, --group Preserva el grupo.
  • -A, --acls Preserva los permisos ACLs (implica -p)
  • -h, --human-readable Genera una salida amigable.
  • -x, --one-file-system Evita el salto entre distintos sistemas de archivos de forma recursiva.
  • -u, --update Si en el destino existe el archivo, y el tamaño y fecha de modificación es la misma que la del origen, omite el archivo.
  • --stats Al finalizar muestra un resumen. [+/-] Ver ejemplo
  • --progress Muestra el proceso durante la transferencia. [+/-] Ver ejemplo


Preparar la partición donde llevar a cabo el respaldo
Deberá localizar una partición donde poder alojar la copia de seguridad de la raíz de su sistema de archivos. En nuestro caso usaremos una partición en /dev/sda, concretamente la partición /dev/sda3 que como podrá ver no se encuentra en uso por el sistema.
agd-desktop # fdisk -l /dev/sda

Disk /dev/sda: 60.0 GB, 60022480896 bytes
255 heads, 63 sectors/track, 7297 cylinders, 117231408 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x1e910f12

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *        2048      206847      102400   83  Linux
/dev/sda2          206848    55206847    27500000   83  Linux
/dev/sda3        55206848   110206847    27500000   83  Linux
agd-desktop # blkid | grep sda
/dev/sda2: UUID="31945820-1a0a-490e-87c0-346df947a0b2" TYPE="ext4" 
/dev/sda1: UUID="5250bac4-0378-419a-84f7-e51f51926e5d" TYPE="ext2"

A continuación deberá asegurarse que la partición tiene el formato adecuado. En nuestro caso, la partición no está formateada, y por ello será formateada en ext4
agd-desktop # mkfs.ext4 -L system-root-backup /dev/sda3 
mke2fs 1.41.12 (17-May-2010)
Etiqueta del sistema de ficheros=system-root-back
Tipo de SO: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
1720320 nodos-i, 6875000 bloques
343750 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=4294967296
210 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000

Escribiendo las tablas de nodos-i: hecho                           
Creating journal (32768 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Este sistema de ficheros se revisará automáticamente cada 21 montajes o
180 días, lo que suceda primero.  Utilice tune2fs -c o -i para cambiarlo.

Por último debemos montar la partición para poder usarla. Para ello crearemos el directorio /mnt/sda3 donde montaremos /dev/sda3. Y por supuesto antes de seguir recuerde verificar que la partición ha sido correctamente montada en el lugar deseado, de lo contrario cuando ejecute rsync comenzará ha hacer una copia recursiva de si mismo hasta agotar todo el espacio disponible en la partición raíz.
agd-desktop / # mkdir /mnt/sda3
agd-desktop # mount /dev/sda3 /mnt/sda3/
agd-desktop # mount | grep sda3
/dev/sda3 on /mnt/sda3 type ext4 (rw)


El proceso de backup
Las opciones a utilizar son --recursive --links --hard-links --one-file-system --perms --owner --group --executability --human-readable --stats
agd-desktop # rsync -rlHxpogEh --stats / /mnt/sda3

Number of files: 121337
Number of files transferred: 98674
Total file size: 3.57G bytes
Total transferred file size: 3.44G bytes
Literal data: 3.44G bytes
Matched data: 0 bytes
File list size: 3.07M
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 3.45G
Total bytes received: 2.01M

sent 3.45G bytes  received 2.01M bytes  47.59M bytes/sec
total size is 3.57G  speedup is 1.04


Configurando el backup de /
En este punto tendrá una copia exacta de su sistema raíz. Por ello, si desea poder arrancar su sistema desde el backup deberá llevar a cabo algunas modificaciones:
Advertencia
Cuidado con editar /etc/fstab en lugar de /mnt/sda3/etc/fstab

Editar fstab
Deberá editar el fstab del backup para especificar la partición donde reside /, ya sea usando los punteros de dispositivo o la UUID del disco. En mi caso, al usar UUID, tuve que sustituir la UUID. A continuación podrá observar las modificaciones a realizar, en mi caso:
agd-desktop # diff -wB /etc/fstab /mnt/sda3/etc/fstab 
33,34c33,34
< # SSD - / - 2º Particion
< UUID=31945820-1a0a-490e-87c0-346df947a0b2 / ext4
---
> # SSD - rootmirror - 3º Particion
> UUID=e1244bdc-9d2a-45ae-8d5c-6a7c91b1727c       /       ext4 
39,40c39,40
< # SSD - rootmirror - 3º Particion
< #UUID=e1244bdc-9d2a-45ae-8d5c-6a7c91b1727c / ext4
---
> # SSD - / - 2º Particion
> #UUID=31945820-1a0a-490e-87c0-346df947a0b2      /       ext4

Añadir una entrada al grub
Deberá añadir una nueva entrada al grub, la cual apunte a la partición de recuperación que ha creado. En mi caso,
nano /boot/grub/grub.conf
title Gentoo Linux 2.6.37-r4-V.0.2
root (hd0,0)
kernel /boot/kernel-2.6.37-r4-V.0.2 root=/dev/sda2

title Gentoo Linux 2.6.37-r4-V.0.2 ··--==MIRROR ROOT ==--··
root (hd0,0)
kernel /boot/kernel-2.6.37-r4-V.0.2 root=/dev/sda3

Si ha realizado todos estos pasos, su sistema le debe permitir arrancar desde la partición principal y desde la partición backup. Si por algún motivo, un fallo o una actualización incorrecta, su sistema deja de funcionar, podrá arrancar desde la partición backup y tener un sistema completamente funcional pero congelado en la fecha en la que realizó el backup. Lo que le permitirá reparar la partición principal, o incluso en caso de desastre total, restaurarla a partir del backup llevando a cabo el proceso inverso aquí comentado.

4 comentarios:

#
emilio astier peña dijo...

genial, estaba buscando algo asi hace tiempo

#
Antonio Guillen dijo...

Seguí este mismo sistema para hacer un respaldo de mi partición root por lo que en principio no deberías tener problemas. Pero si surge alguno, no dudes en preguntar.

#
carnulo dijo...

Muchisimas gracias, es mucho mas sencillo que lo que suelo realizar yo (uso partimage), me has ahorrado horas de trabajo.

#
Antonio Guillen dijo...

@carnulo ;)

Publicar un comentario

Recuerde que puede utilizar algunos códigos HTML como <b>para negrita</b>, <i>para cursiva</i> y <a href="URL">para enlaces</a>.