206.2 - Operaciones de backup

Introduccion

Las copias de seguridad son una de las responsabilidades mas criticas de un administrador de sistemas. Este subtema tiene un peso de 3 en el examen LPIC-2 201 y cubre las herramientas y estrategias fundamentales para realizar backups en sistemas Linux.

Estrategias de backup

Tipos de backup

TipoDescripcionVentajasDesventajas
Completo (Full)Copia todos los datos seleccionadosRestauracion rapida y sencillaRequiere mas espacio y tiempo
IncrementalCopia solo los datos modificados desde el ultimo backup (cualquier tipo)Rapido y ahorra espacioRestauracion lenta (necesita todos los incrementales)
DiferencialCopia los datos modificados desde el ultimo backup completoRestauracion mas rapida que incrementalCrece con el tiempo hasta el proximo full

Esquema clasico de rotacion

Un esquema comun es realizar un backup completo semanal y backups incrementales diarios:

Domingo:    Full backup
Lunes:      Incremental (cambios desde domingo)
Martes:     Incremental (cambios desde lunes)
Miercoles:  Incremental (cambios desde martes)
...
Sabado:     Incremental (cambios desde viernes)

Para el examen: Entiende la diferencia entre incremental (desde el ultimo backup de cualquier tipo) y diferencial (siempre desde el ultimo full). La restauracion incremental requiere el full + todos los incrementales en orden.

tar - Archivado y backups incrementales

Uso basico de tar

# Crear un archivo tar comprimido con gzip
tar czf backup-2024-01-15.tar.gz /home /etc
 
# Crear con compresion bzip2
tar cjf backup.tar.bz2 /home
 
# Crear con compresion xz
tar cJf backup.tar.xz /home
 
# Extraer un archivo tar
tar xzf backup.tar.gz
 
# Extraer en un directorio especifico
tar xzf backup.tar.gz -C /restore/
 
# Listar contenido sin extraer
tar tzf backup.tar.gz

Backups incrementales con tar

tar soporta backups incrementales mediante el archivo snapshot (--listed-incremental):

# Backup completo (nivel 0) - crea el archivo snapshot
tar --listed-incremental=/var/backups/snapshot.snar \
    -czf /backup/full-$(date +%Y%m%d).tar.gz /home
 
# Backup incremental (nivel 1) - usa y actualiza el snapshot
tar --listed-incremental=/var/backups/snapshot.snar \
    -czf /backup/inc-$(date +%Y%m%d).tar.gz /home

El archivo .snar (snapshot) registra el estado de los archivos. Cada vez que se ejecuta, tar solo archiva los archivos nuevos o modificados desde la ultima ejecucion.

# Para restaurar una cadena incremental:
# 1. Restaurar el backup completo
tar --listed-incremental=/dev/null -xzf /backup/full-20240115.tar.gz
 
# 2. Restaurar cada incremental en orden
tar --listed-incremental=/dev/null -xzf /backup/inc-20240116.tar.gz
tar --listed-incremental=/dev/null -xzf /backup/inc-20240117.tar.gz

Backup con —newer (backups por fecha)

# Archivar archivos modificados despues de una fecha
tar -czf /backup/cambios.tar.gz --newer="2024-01-15" /home
 
# Usar un archivo de referencia para la fecha
tar -czf /backup/cambios.tar.gz --newer-mtime="/var/backups/timestamp" /home
 
# Actualizar el archivo de referencia
touch /var/backups/timestamp

Para el examen: --listed-incremental es el metodo preferido para backups incrementales con tar. Al restaurar, se usa --listed-incremental=/dev/null para indicar que se trata de una restauracion.

rsync - Sincronizacion eficiente

Conceptos basicos

rsync sincroniza archivos y directorios de forma eficiente, transfiriendo solo las diferencias entre origen y destino.

# Sincronizacion local basica
rsync -av /home/usuario/ /backup/usuario/
 
# IMPORTANTE: la barra final en el origen afecta el comportamiento
# Con barra: copia el CONTENIDO del directorio
rsync -av /home/usuario/ /backup/usuario/
# Sin barra: copia el directorio MISMO
rsync -av /home/usuario /backup/

Opciones principales de rsync

