Configuración del Sistema de Copia de Seguridad Amanda

Amanda (Advanced Maryland Automatic Network Disk Archiver) es un sistema maduro de copia de seguridad de código abierto diseñado para copias de seguridad y recuperación confiables basadas en red en entornos heterogéneos. Con soporte integrado para cinta y disco, copias de seguridad multincliente concurrentes y algoritmos de programación sofisticados, Amanda gestiona eficientemente recursos de copia de seguridad mientras mantiene objetivos estrictos de tiempo de recuperación. Esta guía cubre el despliegue de la infraestructura de Amanda y la configuración de estrategias exhaustivas de copia de seguridad.

Tabla de Contenidos

  1. Arquitectura y Componentes de Amanda
  2. Instalación del Servidor
  3. Instalación y Configuración del Cliente
  4. Archivos de Configuración de Amanda
  5. Disklist y Gestión de Hosts
  6. Programación de Copias de Seguridad
  7. Operaciones de Copia de Seguridad
  8. Procedimientos de Recuperación
  9. Conclusión

Arquitectura y Componentes de Amanda

Amanda consta de componentes integrados:

  • Servidor: Mantiene catálogo, coordina copias de seguridad, gestiona almacenamiento
  • Cambiador de Cinta/Disco: Gestiona rotación de medios de almacenamiento
  • Dumper: Crea imágenes de copia de seguridad en servidor
  • Taper: Escribe a medios de almacenamiento
  • Demonio del Cliente: Se ejecuta en sistemas siendo respaldados
  • Generador de Informes: Crea informes de estado de copia de seguridad

El "disco de retención" de Amanda proporciona área de almacenamiento temporal para copias de seguridad antes de escribir al almacenamiento final, habilitando operaciones paralelas de copia de seguridad y optimizando utilización de cinta.

Instalación del Servidor

Requisitos Previos

# Requisitos del sistema:
# - 4+ núcleos de vCPU
# - 8+ GB de RAM
# - Almacenamiento de alta capacidad para disco de retención (500GB+ recomendado)
# - Conectividad de red a todos los clientes de copia de seguridad

# Verificar recursos disponibles
nproc
free -h
df -h

# Crear usuario del sistema Amanda
sudo useradd -r amanda || true

Instalar Servidor Amanda en Ubuntu/Debian

# Instalar servidor Amanda
sudo apt-get install -y amanda-server amanda-client

# Instalar componentes opcionales
sudo apt-get install -y amanda-backup-client amanda-recover

# Crear directorio home del usuario de copia de seguridad
sudo usermod -d /var/lib/amanda amanda
sudo mkdir -p /var/lib/amanda
sudo chown amanda:amanda /var/lib/amanda

# Inicializar directorio de catálogo de Amanda
sudo mkdir -p /etc/amanda
sudo chown amanda:amanda /etc/amanda

# Iniciar demonio Amanda
sudo systemctl enable amanda
sudo systemctl start amanda

# Verificar servicio
sudo systemctl status amanda

Instalar Servidor Amanda en CentOS/RHEL

# Instalar desde EPEL
sudo yum install -y epel-release
sudo yum install -y amanda-server amanda-client

# Crear directorios
sudo mkdir -p /var/lib/amanda
sudo mkdir -p /etc/amanda
sudo chown amanda:amanda /var/lib/amanda
sudo chown amanda:amanda /etc/amanda

# Iniciar xinetd (Amanda lo usa)
sudo systemctl enable xinetd
sudo systemctl start xinetd

Configuración del Firewall y Red

# UFW (Ubuntu)
sudo ufw allow 10080/tcp  # Servidor Amanda
sudo ufw allow 10080/udp
sudo ufw allow 10082/tcp  # Cliente de copia de seguridad
sudo ufw allow 10082/udp

# Firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=10080-10082/tcp
sudo firewall-cmd --permanent --add-port=10080-10082/udp
sudo firewall-cmd --reload

# Editar /etc/xinetd.d/amanda si es necesario
sudo nano /etc/xinetd.d/amanda
# Asegurar bind_address = 0.0.0.0
sudo systemctl reload xinetd

Instalación y Configuración del Cliente

Instalar Cliente Amanda

# En cada cliente de copia de seguridad:
sudo apt-get install -y amanda-client

# O en CentOS/RHEL:
sudo yum install -y amanda-client

# Crear usuario Amanda si no existe
sudo useradd -r amanda || true

# Crear archivo .amandahosts
sudo nano /etc/amanda/.amandahosts

# Agregar acceso del servidor:
# server.example.com root amanda
# server.example.com backup amanda

# Establecer permisos
sudo chmod 600 /etc/amanda/.amandahosts
sudo chown amanda:amanda /etc/amanda/.amandahosts

Configuración de xinetd del Cliente

