Cómo instalar y configurar Amanda en Linux

 Le pedimos a la inteligencia artificial Gemini de Google que nos explique cómo instalar y configurar Amanda en Linux

Explicanos detalladamente cómo instalar y configurar Amanda en Linux

Amanda ( Advanced Maryland Automatic Network Disk Archiver ) es una potente y flexible solución de código abierto para realizar copias de seguridad de múltiples máquinas en red a un servidor centralizado. Aunque históricamente se asoció con cintas, Amanda es perfectamente capaz de realizar copias de seguridad de disco a disco (D2D), de disco a disco a cinta (D2D2T), y de disco a nube.

Esta guía detallará cómo instalar y configurar Amanda en un entorno Linux, cubriendo tanto el servidor Amanda (donde se gestionan y almacenan las copias de seguridad) como los clientes Amanda (las máquinas de las que se realizan las copias de seguridad).

Conceptos Clave de Amanda

Servidor Amanda: La máquina central que orquesta las copias de seguridad. Contiene la configuración, los discos de retención (holding disks) y puede gestionar los dispositivos de almacenamiento (cintas o archivos de disco).

Cliente Amanda:
Las máquinas de las que se desea hacer una copia de seguridad. Ejecutan el agente de Amanda que se comunica con el servidor.

Configuración (Config Set): Un conjunto de archivos que define una política de copia de seguridad (qué, cuándo, cómo y dónde se guarda). Puedes tener múltiples configuraciones (ej. "diaria", "mensual").

DLE ( Dump List Entry ): Una entrada en la configuración que especifica un sistema de archivos o directorio en un cliente que debe ser respaldado.

Holding Disk : Espacio en disco en el servidor Amanda donde las copias de seguridad se almacenan temporalmente antes de ser enviadas al destino final (cinta o almacenamiento de disco). Esto mejora el rendimiento.

Tapetype : Define las características de un dispositivo de almacenamiento (ya sea una cinta física o, en el caso de D2D, un "dispositivo" simulado en disco).

Dumptype : Define la política de copia de seguridad para un DLE (ej. con o sin compresión, nivel de copia de seguridad, tipo de autenticación).

Requisitos Previos

Dos Máquinas Linux: Una para el servidor Amanda y al menos una para el cliente Amanda. Pueden ser máquinas virtuales.

Acceso Root/Sudo: En ambas máquinas.

Conectividad de Red : Asegúrate de que el servidor Amanda pueda acceder al cliente Amanda y viceversa.

Sincronización de Tiempo ( NTP ): Es crucial que la hora esté sincronizada en todas las máquinas.

Espacio en Disco:

Servidor : Suficiente espacio para los " holding disks " (el tamaño de tus DLEs más un extra) y para el destino final de los backups (archivos de disco o cintas virtuales).

Cliente: Espacio para el software del cliente.

Paso 1: Instalación de Amanda ( Servidor y Cliente )

Los paquetes de Amanda suelen estar disponibles en los repositorios estándar de la mayoría de las distribuciones Linux.

1. En el Servidor Amanda

Actualizar el sistema:

Ubuntu/Debian:

Bash


sudo apt update

sudo apt upgrade -y


CentOS/RHEL/Fedora:

Bash


sudo dnf update -y

Instalar paquetes del servidor Amanda:

Ubuntu/Debian:

Bash


sudo apt install amanda-server amanda-client -y

CentOS/RHEL/Fedora:

Bash


sudo dnf install amanda-server amanda-client -y

(Nota: amanda-client se instala en el servidor por si el propio servidor necesita ser respaldado por Amanda).

2. En el Cliente Amanda:

Actualizar el sistema: ( Similar al servidor )

Ubuntu/Debian:

Bash


sudo apt update

sudo apt upgrade -y


CentOS/RHEL/Fedora:

Bash


sudo dnf update -y

Instalar paquetes del cliente Amanda

Ubuntu/Debian:

Bash


sudo apt install amanda-client -y

CentOS/RHEL/Fedora:

Bash


sudo dnf install amanda-client -y

(La instalación creará automáticamente el usuario y grupo amanda en ambas máquinas. La mayoría de los archivos de configuración de Amanda se encuentran en /etc/amanda/.)