OpcionDescripcion
-a (archive)Equivale a -rlptgoD: recursivo, enlaces, permisos, tiempos, grupo, owner, devices
-v (verbose)Muestra informacion detallada
-z (compress)Comprime los datos durante la transferencia
--deleteElimina archivos en destino que no existen en origen
--exclude=PATRONExcluye archivos que coinciden con el patron
--exclude-from=FILELee patrones de exclusion de un archivo
-n / --dry-runSimulacion sin realizar cambios
--progressMuestra progreso de la transferencia
-eEspecifica el shell remoto (generalmente ssh)
--bwlimit=KBPSLimita el ancho de banda
--backupCrea copias de los archivos modificados
--backup-dir=DIRDirectorio para las copias de seguridad

rsync remoto

# Sincronizar con servidor remoto via SSH
rsync -avz /home/usuario/ usuario@servidor:/backup/usuario/
 
# Especificar puerto SSH diferente
rsync -avz -e "ssh -p 2222" /home/ usuario@servidor:/backup/
 
# Sincronizacion espejo (elimina archivos extras en destino)
rsync -avz --delete /home/usuario/ usuario@servidor:/backup/usuario/
 
# Excluir archivos y directorios
rsync -avz --exclude='*.tmp' --exclude='.cache/' /home/ /backup/
 
# Simulacion antes de ejecutar
rsync -avzn --delete /home/ /backup/
# Backup incremental usando hardlinks (estilo Time Machine)
rsync -av --delete \
      --link-dest=/backup/daily/$(date -d yesterday +%Y%m%d) \
      /home/ /backup/daily/$(date +%Y%m%d)/

Para el examen: Conoce bien las opciones -a, -v, -z y --delete. Recuerda la diferencia de comportamiento con y sin barra final en la ruta de origen. rsync usa SSH por defecto para conexiones remotas.

dd - Copia a bajo nivel

dd copia datos a nivel de bloques, ideal para clonar discos y particiones.

# Clonar un disco completo
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
 
# Crear imagen de un disco
dd if=/dev/sda of=/backup/disco.img bs=4M status=progress
 
# Restaurar imagen a un disco
dd if=/backup/disco.img of=/dev/sda bs=4M status=progress
 
# Backup del MBR (primeros 512 bytes)
dd if=/dev/sda of=/backup/mbr.bin bs=512 count=1
 
# Restaurar solo la tabla de particiones (sin el bootloader)
dd if=/backup/mbr.bin of=/dev/sda bs=1 count=64 skip=446 seek=446
 
# Crear un archivo de tamano fijo (para swap, testing)
dd if=/dev/zero of=/swapfile bs=1M count=1024

Opciones importantes de dd

OpcionDescripcion
if=Archivo/dispositivo de entrada (input file)
of=Archivo/dispositivo de salida (output file)
bs=Tamano del bloque de lectura/escritura
count=Numero de bloques a copiar
skip=Bloques a saltar en la entrada
seek=Bloques a saltar en la salida
status=progressMuestra progreso de la copia
conv=noerror,syncContinua en caso de errores, rellena con ceros

Para el examen: dd es esencial para backup de MBR y clonacion de discos. Recuerda que bs=512 count=1 copia exactamente el MBR. Ten cuidado: dd no pide confirmacion y puede destruir datos.

cpio - Archivado alternativo

cpio (Copy In and Out) es una herramienta de archivado que lee nombres de archivo desde la entrada estandar.

# Crear un archivo cpio (modo copy-out)
find /home -name "*.conf" | cpio -ov > backup-conf.cpio
 
# Extraer un archivo cpio (modo copy-in)
cpio -idv < backup-conf.cpio
 
# Listar contenido de un archivo cpio
cpio -tv < backup-conf.cpio
 
# Crear archivo con compresion
find /etc | cpio -ov | gzip > etc-backup.cpio.gz
 
# Extraer archivo comprimido
zcat etc-backup.cpio.gz | cpio -idv
 
# Copiar una estructura de directorio (modo copy-pass)
find /home -newer /var/backups/timestamp | cpio -pdv /backup/

Modos de cpio

ModoOpcionDescripcion
Copy-out-oCrea un archivo (escribe en stdout)
Copy-in-iExtrae de un archivo (lee de stdin)
Copy-pass-pCopia directamente entre directorios

Para el examen: cpio se usa frecuentemente con find para seleccionar archivos. Recuerda los tres modos: -o (crear), -i (extraer) y -p (copiar directo).

Soluciones de backup empresarial

Amanda (Advanced Maryland Automatic Network Disk Archiver)

  • Sistema de backup en red cliente-servidor
  • Soporta backup a disco y cinta
  • Planificacion automatica de backups full e incrementales
  • Usa herramientas nativas (tar, dump) como backend
  • Archivos de configuracion en /etc/amanda/