# Editar configuración de xinetd para amanda
sudo nano /etc/xinetd.d/amanda

# Configurar:
cat <<'EOF' | sudo tee /etc/xinetd.d/amanda
service amanda
{
  socket_type = dgram
  protocol = udp
  wait = yes
  user = amanda
  group = disk
  server = /usr/lib/amanda/amandad
  server_args = -auth=bsdtcp amdump amindexd ambackupd
  disable = no
  only_from = 192.168.1.10  # IP del servidor Amanda
}
EOF

# Recargar xinetd
sudo systemctl reload xinetd

# Probar conectividad desde servidor
sudo -u amanda nc -u 192.168.1.30 10080

Archivos de Configuración de Amanda

Configuración Principal de Amanda

Crear /etc/amanda/daily/amanda.conf:

# Crear directorio de configuración
sudo mkdir -p /etc/amanda/daily
sudo chown amanda:amanda /etc/amanda/daily

# Crear configuración principal
cat <<'EOF' | sudo tee /etc/amanda/daily/amanda.conf
# Configuración de Amanda para copias de seguridad diarias
org = "Mi Organización"
mailto = [email protected]
dumpuser = amanda
tpchanger = "chg-disk"
changerdev = "/dev/null"
changerfile = "/var/lib/amanda/daily/changer-status"
tapecycle = 10
autolabel = "daily-%%"
labelstr = "^daily-[0-9][0-9]*$"
tapetype = DLT
define tapetype DLT {
  comment = "Unidad HP DLT"
  length = 160000 mbytes
  filemark = 1 mbyte
  speed = 20000 kps
}

# Configuración del Dumper
inparallel = 4
dumptype = default {
  priority = medium
  compress = server
  estimate = calcsize
  holdingdisk = yes
}

# Configuración del disco de retención
holdingdisk hd1 {
  comment = "Disco de retención uno"
  directory = /var/lib/amanda/daily
  use = 20 gbytes
}

# Interfaz de red
netusage = 800 mbytes

# Directorios de registro e índice
logdir = "/var/log/amanda/daily"
indexdir = "/var/lib/amanda/daily/index"

# Políticas de limpieza
amrecover_do_fsf = yes
amrecover_check_label = yes
autoflush = yes
starttime = 1830

# Encriptación (opcional)
# encryption = server
# compress = server

# Seguridad de red de Amanda
bsd_security_options = "ssh"
EOF

sudo chown amanda:amanda /etc/amanda/daily/amanda.conf
sudo chmod 640 /etc/amanda/daily/amanda.conf

Configuración de Red de Amanda

# Configurar encriptación de red (recomendado)
cat <<'EOF' | sudo tee /etc/amanda/daily/amanda-network.conf
# Usar SSH para todas las conexiones del cliente
bsd_security_options = ssh
ssh_keys = /var/lib/amanda/.ssh/id_rsa
EOF

# Generar claves SSH para usuario amanda
sudo -u amanda ssh-keygen -t rsa -f /var/lib/amanda/.ssh/id_rsa -N ""

# Copiar clave pública a todos los clientes para SSH sin contraseña
# Manualmente o a través de ansible

Disklist y Gestión de Hosts

Configurar Disklist

Crear archivo /etc/amanda/daily/disklist:

cat <<'EOF' | sudo tee /etc/amanda/daily/disklist
# Formato de Disklist: hostname diskname dumptype [interface [skip-full [skip-incr]]]

# Servidores de producción
server1.example.com  /home     default
server1.example.com  /var      default
server1.example.com  /opt      default

# Servidor de base de datos con tipo personalizado
db-server.example.com  /var/lib/mysql    database-full
db-server.example.com  /var/lib/pgsql    database-full

# Servidores web
web1.example.com  /var/www   default
web2.example.com  /var/www   default

# Servidor de archivos
storage.example.com  /data1   large-archive
storage.example.com  /data2   large-archive
EOF

sudo chown amanda:amanda /etc/amanda/daily/disklist
sudo chmod 640 /etc/amanda/daily/disklist

Tipos de Dump Personalizados

Defina configuraciones de copia de seguridad especializadas:

cat <<'EOF' | sudo tee -a /etc/amanda/daily/amanda.conf

# Tipo de copia de seguridad de base de datos - preserve datos con compresión mínima
dumptype database-full {
  priority = high
  compress = none
  estimate = none
  holdingdisk = yes
  ignore-client-error = yes
  exclude list = "/etc/amanda/daily/exclude.db"
}

# Tipo de archivo grande - compresión pesada, baja prioridad
dumptype large-archive {
  priority = low
  compress = server
  estimate = calcsize
  holdingdisk = no
  exclude list = "/etc/amanda/daily/exclude.archive"
}

# Sistemas críticos - múltiples copias de copia de seguridad
dumptype critical {
  priority = high
  compress = server
  estimate = calcsize
  holdingdisk = yes
  min-dle-by-time = 0
}
EOF

