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
.snarno existe →tarlo crea y hace un backup completo. -
Si el
.snarya existe →tarlo 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 entradaof=→ fichero de salidabs=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