Copias de seguridad con dump y restore en Linux

Hoy os voy a hablar de dump y restore, herramientas clásicas de los sistemas UNIX, que pueden ser una excelente alternativa, para realizar copias de seguridad de ficheros y carpetas, en nuestros sistemas GNU Linux.

¿Cómo funciona dump?

La herramienta se encarga de examinar los archivos y sistemas de ficheros ext2 y ext3 y determina qué archivos deben copiarse. Estos se pueden almacenar en el propio disco del sistema o bien en otro medio externo, ya sea un recurso compartido en red o bien una unidad de cinta. Un volcado que es más grande que el medio de salida, se divide en varios volúmenes. Se puede indicar el tamaño de cada volumen también de manera manual mediante parámetros.

Sus características principales son:

  • Se pueden hacer copias en varios volúmenes
  • Se pueden salvar ficheros de cualquier tipo, incluyendo ficheros de dispositivos.
  • Todos los permisos, propietarios y fechas de modificación se salvaguardan.
  • Se pueden realizar copias de seguridad incrementales además de las completas.
  • Permite guardan ficheros individuales, aunque no es lo habitual.

Su sintaxis es la siguiente:

  1. dump [opciones]  [archivo-volcado] [Sistema de ficheros, archivo o directorio]

Las opciones más comunes son:

  • -f Realizamos copia de seguridad del fichero indicado.
  • -u Actualiza el fichero /etc/dumpdates con el historial de las copias de seguridad realizadas.
  • -v Amplia la información de salida (modo verbose)
  • -e Excluye “inodos” cuando hace la copia de seguridad
  • -z Se activa la compresión.

Además de esto es importante indicar el nivel de volcado.

  • 0 Con el este nivel se indica que la copia es completa.
  • 1 Aquí indicamos que la copia es incremental.

A modo de ejemplo vamos a utilizar una máquina virtual, que tengo con el sistema de monitorización Icinga, con un sistema operativo CentOS 7. Podemos ver el sistema de ficheros:

  1. [root@icinga backups]# df -h
  2. S.ficheros                      Tamaño Usados  Disp Uso% Montado en
  3. /dev/mapper/cl_icinga-root         20G   4,3G   16G  22% /
  4. devtmpfs                          1,9G      0  1,9G   0% /dev
  5. tmpfs                             1,9G      0  1,9G   0% /dev/shm
  6. tmpfs                             1,9G   8,4M  1,9G   1% /run
  7. tmpfs                             1,9G      0  1,9G   0% /sys/fs/cgroup
  8. /dev/sda1                         473M   274M  175M  62% /boot
  9. /dev/mapper/cl_icinga-home        4,7G    33M  4,7G   1% /home
  10. /dev/mapper/cl_icinga-opt          20G   1,1G   19G   6% /opt
  11. /dev/mapper/cl_icinga-usr_share    26G   557M   26G   3% /usr/share
  12. /dev/mapper/cl_icinga-var         1,9G   275M  1,6G  15% /var
  13. /dev/mapper/cl_icinga-var_log     4,7G    54M  4,6G   2% /var/log
  14. /dev/mapper/cl_icinga-var_cache   953M   152M  802M  16% /var/cache
  15. tmpfs                             380M      0  380M   0% /run/user/0

Vemos una muestra del funcionamiento, sobre /boot

  1. [root@icinga backups]# dump 0zf ./boot-20170710.dump /boot
  2.   DUMP: Date of this level 0 dump: Mon Jul 10 13:14:56 2017
  3.   DUMP: Dumping /dev/sda1 (/boot) to ./boot-20170710.dump
  4.   DUMP: Label: none
  5.   DUMP: Writing 10 Kilobyte records
  6.   DUMP: Compressing output at compression level 2 (zlib)
  7.   DUMP: mapping (Pass I) [regular files]
  8.   DUMP: mapping (Pass II) [directories]
  9.   DUMP: estimated 277991 blocks.
  10.   DUMP: Volume 1 started with block 1 at: Mon Jul 10 13:14:57 2017
  11.   DUMP: dumping (Pass III) [directories]
  12.   DUMP: dumping (Pass IV) [regular files]
  13.   DUMP: Closing ./boot-20170710.dump
  14.   DUMP: Volume 1 completed at: Mon Jul 10 13:15:10 2017
  15.   DUMP: Volume 1 took 0:00:13
  16.   DUMP: Volume 1 transfer rate: 19979 kB/s
  17.   DUMP: Volume 1 279100kB uncompressed, 259731kB compressed, 1.075:1
  18.   DUMP: 279100 blocks (272.56MB) on 1 volume(s)
  19.   DUMP: finished in 13 seconds, throughput 21469 kBytes/sec
  20.   DUMP: Date of this level 0 dump: Mon Jul 10 13:14:56 2017
  21.   DUMP: Date this dump completed:  Mon Jul 10 13:15:10 2017
  22.   DUMP: Average transfer rate: 19979 kB/s
  23.   DUMP: Wrote 279100kB uncompressed, 259731kB compressed, 1.075:1
  24.   DUMP: DUMP IS DONE

