Estrategias de backup y dd: tipos, backups incrementales y clonado de disco

Introducción

Esta página cubre los conceptos de estrategia de backup y el uso de dd para clonado de disco. Para compresión con tar ver contenido_06; para transferencia con rsync ver contenido_09.

Tipos de copia de seguridad

  • Completa (full): copia de todos los datos. La más lenta y voluminosa, pero la más sencilla de restaurar.
  • Incremental: solo copia los ficheros modificados desde la última copia (completa o incremental). Rápida y eficiente; para restaurar necesitas la completa más todas las incrementales en orden.
  • Diferencial: solo copia los ficheros modificados desde la última copia completa. Más lenta que la incremental pero más rápida de restaurar (completa + última diferencial).

Lunes:     Completa   (base)
Martes:    Incremental (cambios desde lunes)
Miércoles: Incremental (cambios desde martes)

Restaurar miércoles = completa + incr. martes + incr. miércoles
          

tar — Backup incremental con --listed-incremental

La opción -g (--listed-incremental) indica a tar que use un fichero de snapshot (.snar) para registrar el estado de cada fichero (nombre, tamaño, fecha de modificación, inodo). Ese fichero es la clave de todo el mecanismo:

  • Si el .snar no existetar lo crea y hace un backup completo.
  • Si el .snar ya existetar lo lee, compara con el estado actual del disco y solo incluye los ficheros nuevos o modificados desde la última vez. Luego actualiza el .snar.

Por eso el comando es idéntico todos los días: es el .snar el que determina si el backup será completo o incremental.


# LUNES — snapshot.snar no existe → backup COMPLETO (todos los ficheros de /home)
tar -czg /backup/snapshot.snar -f /backup/backup-lunes.tar.gz /home
# Resultado: snapshot.snar creado con el estado actual de /home

# MARTES — snapshot.snar existe → backup INCREMENTAL (solo cambios desde lunes)
tar -czg /backup/snapshot.snar -f /backup/backup-martes.tar.gz /home
# Resultado: snapshot.snar actualizado con el estado de martes

# MIÉRCOLES — snapshot.snar existe → backup INCREMENTAL (solo cambios desde martes)
tar -czg /backup/snapshot.snar -f /backup/backup-miercoles.tar.gz /home
          

Restaurar en orden estricto:

Para restaurar el estado de miércoles necesitas aplicar los archivos en orden cronológico. Si te saltas uno, los ficheros borrados o renombrados entre medias pueden quedar en estado incorrecto.


# 1. Restaurar el completo del lunes (base)
tar -xzf /backup/backup-lunes.tar.gz -C /restauracion/

# 2. Aplicar los cambios del martes encima
tar -xzf /backup/backup-martes.tar.gz -C /restauracion/

# 3. Aplicar los cambios del miércoles encima
tar -xzf /backup/backup-miercoles.tar.gz -C /restauracion/
          

Opciones clave para backups con tar:

  • -p → preservar permisos y propietarios
  • --exclude=PATRÓN → excluir ficheros o directorios
  • --one-file-system → no cruzar a otros sistemas de ficheros montados

dd — Imagen completa de disco o partición

dd copia datos a nivel de bloque, byte a byte, independientemente del sistema de ficheros. Crea imágenes exactas incluyendo el espacio libre, el MBR y las tablas de partición.


# Imagen del disco completo
dd if=/dev/sda of=/backup/disco-sda.img bs=4M status=progress

# Imagen comprimida al vuelo
dd if=/dev/sda bs=4M status=progress | gzip -c > /backup/disco-sda.img.gz

# Imagen de una partición
dd if=/dev/sda1 of=/backup/particion-sda1.img bs=4M status=progress

# Clonar disco directamente
dd if=/dev/sda of=/dev/sdb bs=4M status=progress

# Restaurar imagen
dd if=/backup/disco-sda.img of=/dev/sda bs=4M status=progress
gunzip -c /backup/disco-sda.img.gz | dd of=/dev/sda bs=4M status=progress
          
  • if= → fichero de entrada
  • of= → fichero de salida
  • bs=4M → tamaño de bloque (buen equilibrio velocidad/memoria)
  • status=progress → muestra velocidad y progreso en tiempo real

Precaución: dd no valida los destinos. Un error en of= puede destruir datos irrecuperablemente.

Regla 3-2-1

  • 3 copias de los datos (original + 2 backups)
  • 2 medios diferentes (disco local + NAS, o disco + cinta)
  • 1 copia offsite (nube, sede remota, disco en otra ubicación física)

Un backup en el mismo lugar que los datos originales no protege contra incendios ni robos.

Automatizar con cron:


# Backup diario a las 2:00
0 2 * * * rsync -az --delete /home/ /backup/home/ >> /var/log/backup.log 2>&1

# Backup semanal completo los domingos a las 3:00
0 3 * * 0 tar -czpf /backup/home-$(date +\%F).tar.gz /home >> /var/log/backup.log 2>&1
          

Verificar integridad:


tar -tzf /backup/home.tar.gz > /dev/null && echo "OK" || echo "CORRUPTO"
sha256sum /backup/home.tar.gz > /backup/home.tar.gz.sha256
sha256sum -c /backup/home.tar.gz.sha256
          

Para el examen LPIC-1: conocer tar --listed-incremental, el uso de dd para imágenes de disco y la regla 3-2-1.

Flujo de arranque: BIOS/UEFI → GRUB → kernel → initramfs → systemd

Índice de la sección

Índice del curso