Paso 2: Configuración del Servidor Amanda

Vamos a crear una configuración simple para copias de seguridad de disco a disco.

1. Crear una Nueva Configuración (Config Set):

Amanda opera con "conjuntos de configuración". Crearemos uno llamado daily (diario).

Cambia al usuario amanda:

Bash

sudo su - amanda

Crea el directorio para la nueva configuración:

Bash

mkdir -p /etc/amanda/daily

Ahora, puedes usar amanda para inicializar los archivos de configuración base o crearlos manualmente. La forma más sencilla es usar amcheck que creará los directorios y archivos si no existen.

Bash

amcheck daily

Esto creará el directorio /etc/amanda/daily y los archivos amanda.conf y disklist dentro si no existen.

2. Editar amanda.conf:

Este es el archivo principal de configuración. Abrelo para editarlo como el usuario amanda (o como root si no estás como amanda):

Bash

nano /etc/amanda/daily/amanda.conf

Aquí está una configuración de ejemplo para D2D (Disk-to-Disk). Ajusta los valores según tus necesidades:

# -----------------------------------------------------------

# GLOBAL SETTINGS

# -----------------------------------------------------------

org "MiOrganizacion"                  # Nombre de la organización (para informes)

mailto "admin@example.com"    # Dirección de correo para los informes

dumpuser "amanda"                     # El usuario que ejecuta los comandos de Amanda



# -----------------------------------------------------------

# DUMP LOGISTICS

# -----------------------------------------------------------

runtapes 1                                    # Número de cintas (o archivos simulados) a usar por ejecución

dumpcycle 1 day                         # Frecuencia de los respaldos completos (FULL) 
runspercycle 1                             # Cuántas veces amdump se ejecuta por ciclo de respaldo

tapecycle 1                                  # Cuántas cintas (o archivos simulados) se usan en un ciclo completo. Para D2D, 1 es común.



# -----------------------------------------------------------

# DIRECTORIES

# -----------------------------------------------------------

infofile "/var/lib/amanda/daily/curinfo"         # Estado actual de las copias de seguridad

logdir "/var/log/amanda/daily"                       # Directorio de logs

indexdir "/var/lib/amanda/daily/index"          # Directorio de índices (para restauraciones)



# -----------------------------------------------------------

# HOLDING DISK

# -----------------------------------------------------------

# Define un área de retención (holding disk) en el servidor.

# Asegúrate de que este directorio exista y el usuario 'amanda' tenga permisos de escritura.

# El tamaño debe ser suficiente para almacenar los DLEs antes de moverlos al destino final.

holdingdisk hd1 {

     comment "Main holding disk"

     directory "/var/lib/amanda/holding"

     use 5000 mb # Cantidad de espacio a usar en MB

     chunksize 1 gb # (Opcional) Tamaño de los chunks de escritura

}



# -----------------------------------------------------------

# TAPE DEVICE SIMULATION (DISK-TO-DISK)

# -----------------------------------------------------------

# Amanda siempre necesita un "dispositivo de cinta", incluso si es virtual.

# Este será un directorio donde se almacenarán los archivos de respaldo.

# Asegúrate de que este directorio exista y el usuario 'amanda' tenga permisos de escritura.

tapedev "file:/var/lib/amanda/vtapes/daily"

# Define el tipo de "cinta" virtual

tapetype DUMPTYPE

# Algoritmo de Tape (importante para D2D)

# 'first' es bueno para D2D ya que prioriza el movimiento del holding disk

taperalgo "first"

autoflush yes                             # Vaciar el holding disk automáticamente



# -----------------------------------------------------------

# DEFINITIONS

# -----------------------------------------------------------



# Definición del tipo de "cinta" virtual para D2D

define tapetype DUMPTYPE {

     comment "Virtual tape for disk backups"

     length 10000 mb                  # Tamaño máximo de un "archivo de cinta" en MB (ajustar)

     file_size 10000 mb              # Igual que length para simplificar

     # fsm_splitsize 1000 mb      # (Opcional) Tamaño máximo de un archivo segmentado

     fsf 1                                      # Número de archivos por segmento de cinta

}



# Definición de tipos de dump (políticas de backup)

# Puedes crear múltiples dumptypes con diferentes opciones.