De esta manera ya tenemos el fichero de backup generado:

  1. [root@icinga backups]# pwd
  2. /home/backups
  3. [root@icinga backups]# ls -la
  4. total 259732
  5. drwxr-xr-x  2 root root        31 jul 10 13:14 .
  6. drwxr-xr-x. 4 root root        34 jul 10 13:10 ..
  7. -rw-r--r--  1 root root 265965186 jul 10 13:15 boot-20170710.dump

La herramienta dump está ligada con la herramienta restore, que sirve para restaurar las copias de seguridad realizadas.

¿Cómo funciona restore?

Se encarga de restaurar los ficheros generados por dump.

Su sintaxis es la siguiente:

  1. restore [acciones] [opciones] [ficheros a recuperar]

Las opciones más comunes son:

    • -r Restaura la copia completa.
    • -t Muestra los contenidos de la copia.
    • -x Extrae sólo los ficheros indicados.
    • -l Se accede al modo interactivo.
    • -f Especifica el dispositivo o fichera de la copia.
    • -a Nos pregunta de qué volumen extraer los ficheros.

Una muestra de su funcionamiento. Vamos a ver cómo acceder al fichero y listar todo su contenido:

  1. [root@icinga backups]# restore -i -f boot-20170710.dump
  2. Dump tape is compressed.
  3. restore > ls
  4. .:
  5. .vmlinuz-3.10.0-514.10.2.el7.x86_64.hmac
  6. .vmlinuz-3.10.0-514.16.1.el7.x86_64.hmac
  7. .vmlinuz-3.10.0-514.21.1.el7.x86_64.hmac
  8. .vmlinuz-3.10.0-514.26.2.el7.x86_64.hmac
  9. .vmlinuz-3.10.0-514.el7.x86_64.hmac
  10. System.map-3.10.0-514.10.2.el7.x86_64
  11. System.map-3.10.0-514.16.1.el7.x86_64
  12. System.map-3.10.0-514.21.1.el7.x86_64
  13. System.map-3.10.0-514.26.2.el7.x86_64
  14. System.map-3.10.0-514.el7.x86_64
  15. config-3.10.0-514.10.2.el7.x86_64
  16. config-3.10.0-514.16.1.el7.x86_64
  17. config-3.10.0-514.21.1.el7.x86_64
  18. config-3.10.0-514.26.2.el7.x86_64
  19. config-3.10.0-514.el7.x86_64
  20. grub/
  21. grub2/
  22. initramfs-0-rescue-13cf7d0d35634f69afcfdf8ae8054aa7.img
  23. initramfs-3.10.0-514.10.2.el7.x86_64.img
  24. initramfs-3.10.0-514.10.2.el7.x86_64kdump.img
  25. initramfs-3.10.0-514.16.1.el7.x86_64.img
  26. initramfs-3.10.0-514.16.1.el7.x86_64kdump.img
  27. initramfs-3.10.0-514.21.1.el7.x86_64.img
  28. initramfs-3.10.0-514.21.1.el7.x86_64kdump.img
  29. initramfs-3.10.0-514.26.2.el7.x86_64.img
  30. initramfs-3.10.0-514.el7.x86_64.img
  31. initramfs-3.10.0-514.el7.x86_64kdump.img
  32. initrd-plymouth.img
  33. lost+found/
  34. symvers-3.10.0-514.10.2.el7.x86_64.gz
  35. symvers-3.10.0-514.16.1.el7.x86_64.gz
  36. symvers-3.10.0-514.21.1.el7.x86_64.gz
  37. symvers-3.10.0-514.26.2.el7.x86_64.gz
  38. symvers-3.10.0-514.el7.x86_64.gz
  39. vmlinuz-0-rescue-13cf7d0d35634f69afcfdf8ae8054aa7
  40. vmlinuz-3.10.0-514.10.2.el7.x86_64
  41. vmlinuz-3.10.0-514.16.1.el7.x86_64
  42. vmlinuz-3.10.0-514.21.1.el7.x86_64
  43. vmlinuz-3.10.0-514.26.2.el7.x86_64
  44. vmlinuz-3.10.0-514.el7.x86_64

A continuación, continuando con el ejemplo, seleccionamos un fichero y lo restauramos:

  1. restore> add vmlinuz-3.10.0-514.el7.x86_64
  2. restore> extract
  3. You have not read any volumes yet.
  4. Unless you know which volume your file(s) are on you should start
  5. with the last volume and work towards the first.
  6. Specify next volume # (none if no more volumes): 1
  7. set owner/mode for '.'? [yn] n
  8. restore> quit

Hemos restaurado el fichero, conservando sus atributos:

  1. [root@icinga backups]# ls -ltr
  2. total 265000
  3. -rwxr-xr-x. 1 root root   5392080 nov 22  2016 vmlinuz-3.10.0-514.el7.x86_64
  4. -rw-r--r--  1 root root 265965186 jul 10 13:15 boot-20170710.dump

El artículo lo dejamos aquí. Si os ha parecido interesante o tenéis alguna duda, podéis dejar un comentario.

Para el artículo me he servido de los siguientes enlaces:

persoal.citius.usc.es | Su respectiva página en man | networking.ringofsaturn.com

Derechos de la imagen | Flickr