Amanda (Advanced Maryland Automatic Network Disk Archiver) es un sistema de copias de seguridad en red que centraliza en un servidor las copias de muchos clientes usando herramientas estándar como GNU tar. Su planificador reparte las copias completas a lo largo de un ciclo para que cada ejecución tenga un tamaño parecido, y guarda los datos en cintas reales o en cintas virtuales sobre disco. En este tutorial configurarás un servidor Amanda 3.5 en Ubuntu 24.04 con cintas virtuales, respaldarás el propio servidor y un cliente remoto, programarás las copias y restaurarás archivos con amrecover.

Requisitos previos

  • Un servidor con Ubuntu 24.04 LTS que hará de servidor Amanda (por ejemplo un VPS de CubePath), con espacio en disco para las cintas virtuales y el disco de retención (holding disk).
  • Opcionalmente, un segundo servidor Ubuntu 24.04 como cliente remoto.
  • Un usuario no root con privilegios sudo en ambos.
  • Resolución de nombres entre servidor y cliente (DNS o /etc/hosts). Amanda autentica por nombre de host.

En la guía, el servidor se llama backup01.example.com y el cliente web01.example.com. La configuración de copias se llamará DailySet1.

Cómo funciona Amanda en Ubuntu

Conviene conocer tres detalles del empaquetado de Ubuntu antes de empezar:

  • Amanda se ejecuta con el usuario de sistema backup (UID 34), cuyo directorio personal es /var/backups.
  • Los permisos de acceso entre máquinas se definen en /etc/amandahosts (enlazado como /var/backups/.amandahosts).
  • El demonio de cliente amandad lo lanza inetd en el puerto TCP 10080 con autenticación bsdtcp. El paquete añade la entrada a /etc/inetd.conf automáticamente.

Paso 1: Instalar el servidor Amanda

En backup01, instala el servidor y el cliente (el servidor también se respaldará a sí mismo):

sudo apt update
sudo apt install amanda-server amanda-client

La instalación incluye openbsd-inetd. Comprueba que el puerto de Amanda está escuchando:

sudo ss -tlnp | grep 10080
LISTEN 0      128          0.0.0.0:10080      0.0.0.0:*    users:(("inetd",pid=1812,fd=5))

Paso 2: Crear los directorios de trabajo

Amanda necesita un directorio para las cintas virtuales, un disco de retención donde los clientes vuelcan los datos antes de escribirlos en cinta, y un directorio para el estado de cada configuración. Todos deben pertenecer al usuario backup:

sudo mkdir -p /srv/amanda/vtapes/DailySet1 /srv/amanda/holding
sudo mkdir -p /var/lib/amanda/DailySet1/index /var/lib/amanda/gnutar-lists
sudo mkdir -p /etc/amanda/DailySet1
sudo chown -R backup:backup /srv/amanda /var/lib/amanda/DailySet1 /var/lib/amanda/gnutar-lists /etc/amanda/DailySet1

/var/lib/amanda/gnutar-lists es donde GNU tar guarda el estado de las copias incrementales; en un cliente remoto también hará falta crearlo.

Paso 3: Escribir amanda.conf

Crea el archivo principal de la configuración:

sudo -u backup nano /etc/amanda/DailySet1/amanda.conf

Añade este contenido:

org      "DailySet1"
mailto   "root"
dumpuser "backup"

inparallel 4
netusage   100000 Kbps

dumpcycle    7 days
runspercycle 7
tapecycle    8 tapes
runtapes     1

infofile "/var/lib/amanda/DailySet1/curinfo"
logdir   "/var/lib/amanda/DailySet1"
indexdir "/var/lib/amanda/DailySet1/index"

define changer vtapes {
    tpchanger "chg-disk:/srv/amanda/vtapes/DailySet1"
    property "num-slot" "10"
    property "auto-create-slot" "yes"
}
tpchanger "vtapes"

define tapetype VTAPE {
    comment "Cinta virtual en disco"
    length 20 gbytes
}
tapetype "VTAPE"

labelstr  "^DailySet1-[0-9][0-9]*$"
autolabel "DailySet1-%%%" empty