Programación de Copias de Seguridad

Programación Diaria de Copia de Seguridad

# Programar ejecución diaria de copia de seguridad
cat <<'EOF' | sudo tee /etc/cron.d/amanda
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Copia de seguridad diaria a las 1:30 AM
30 1 * * * amanda /usr/sbin/amdump /etc/amanda/daily

# Copia de seguridad completa del domingo a las 1:30 AM
30 1 * * 0 amanda /usr/sbin/amdump /etc/amanda/daily

# Informe de copia de seguridad a las 7:00 AM
00 7 * * * amanda /usr/sbin/amreport /etc/amanda/daily
EOF

# Verificar trabajo de cron
sudo crontab -u amanda -l

Operaciones de Copia de Seguridad

Ejecutar Copias de Seguridad Manuales

# Realizar copia de seguridad inmediatamente
sudo -u amanda /usr/sbin/amdump /etc/amanda/daily

# Monitorear progreso de copia de seguridad
tail -f /var/log/amanda/daily/amdump.log

# Verificar estado durante la copia de seguridad
sudo amcheck /etc/amanda/daily

# Obtener estado detallado
sudo -u amanda /usr/sbin/amstat /etc/amanda/daily

# Estado de Taper (escritura de cinta)
sudo -u amanda tail -f /var/log/amanda/daily/taperlog

Verificaciones Previas a la Copia de Seguridad

# Ejecutar amcheck para verificar configuración
sudo amcheck /etc/amanda/daily

# Probar todas las conexiones del cliente
sudo amcheck -m /etc/amanda/daily

# Verificación detallada con informe de correo electrónico
sudo amcheck -A -m /etc/amanda/daily 2>&1 | mail -s "Amanda Check" [email protected]

Generar Informes de Copia de Seguridad

# Generar informe estándar
sudo -u amanda /usr/sbin/amreport /etc/amanda/daily

# Informe de correo electrónico
sudo -u amanda /usr/sbin/amreport /etc/amanda/daily | \
  mail -s "Informe de Copia de Seguridad $(date +%Y-%m-%d)" [email protected]

# Estadísticas detalladas
sudo -u amanda /usr/sbin/amreport /etc/amanda/daily -i

# Generar informe para fecha específica
sudo -u amanda /usr/sbin/amreport /etc/amanda/daily --print-stats -l 20240101

Procedimientos de Recuperación

Usar Interfaz amrecover

# Lanzar herramienta de recuperación
sudo amrecover -s backup-server /etc/amanda/daily

# Dentro de amrecover:
# Comandos interactivos:
# - sethost hostname             Establecer objetivo para recuperación
# - setdisk /path               Seleccionar sistema de archivos
# - settape <tape-label>        Especificar cinta
# - mode smb|ftp|tar            Establecer método de recuperación
# - add filename                Encolar archivo para recuperación
# - adddir directory            Encolar directorio completo
# - delete file/dir             Eliminar de cola
# - list                        Mostrar archivos encolados
# - extract                     Realizar recuperación
# - quit                        Salir de amrecover

Restauración a Nivel de Archivo

# Iniciar sesión de recuperación
sudo amrecover -s backup-server /etc/amanda/daily

# Dentro de amrecover:
sethost server1.example.com
setdisk /home
listhost                    # Listar fechas de copia de seguridad
settape daily-01
cd /important_data
add ./critical_file.txt
extract                     # Restaurar a /tmp/amanda-restore por defecto

# Salir
quit

# Archivos restaurados a /tmp/amanda-restore/
ls -la /tmp/amanda-restore/home/important_data/

Restauración Completa del Sistema

# Para recuperación completa del sistema de archivos
sudo amrecover -s backup-server /etc/amanda/daily

# Dentro de sesión:
sethost server1.example.com
setdisk /
settape daily-01

# Agregar sistema de archivos completo
adddir /
mode tar                   # Usar modo tar para restauración completa

extract                    # Inicia recuperación

# Monitorear progreso de recuperación
tail -f /var/log/amanda/amrecover.log

Conclusión

Amanda proporciona un sistema sofisticado de copia de seguridad probado en batalla para entornos empresariales complejos. Configurando cuidadosamente disklists, definiciones de dumptype y estrategias de programación, las organizaciones logran protección de datos exhaustiva alineada con objetivos específicos de recuperación. La capacidad de copia de seguridad multincliente concurrente y opciones flexibles de recuperación de Amanda garantizan restauración rápida cuando ocurren desastres. Las verificaciones rigurosas previas al vuelo y las pruebas regulares de recuperación validan la confiabilidad de la copia de seguridad, haciendo a Amanda una excelente opción para infraestructura crítica de copia de seguridad que requiere protección de datos robusta y escalable.