Amanda: сетевой бэкап для гетерогенной инфраструктуры

Amanda: обзор архитектуры сетевого бэкапа

Amanda (Advanced Maryland Automatic Network Disk Archiver) — open-source система сетевого резервного копирования, разработанная в Университете Мэриленда. Amanda поддерживает бэкап на диск (vtape), ленточные библиотеки, облачное хранилище (S3) и управляет расписанием, ротацией и верификацией автоматически.

Архитектура Amanda строится на модели клиент-сервер: Amanda Server (backup server) управляет расписанием, хранилищем и каталогом; Amanda Client устанавливается на каждую резервируемую машину и выполняет локальный дамп данных с отправкой на сервер. Связь по TCP/UDP (порты 10080-10083).

Ключевые преимущества Amanda: поддержка гетерогенных сред (Linux, Windows, macOS, сетевые устройства через скрипты), автоматическое планирование полных и инкрементальных бэкапов (Amanda сама решает, когда делать full dump), параллельный бэкап нескольких клиентов, встроенное шифрование и сжатие на стороне клиента.

Установка Amanda Server

Установка на Ubuntu/Debian с дисковым хранилищем (vtape):

# Установка Amanda Server
apt install -y amanda-server amanda-client

# Amanda работает от пользователя amandabackup
# Убедитесь, что пользователь создан:
id amandabackup
# uid=109(amandabackup) gid=114(disk)

# Создание каталогов хранилища
mkdir -p /backup/vtapes/slot{1..20}
mkdir -p /backup/holding
mkdir -p /etc/amanda/daily
chown -R amandabackup:disk /backup /etc/amanda/daily

Основной конфиг бэкап-набора (/etc/amanda/daily/amanda.conf):

org "CompanyBackup"
mailto "admin@company.ru"
dumpuser "amandabackup"

# Стратегия: Amanda автоматически чередует full/incremental
dumpcycle 7   # Полный цикл — 7 дней
runspercycle 7
tapecycle 20  # 20 виртуальных лент в ротации

# Хранилище — виртуальные ленты на диске
tpchanger "chg-disk:/backup/vtapes"
tapedev "file:/backup/vtapes"
labelstr "^daily-[0-9]+$"

# Holding disk — буфер перед записью на «ленту»
holdingdisk hd1 {
  directory "/backup/holding"
  use 50 Gb
  chunksize 1 Gb
}

# Параллелизм
inparallel 4
netusage 800 Kbps

# Сжатие и шифрование
define dumptype global {
  comment "Global settings"
  auth "bsdtcp"
  compress client fast
  # encrypt client
  # client_encrypt "/usr/sbin/amcryptsimple"
  # client_decrypt_option "-d"
}

Инициализация виртуальных лент

Перед первым запуском инициализируйте ленты (слоты):

# Маркировка всех 20 слотов
for i in $(seq 1 20); do
  su - amandabackup -c "amlabel daily daily-$i slot $i"
done

# Проверка
su - amandabackup -c "amtape daily show"
# slot   1: date X      label daily-1
# slot   2: date X      label daily-2
# ...

Настройка Amanda Client

На каждой резервируемой машине установите Amanda Client:

# На клиенте (Linux)
apt install -y amanda-client

# Файл доступа: разрешить серверу подключаться
# /etc/amanda/amanda-security.conf
amdump_server="backup-server.company.local"
amindexd_server="backup-server.company.local"
amidxtaped_server="backup-server.company.local"

# Или через .amandahosts
# /var/lib/amanda/.amandahosts
backup-server.company.local amandabackup amdump
backup-server.company.local amandabackup amindexd
backup-server.company.local amandabackup amidxtaped

chmod 600 /var/lib/amanda/.amandahosts
chown amandabackup:disk /var/lib/amanda/.amandahosts

На сервере зарегистрируйте клиента в файле дисков:

# /etc/amanda/daily/disklist
# hostname    diskname           dumptype
web-01.local  /                  comp-root
web-01.local  /var/www           comp-data
db-01.local   /var/lib/mysql     mysql-dump
file-01.local /srv/shares        comp-data
win-dc.local  //C/Windows/NTDS   comp-data

Типы дампов (dumptype)

Определение типов бэкапа в amanda.conf:

define dumptype comp-root {
  global
  comment "Root filesystem with compression"
  program "GNUTAR"
  compress client fast
  exclude list "/etc/amanda/exclude-root.list"
  priority high
}