# 'auth "bsd"' es para autenticación basada en .amandahosts (simple, pero menos segura que 'ssh')

# 'compress client fast' o 'compress server fast' para compresión.

# 'exclude list' para excluir directorios.



define dumptype comp-root {

     comment "Full backup with compression for root partition"

     program "GNUTAR"                                  # Usar GNU tar para la copia de seguridad

     auth "bsd"                                                    # Autenticación (se configura en el cliente)

     compress client best                                    # Compresión en el cliente (recomendado para ahorrar ancho de                                                                    banda)

     index yes                                                     # Crear índice para búsquedas rápidas

     exclude list "/etc/amanda/exclude.conf"    # Excluir directorios listados en este archivo

     estimate server                                            # Estimación de tamaño en el servidor (o "client" si el                                                                                    cliente tiene muchas CPU libres)

     # Ejemplo de inclusión si solo quieres ciertas cosas

     # include list "/etc/amanda/include.conf"

}



define dumptype comp-home {

      comment "Daily backup with compression for home directories"

      program "GNUTAR"

       auth "bsd"

      compress client best

      index yes

      exclude list "/etc/amanda/exclude.conf"

      estimate server

}



# -----------------------------------------------------------

# MISC

# -----------------------------------------------------------

# Otros parámetros que podrías querer ajustar:

# netusage 10000 Kbits                # Limitar el ancho de banda (en Kbits/seg)

# maxdumps 1                              # Número máximo de DLEs simultáneos por cliente

# MaxHostDump 1                       # Número máximo de DLEs simultáneos por host

# record no                                    # Deshabilitar el registro de las cintas (si solo usas disco)

# report_next_tape_label yes        # Incluir la etiqueta de la próxima cinta en los informes

Crear Directorios y Archivos de Configuración:

Asegúrate de que los directorios holdingdisk, tapedev, infofile, logdir, indexdir existan y el usuario amanda tenga permisos de escritura.

Bash

# Como usuario root (o sudo)

sudo mkdir -p /var/lib/amanda/holding

sudo mkdir -p /var/lib/amanda/vtapes/daily

sudo mkdir -p /var/lib/amanda/daily

sudo mkdir -p /var/log/amanda/daily

sudo chown -R amanda:amanda /var/lib/amanda

sudo chown -R amanda:amanda /var/log/amanda


# Crear el archivo de exclusión

sudo nano /etc/amanda/exclude.conf

Contenido de /etc/amanda/exclude.conf (ejemplo):