Bacula

  • Arquitectura modular: Director, Storage Daemon, File Daemon, Console
  • Soporta multiples sistemas operativos
  • Base de datos para catalogo (MySQL, PostgreSQL, SQLite)
  • Soporte para cintas, discos y almacenamiento en la nube
  • Alta escalabilidad para entornos empresariales

BURP (BackUp and Restore Program)

  • Sistema de backup en red con deduplicacion
  • Backups incrementales eficientes
  • Protocolo propio basado en SSL
  • Interfaz web opcional

Para el examen: No necesitas conocer la configuracion detallada de Amanda, Bacula o BURP, pero si debes saber que existen y sus caracteristicas principales.

Automatizacion de backups con cron

# Archivo en /etc/cron.d/backup-diario
# Backup incremental diario a las 2:00 AM
0 2 * * 1-6 root /usr/local/bin/backup-incremental.sh
 
# Backup completo los domingos a las 1:00 AM
0 1 * * 0 root /usr/local/bin/backup-full.sh

Script de ejemplo para backup automatizado

#!/bin/bash
# /usr/local/bin/backup-incremental.sh
 
BACKUP_DIR="/backup"
SNAPSHOT="/var/backups/home.snar"
DATE=$(date +%Y%m%d)
LOG="/var/log/backup.log"
 
echo "$(date): Iniciando backup incremental" >> $LOG
 
tar --listed-incremental=$SNAPSHOT \
    -czf $BACKUP_DIR/home-inc-$DATE.tar.gz \
    /home 2>> $LOG
 
if [ $? -eq 0 ]; then
    echo "$(date): Backup completado exitosamente" >> $LOG
else
    echo "$(date): ERROR en el backup" >> $LOG
fi

Snapshots y backups con LVM

# Crear snapshot de un volumen logico
lvcreate -L 5G -s -n snap_home /dev/vg0/home
 
# Montar el snapshot para backup
mount -o ro /dev/vg0/snap_home /mnt/snapshot
 
# Realizar backup del snapshot
tar czf /backup/home-snapshot.tar.gz /mnt/snapshot/
 
# Limpiar
umount /mnt/snapshot
lvremove /dev/vg0/snap_home

Para el examen: Los snapshots LVM permiten realizar backups consistentes de un sistema en funcionamiento. El snapshot se crea instantaneamente y captura el estado del volumen en ese momento.


Trampas del examen

Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:

  • Incremental vs diferencial — incremental copia cambios desde el ultimo backup de CUALQUIER tipo (full o incremental anterior); diferencial copia siempre desde el ultimo backup COMPLETO. La restauracion incremental necesita el full + todos los incrementales en orden; la diferencial solo necesita el full + el ultimo diferencial
  • La barra final en rsync cambia el comportamientorsync -av /home/usuario/ /backup/ copia el CONTENIDO de usuario; rsync -av /home/usuario /backup/ copia el DIRECTORIO usuario (creando /backup/usuario/). Olvidar o agregar la barra cambia completamente el resultado
  • rsync --delete elimina archivos en el destino — si un archivo se borro en el origen, --delete lo eliminara tambien en el destino. Sin --delete, los archivos eliminados en el origen persisten en el backup. Usar --dry-run (-n) antes de --delete es una buena practica
  • tar --listed-incremental al restaurar usa /dev/null — al crear el backup se usa el archivo snapshot real (.snar); al restaurar se usa --listed-incremental=/dev/null para indicar que es una operacion de restauracion, no de backup
  • dd copia bit a bit, incluyendo espacio vacio — una imagen de un disco de 500 GB con solo 10 GB de datos ocupara 500 GB. Para imagenes mas eficientes, comprime con gzip o usa herramientas como partclone que solo copian sectores usados
  • cpio lee nombres de archivo desde stdin — a diferencia de tar que acepta rutas como argumentos, cpio -o espera los nombres por stdin (tipicamente desde find). Los modos son: -o (crear), -i (extraer), -p (copiar directo entre directorios)
  • dd bs=512 count=1 copia exactamente el MBR (512 bytes) — el MBR contiene 446 bytes de bootloader + 64 bytes de tabla de particiones + 2 bytes de firma. Para restaurar solo el bootloader sin tocar la tabla de particiones: bs=446 count=1
  • Amanda, Bacula y BURP son soluciones de backup empresarial — no necesitas saber configurarlas en detalle, pero si que Amanda usa tar/dump como backend, Bacula tiene arquitectura modular (Director + Storage + File daemons), y BURP ofrece deduplicacion