define dumptype comp-data {
  global
  comment "Data directories"
  program "GNUTAR"
  compress client best
  priority medium
}

define dumptype mysql-dump {
  global
  comment "MySQL via script"
  program "APPLICATION"
  application "app-mysql"
  priority high
}

# Приложение для бэкапа MySQL
define application app-mysql {
  plugin "amgtar"
  property "PRE-DLE-BACKUP" "/etc/amanda/scripts/pre-mysql.sh"
  property "POST-DLE-BACKUP" "/etc/amanda/scripts/post-mysql.sh"
}

Бэкап баз данных

Amanda может бэкапить MySQL/PostgreSQL через скрипты pre/post или специализированные application плагины:

#!/bin/bash
# /etc/amanda/scripts/pre-mysql.sh
# Запускается перед бэкапом — создаёт дамп

DUMP_DIR="/var/lib/amanda/mysql-dumps"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $DUMP_DIR

# Дамп всех баз
mysqldump --all-databases --single-transaction \
  --routines --triggers --events \
  --result-file="$DUMP_DIR/all-databases.sql"

# Для PostgreSQL:
# su - postgres -c "pg_dumpall > $DUMP_DIR/pg-all.sql"

exit 0
#!/bin/bash
# /etc/amanda/scripts/post-mysql.sh
# Очистка после бэкапа
rm -f /var/lib/amanda/mysql-dumps/all-databases.sql
exit 0

В disklist указываем каталог с дампами:

db-01.local  /var/lib/amanda/mysql-dumps  mysql-dump

Запуск бэкапа и мониторинг

Amanda управляется набором команд, запускаемых от пользователя amandabackup:

# Проверка конфигурации
su - amandabackup -c "amcheck daily"
# Amanda Tape Server Host Check
# slot 3: read label ok
# Amanda Backup Client Hosts Check
# Client check: 4 hosts checked in 2.345 seconds, 0 problems found

# Запуск бэкапа вручную
su - amandabackup -c "amdump daily"

# Отчёт о последнем бэкапе
su - amandabackup -c "amstatus daily"
# или
su - amandabackup -c "amreport daily"

# Cron-задание для ежедневного бэкапа
crontab -u amandabackup -e
# 0 2 * * * /usr/sbin/amdump daily

Пример выхода amreport:

# Hostname     Disk          Level  Orig Kb  Out Kb  Comp%
# web-01       /             0      4521200  1234560  72.7
# web-01       /var/www      1       234100    89120  61.9
# db-01        mysql-dumps   0      1200300   345670  71.2
# file-01      /srv/shares   1       567800   234560  58.7

Автоматическое планирование уровней

Amanda автоматически выбирает уровень дампа (0 = full, 1-9 = incremental) для балансировки нагрузки. Алгоритм учитывает: последний full dump, объём изменений, доступное место на «ленте», время окна бэкапа. Администратор задаёт только dumpcycle (период полного цикла), а Amanda распределяет full-дампы равномерно:

# Посмотреть план бэкапа на сегодня
su - amandabackup -c "amcheck daily --exact-match"

# Принудительный full dump для конкретного хоста
su - amandabackup -c "amadmin daily force web-01.local /var/www"

# Следующий amdump сделает level 0 для этого DLE

Восстановление данных

Восстановление — самая важная часть любой системы бэкапа. Amanda предоставляет интерактивную утилиту amrecover:

# На клиенте, от root:
amrecover daily

# Интерактивная сессия:
amrecover> sethost web-01.local
amrecover> setdisk /var/www
amrecover> ls
# 2026-04-01  uploads/
# 2026-04-01  index.html
# 2026-04-03  config.php

amrecover> cd uploads
amrecover> add important-file.pdf
amrecover> add *.jpg
amrecover> extract
# Extracting files to /tmp/amanda-restore/...
# Restore finished.

Для неинтерактивного восстановления используйте amfetchdump:

# Извлечь бэкап хоста за конкретную дату
su - amandabackup -c "
amfetchdump daily web-01.local /var/www 20260407 | \
  tar xf - -C /tmp/restore/
"

# Список доступных бэкапов
su - amandabackup -c "amadmin daily find --sort hkDlpbfw"
# date       host          disk         level  tape
# 2026-04-07 web-01.local  /var/www     1      daily-15
# 2026-04-04 web-01.local  /var/www     0      daily-12

Бэкап Windows-хостов

Amanda поддерживает бэкап Windows через Amanda Client для Windows (Zmanda Windows Client) или через Samba:

# Вариант 1: через Samba (без установки клиента на Windows)
# На Amanda-сервере:
apt install -y smbclient

# /etc/amanda/daily/disklist
win-dc.local  //win-dc/C$  samba-share

# Dumptype для Samba
define dumptype samba-share {
  global
  program "GNUTAR"
  # Используем скрипт-обёртку для smbclient
  property "SAMBA-HOST" "win-dc.local"
  property "SAMBA-SHARE" "C$"
  property "SAMBA-USER" "backup-user"
  property "SAMBA-PASS" "/etc/amanda/.samba-pass"
}

# /etc/amanda/.samba-pass
# username=backup-user
# password=BackupPass123
chmod 600 /etc/amanda/.samba-pass
chown amandabackup:disk /etc/amanda/.samba-pass

Вариант 2 — установка Amanda Client на Windows (скачать с zmanda.com), который работает аналогично Linux-клиенту и поддерживает VSS (Volume Shadow Copy) для консистентных бэкапов файловой системы и состояния приложений (Exchange, SQL Server).

Шифрование и безопасность бэкапов

Для защиты бэкапов при хранении и передаче Amanda поддерживает шифрование на стороне клиента:

# Генерация GPG-ключа для шифрования
su - amandabackup -c "gpg --gen-key"
# Тип: RSA, Размер: 4096, Без пароля (для автоматизации)

# Экспорт открытого ключа на клиенты
su - amandabackup -c "gpg --export -a 'Amanda Backup' > /tmp/amanda-pub.key"

# amanda.conf — включение шифрования
define dumptype encrypted-data {
  global
  program "GNUTAR"
  compress client fast
  encrypt client
  client_encrypt "/usr/sbin/amcryptsimple"
  client_decrypt_option "-d"
}

# Для GPG-шифрования:
# client_encrypt "/usr/sbin/amgpgcrypt"
# client_decrypt_option "-d"

# Тест дешифровки:
su - amandabackup -c "
amfetchdump --decrypt daily web-01.local /var/www 20260407 | tar tf -
"

Также настройте сетевую безопасность: Amanda использует bsdtcp-аутентификацию по умолчанию, но для WAN-бэкапов рекомендуется ssh-транспорт (auth "ssh" в dumptype).

Часто задаваемые вопросы

Amanda проще в настройке и автоматически планирует уровни дампов (full/incremental) — администратор задаёт только dumpcycle. Bacula/Bareos требуют явного определения расписания для каждого уровня. Amanda лучше подходит для небольших и средних инфраструктур (до 100 хостов). Bacula/Bareos предпочтительны для крупных сред благодаря гибкости, поддержке пулов лент и продвинутому каталогу в PostgreSQL.

Да, Amanda поддерживает S3-совместимое хранилище через драйвер chg-s3. В amanda.conf: tpchanger "chg-multi:s3:bucket-name/prefix" с указанием AWS credentials. Также поддерживается MinIO, Wasabi и другие S3-совместимые хранилища. Amanda Enterprise (коммерческая версия от Zmanda) добавляет нативную интеграцию с Azure Blob, Google Cloud Storage и дедупликацию.

Используйте amverify daily — утилита читает каждую ленту/слот и проверяет целостность данных. Для проверки конкретного хоста: amfetchdump daily hostname /disk | tar tf - — если tar корректно читает архив, данные целы. Рекомендуется запускать amverify еженедельно по cron и регулярно (раз в месяц) выполнять тестовое восстановление на изолированную машину.

Правило: объём хранилища = суммарный объём данных клиентов × 1.5-2 × количество полных копий в ротации. Amanda использует инкрементальные бэкапы, поэтому реальное потребление зависит от скорости изменений. С компрессией (60-70% сжатие для текстовых данных) можно хранить 2-3 поколения full dump при хранилище, равном 3× объёму данных. Используйте amcheck daily — он предупредит если места не хватает.

Amanda не импортирует бэкапы из других систем — миграция означает начало бэкапов с нуля в Amanda. Подход: установите Amanda параллельно с существующей системой, настройте бэкап тех же хостов, дождитесь завершения первого полного цикла (dumpcycle), затем выполните тестовое восстановление. После успешной проверки отключите старую систему. Храните старые бэкапы минимум 30 дней после перехода.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#Amanda backup#сетевой бэкап#Amanda настройка#резервное копирование Linux#Amanda Enterprise#backup гетерогенная сеть#amrecover#amanda server
Комментарии 0

Оставить комментарий

загрузка...