holdingdisk hd1 {
    directory "/srv/amanda/holding"
    use 10 gbytes
}

define application-tool app_amgtar {
    plugin "amgtar"
    property "GNUTAR-PATH" "/usr/bin/tar"
}

define dumptype gtar-comp {
    program "APPLICATION"
    application "app_amgtar"
    auth "bsdtcp"
    compress client fast
    index yes
}

Los valores más importantes:

  • dumpcycle 7 days y runspercycle 7: cada sistema de archivos recibe al menos una copia completa por semana y hay una ejecución diaria. El planificador decide qué día toca completa y qué días incremental para equilibrar el volumen.
  • tapecycle 8 tapes: número de cintas en rotación. Debe ser mayor que runspercycle para que siempre haya al menos una completa anterior disponible.
  • chg-disk con auto-create-slot: crea las ranuras de cinta virtual como subdirectorios de /srv/amanda/vtapes/DailySet1.
  • autolabel: etiqueta automáticamente las cintas vacías como DailySet1-001, DailySet1-002, etc.
  • gtar-comp: tipo de volcado que usa GNU tar mediante amgtar, comprime en el cliente y guarda un índice de archivos para poder restaurar selectivamente.

Paso 4: Definir la lista de discos

disklist indica qué directorios de qué máquinas se respaldan y con qué tipo de volcado. El formato es host directorio dumptype:

sudo -u backup nano /etc/amanda/DailySet1/disklist
localhost /etc      gtar-comp
localhost /home     gtar-comp
localhost /var/www  gtar-comp

Autoriza al usuario backup del propio servidor a lanzar copias y a root a restaurar. Edita /etc/amandahosts:

sudo nano /etc/amandahosts
localhost backup amdump
localhost root amindexd amidxtaped

La primera línea permite al servidor ejecutar volcados contra el cliente local. La segunda permite a root usar amrecover contra los servicios de índice y cinta.

Por último, configura el cliente local para que amrecover sepa a qué servidor preguntar:

sudo nano /etc/amanda/amanda-client.conf
conf         "DailySet1"
index_server "localhost"
tape_server  "localhost"
auth         "bsdtcp"

Paso 5: Comprobar la configuración con amcheck

amcheck valida el servidor, las cintas y cada cliente de la lista. Ejecútalo siempre como backup:

sudo -u backup amcheck DailySet1
Amanda Tape Server Host Check
-----------------------------
Holding disk /srv/amanda/holding: 48 GB disk space available, using 10 GB
slot 1: contains an empty volume
Will write label 'DailySet1-001' to new volume in slot 1.
NOTE: skipping tape-writable test
NOTE: host info dir /var/lib/amanda/DailySet1/curinfo/localhost does not exist
NOTE: it will be created on the next run.
NOTE: index dir /var/lib/amanda/DailySet1/index/localhost does not exist
NOTE: it will be created on the next run.
Server check took 0.412 seconds

Amanda Backup Client Hosts Check
--------------------------------
Client check: 1 host checked in 2.108 seconds.  0 problems found.

Las notas sobre directorios que no existen son normales antes de la primera copia. Lo importante es 0 problems found.

Paso 6: Ejecutar la primera copia

Lanza amdump como backup. La primera ejecución hace copia completa de todo:

sudo -u backup amdump DailySet1

El comando no muestra progreso y termina cuando acaba la copia. Mientras se ejecuta, puedes seguir el estado desde otra terminal:

sudo -u backup amstatus DailySet1

Al terminar, Amanda envía un informe a root por correo. También puedes consultar el historial de copias de un disco:

sudo -u backup amadmin DailySet1 find localhost /etc
date                host      disk lv storage   pool      tape or file   file part status
2026-09-25 01:30:02 localhost /etc  0 DailySet1 DailySet1 DailySet1-001     1  1/1 OK

El nivel 0 es una copia completa. Las siguientes ejecuciones mostrarán niveles 1 o superiores (incrementales) y, dentro de cada ciclo, una nueva completa.

Paso 7: Programar las copias

Amanda no tiene demonio propio de planificación; se programa con cron en la cuenta de backup. Edita su crontab:

sudo crontab -u backup -e

Añade estas dos líneas:

0 16 * * * /usr/sbin/amcheck -m DailySet1
30 1 * * * /usr/sbin/amdump DailySet1

A las 16:00 amcheck -m revisa la configuración y solo envía correo si encuentra problemas, dejando margen para corregirlos antes de la copia de la 01:30. Asegúrate de que el correo de root llega a un buzón que alguien lea, por ejemplo con un alias en /etc/aliases.

Paso 8: Restaurar archivos con amrecover

amrecover se ejecuta como root en el cliente y restaura en el directorio actual. Restaura /etc/ssh en una carpeta temporal:

sudo mkdir -p /tmp/amanda-restore
cd /tmp/amanda-restore
sudo amrecover DailySet1

Dentro de amrecover:

sethost localhost
setdisk /etc
ls
add ssh
extract

extract muestra la cinta virtual que necesita y pregunta si continuar; responde Y en las dos confirmaciones. Después sal con quit y compara:

sudo diff -r /etc/ssh /tmp/amanda-restore/ssh && echo "Restauración correcta"
Restauración correcta

Para restaurar una fecha concreta, usa setdate AAAA-MM-DD antes de add.

Paso 9: Añadir un cliente remoto

En web01, instala solo el cliente y crea el directorio de estado de GNU tar:

sudo apt update
sudo apt install amanda-client
sudo mkdir -p /var/lib/amanda/gnutar-lists
sudo chown backup:backup /var/lib/amanda/gnutar-lists

Autoriza al servidor en /etc/amandahosts del cliente:

sudo nano /etc/amandahosts
backup01.example.com backup amdump

Permite el puerto 10080 solo desde el servidor:

sudo ufw allow from backup01_ip to any port 10080 proto tcp

En el servidor, añade el cliente a /etc/amanda/DailySet1/disklist:

web01.example.com /etc     gtar-comp
web01.example.com /var/www gtar-comp

Comprueba de nuevo la configuración desde el servidor:

sudo -u backup amcheck DailySet1
Client check: 2 hosts checked in 2.531 seconds.  0 problems found.

La próxima ejecución de amdump incluirá a web01. Si quieres poder restaurar desde el propio cliente con amrecover, añade web01.example.com root amindexd amidxtaped a /etc/amandahosts del servidor, crea /etc/amanda/amanda-client.conf en el cliente apuntando index_server y tape_server a backup01.example.com, y abre el puerto 10080 del servidor para el cliente.

Solución de problemas

amcheck devuelve access as backup not allowed from .... La línea de /etc/amandahosts del cliente no coincide con el nombre con el que llega el servidor. Amanda resuelve la IP de origen por DNS inverso, así que el nombre de la línea debe ser el que devuelve esa resolución. Revisa también que el archivo tenga permisos 600 y pertenezca a backup.

selfcheck request failed: Connection refused. inetd no está escuchando en el cliente o el cortafuegos bloquea el 10080. Comprueba con sudo ss -tlnp | grep 10080 y sudo ufw status.

No acceptable volumes found o taper: no-tape. No hay cintas virtuales disponibles: revisa que /srv/amanda/vtapes/DailySet1 pertenezca a backup y que autolabel esté presente. Si una ejecución no pudo escribir en cinta, los datos quedan en el disco de retención y puedes pasarlos con sudo -u backup amflush DailySet1.

La copia de un disco falla con errores de tar. Consulta los registros de la ejecución en /var/lib/amanda/DailySet1/ y los de depuración del cliente en /var/log/amanda/.

Conclusión

Tienes un servidor Amanda en Ubuntu 24.04 que respalda cada noche el propio servidor y un cliente remoto sobre cintas virtuales, con un ciclo semanal de copias completas repartidas, comprobación diaria con aviso por correo y restauración verificada con amrecover. Como siguientes pasos, puedes cifrar los volcados con el dumptype encrypt-fast de las plantillas en /usr/share/amanda/template.d/, copiar las cintas virtuales a un segundo destino con amvault o sincronizar /srv/amanda/vtapes a un almacenamiento externo.