/tmp/*

/var/tmp/*

/proc/*

/sys/*

/dev/*

/run/*

/mnt/*

/media/*

/lost+found/*

3. Editar disklist :

Este archivo (/etc/amanda/daily/disklist) especifica qué sistemas de archivos (DLEs) deben ser respaldados en qué clientes y con qué dumptype.

Abrelo para editarlo como el usuario amanda (o como root):

Bash

nano /etc/amanda/daily/disklist

Añade una línea por cada DLE que quieras respaldar. Reemplaza cliente.example.com con el nombre de host o la IP real de tu cliente Amanda.

# Hostname Disk/Directory Dumptype

cliente.example.com / comp-root

cliente.example.com /home comp-home

# Puedes añadir más DLEs de este cliente o de otros clientes

# otro_cliente.example.com /var/www comp-home

4. Configuración Inicial del Volumen Virtual (para D2D):

Amanda necesita inicializar las "cintas" virtuales.

Cambia al usuario amanda:

Bash


sudo su - amanda

Crea una "etiqueta" para tu primera "cinta" virtual:

Bash

amlabel daily daily-001

Esto creará el primer archivo de "cinta" en /var/lib/amanda/vtapes/daily/daily-001 y lo registrará.

Paso 3: Configuración del Cliente Amanda

1. Configurar Autenticación (en el Cliente):


El servidor Amanda necesita poder comunicarse con el cliente. Usaremos la autenticación bsd que es sencilla para empezar, pero en producción se recomienda ssh por seguridad.

Crear .amandahosts: Cambia al usuario amanda en el cliente Amanda:

Bash

sudo su - amanda

Crea o edita el archivo .amandahosts en el directorio home del usuario amanda:

Bash

nano ~/.amandahosts

Añade una línea con el nombre de host del servidor Amanda y el usuario amanda:

servidor.example.com amanda

Guarda y sal. Establece permisos estrictos:

Bash


chmod 600 ~/.amandahosts

Configurar amanda-client.conf (Opcional, pero recomendado para clientes): En el cliente Amanda, edita el archivo de configuración global del cliente:

Bash

sudo nano /etc/amanda/amanda-client.conf

Ajusta estas líneas:

conf "daily"                                              # El nombre del conjunto de configuración en el servidor

index_server "servidor.example.com"     # Nombre de host del servidor Amanda

dump_server "servidor.example.com"     # Nombre de host del servidor Amanda

auth "bsd"                                                 # Tipo de autenticación (debe coincidir con amanda.conf del                                                                         servidor)

# Algunas versiones de amanda-client.conf pueden requerir la ruta completa a amandad

# client_name "cliente.example.com" # Nombre de host del cliente (opcional, suele ser el hostname)

2. Configurar Permisos para amandad (en el Cliente):

El agente de Amanda (amandad) se ejecuta bajo el usuario amanda, pero necesita permisos de root para leer la mayoría de los sistemas de archivos (como /).

Esto se hace configurando sudo de forma específica.

En el cliente Amanda, edita el archivo sudoers:

Bash


sudo visudo

Añade la siguiente línea al final del archivo. Asegúrate de que la ruta a amandad sea correcta para tu distribución (común es /usr/lib/amanda/amandad).

amanda ALL = (root) NOPASSWD: /usr/lib/amanda/amandad

Guarda y sal.

Paso 4: Configuración del Firewall (Servidor y Cliente)

Amanda utiliza puertos específicos para la comunicación.

Servidor Amanda : Necesita aceptar conexiones entrantes de los clientes.

Puertos: 10080-1008x (TCP/UDP, para amanda-client) y 7937-7938 (TCP/UDP, para servicios antiguos/cliente amandad si no usa amanda-client).

UFW (Ubuntu/Debian):

Bash


sudo ufw allow 10080:10089/tcp comment "Amanda Server"

sudo ufw allow 10080:10089/udp comment "Amanda Server"

sudo ufw allow 7937:7938/tcp comment "Amanda Older Client"

sudo ufw allow 7937:7938/udp comment "Amanda Older Client"

sudo ufw reload


Firewalld (CentOS/RHEL/Fedora):

Bash


sudo firewall-cmd --permanent --add-port=10080-10089/tcp

sudo firewall-cmd --permanent --add-port=10080-10089/udp

sudo firewall-cmd --permanent --add-port=7937-7938/tcp

sudo firewall-cmd --permanent --add-port=7937-7938/udp

sudo firewall-cmd --reload


Cliente Amanda : Necesita aceptar conexiones entrantes del servidor.

Puertos: 10080-1008x (TCP/UDP, para amanda-client) y 7937-7938 (TCP/UDP).

UFW (Ubuntu/Debian):

Bash

sudo ufw allow from servidor.example.com to any port 10080:10089 proto tcp comment "Allow Amanda server"

sudo ufw allow from servidor.example.com to any port 10080:10089 proto udp comment "Allow Amanda server"

sudo ufw allow from servidor.example.com to any port 7937:7938 proto tcp comment "Allow Amanda server (old)"

sudo ufw allow from servidor.example.com to any port 7937:7938 proto udp comment "Allow Amanda server (old)"

sudo ufw reload


Firewalld (CentOS/RHEL/Fedora):

Bash


sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_SERVIDOR_AMANDA" port port="10080-10089" protocol="tcp" accept'

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_SERVIDOR_AMANDA" port port="10080-10089" protocol="udp" accept'

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_SERVIDOR_AMANDA" port port="7937-7938" protocol="tcp" accept'

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_SERVIDOR_AMANDA" port port="7937-7938" protocol="udp" accept'

sudo firewall-cmd --reload


Paso 5: Probar la Configuración

Una vez que la configuración está en su lugar, es hora de probarla.

1. Verificación en el Servidor:

Cambia al usuario amanda en el servidor Amanda:

Bash

sudo su - amanda

Ejecuta amcheck:

Bash

amcheck daily

Si todo está bien, deberías ver "amcheck daily OK" al final.

Errores comunes de amcheck :

CLIENT_AMANDA_NOCONF:
Cliente no configurado correctamente (.amandahosts o amanda-client.conf).

CLIENT_NOT_RESPONDING: Firewall, problema de red, servicio amandad no accesible en el cliente.

NO_DUMP_INFO_FILE: infofile no creado o permisos incorrectos.

NO_HOLDING_DISK: holdingdisk no creado, sin espacio o permisos.

NO_TAPE_DEVICE: tapedev no creado, sin espacio o permisos.

PERMISSIONS_BAD: Permisos incorrectos en archivos/directorios de Amanda.

2. Ejecutar la Primera Copia de Seguridad (Server):

Si amcheck fue exitoso, puedes ejecutar la primera copia de seguridad completa.

Asegúrate de estar como el usuario amanda en el servidor Amanda:

Bash

sudo su - amanda

amdump daily

amdump puede tardar un tiempo en completarse, dependiendo del tamaño de los DLEs. Puedes monitorear su estado:

Bash

amstatus daily

Y revisar los logs:

Bash


tail -f /var/log/amanda/daily/amdump.X.log

Cuando amdump finalice, recibirás un correo electrónico (si mailto está configurado y el envío de correo funciona en el servidor) o verás un resumen en el log.

3. Generar un Informe (Server):

Después de que amdump haya terminado, puedes generar un informe:

Bash

amreport daily

Esto te dará un resumen de la copia de seguridad, incluyendo qué DLEs fueron respaldados, su tamaño, y si hubo algún error.

Paso 6: Restauración de Datos (Básica)

La capacidad de restaurar datos es el objetivo final de cualquier sistema de copia de seguridad.

1. Usar amrecover (Servidor):

Cambia al usuario amanda en el servidor Amanda:

Bash

sudo su - amanda

amrecover daily


Esto te dará un prompt AMRECOVER>.

2. Seleccionar Cliente y Disco:

sethost cliente.example.com (Reemplaza con el nombre de tu cliente)

setdisk / (Reemplaza con el sistema de archivos o directorio que quieres restaurar)

3. Listar Archivos y Restaurar:

lp (Para listar los archivos disponibles en el DLE seleccionado)

cd /path/to/directory (Navega al directorio dentro del backup)

get filename (Para restaurar un archivo específico)

get directory/ (Para restaurar un directorio completo)

quit (Para salir del modo de recuperación)

Los archivos restaurados se colocarán en un subdirectorio amrecover dentro del directorio de trabajo actual.

Consideraciones Adicionales y Consejos para la Producción

Autenticación SSH (Recomendado): Para entornos de producción, la autenticación SSH es mucho más segura que bsd. Requiere configurar claves SSH sin contraseña entre el usuario amanda del servidor y el usuario amanda del cliente, y configurar auth "ssh" en amanda.conf y amanda-client.conf.

Planificación (Cron): Para automatizar las copias de seguridad, añade amdump daily a un cron job del usuario amanda en el servidor.

Bash

crontab -e


# Añade una línea como (ej. todos los días a la 01:00 AM):

0 1 * * * /usr/sbin/amdump daily >/dev/null 2>&1

Múltiples Configuraciones: Puedes crear diferentes configuraciones (ej. weekly, monthly) para diferentes ciclos de respaldo o políticas de retención.

Monitoreo: Monitorea el espacio en los holding disks y el destino final de los backups. Configura alertas para los informes de amreport.

Backups Consistentes: Para bases de datos o aplicaciones en funcionamiento, considera usar scripts pre-dump (que congelen/vuelquen la base de datos) y post-dump (que la descongelen) o utilizar LVM/ZFS/BTRFS snapshots para asegurar una copia de seguridad consistente.

Depuración: Si tienes problemas, puedes aumentar el nivel de depuración en amanda.conf (ej., debug_amcheck 5) o usar opciones de depuración con los comandos (ej., amcheck -D client daily).

Amanda es una herramienta muy potente. Esta guía te proporciona los fundamentos para una configuración D2D básica. Para escenarios más complejos (cintas físicas, integración con otras herramientas, etc.), siempre consulta la documentación oficial de Amanda (https://wiki.amanda.org/).