Подробный гайд: резервное копирование сервера на базе Альт Сервер (ALT Linux)

Пошаговый гайд по резервному копированию Альт Сервер: tar, rsync, BorgBackup. Автоматизация, восстановление, шифрование и лучшие практики защиты данных.

2026.05.03                  


Подробный гайд: резервное копирование сервера на базе Альт Сервер (ALT Linux)Подробный гайд: резервное копирование сервера на базе Альт Сервер (ALT Linux)

Важно:

«Альт Сервер» использует стандартную Linux-архитектуру (systemd, RPM/apt-rpm, ext4/XFS/Btrfs), поэтому подходы универсальны для большинства серверных дистрибутивов. В гайде учтены особенности ALT (пакетный менеджер apt, структура каталогов, стандартные пути).


1. Золотые правила резервного копирования

Правило Описание
3-2-1 3 копии данных, 2 разных носителя, 1 копия вне площадки (cloud/NAS/лента)
Бэкап без теста = отсутствие бэкапа Регулярно проверяйте восстановление в изолированной среде
Консистентность важнее скорости Для БД и файловых систем используйте транзакционные дампы или снапшоты
Шифрование обязательно Даже для локальных копий: утечка бэкапа = утечка всех данных

2. Подготовка сервера

2.1. Установка необходимых пакетов

sudo apt-get update
sudo apt-get install borgbackup rsync tar zstd cronie mailx

В ALT borgbackup, rsync, tar, zstd доступны в стандартных репозиториях. cronie и mailx пригодятся для автоматизации и уведомлений.

2.2. Создание целевого хранилища

sudo mkdir -p /backup/{full,incremental,borg-repo,logs}
sudo chown root:root /backup
sudo chmod 750 /backup

Рекомендация:

/backup должен находиться на отдельном диске/NAS, а не на системном разделе. Для продвинутой защиты используйте LUKS или сетевое хранилище с шифрованием.

2.3. Проверка места

df -h /backup
# Убедитесь, что свободного места ≥ 2x размера резервируемых данных

3. Что именно резервировать

Каталог / Сервис Почему важен Примечание
/etc Все системные и сервисные конфиги Часто забывают, но без него восстановление бессмысленно
/home, /srv, /opt, /var/www Пользовательские и прикладные данные Адаптируйте под вашу структуру
/var/lib/mysql, /var/lib/postgresql Базы данных Не бэкапьте напрямую! Используйте дампы
/boot Ядра, initramfs, загрузчик Критично при миграции или восстановлении на новое железо
Список пакетов Воспроизведение окружения rpm -qa > /backup/package-list-$(date +%F).txt
/var/log Опционально Часто занимает много места, можно синхронизировать отдельно

4. Выбор инструмента (3 рабочих варианта)

Вариант A: tar + zstd (простой, надёжный, подходит для стартовых сценариев)

Создание полного бэкапа:

sudo tar --zstd -cvf /backup/full/alt-server-$(date +%F).tar.zst \
  --exclude=/backup \
  --exclude=/proc \
  --exclude=/sys \
  --exclude=/dev \
  --exclude=/tmp \
  --exclude=/run \
  --exclude=/mnt \
  --exclude=/media \
  --exclude=/swapfile \
  --exclude=/lost+found \
  /

Проверка архива:

tar --zstd -tvf /backup/full/alt-server-$(date +%F).tar.zst | head -20

Вариант B: rsync (инкрементальное зеркалирование, подходит для быстрой синхронизации)

sudo rsync -aAXv --delete --exclude='/backup' \
  --exclude='/proc' --exclude='/sys' --exclude='/dev' \
  --exclude='/tmp' --exclude='/run' --exclude='/mnt' \
  / /backup/incremental/

-aAX сохраняет права, ACL, расширенные атрибуты. --delete синхронизирует удаление файлов.

Вариант C: BorgBackup (рекомендуемый: дедупликация, шифрование, ротация)

# Инициализация репозитория (запросит пароль)
sudo borg init --encryption=repokey /backup/borg-repo

# Создание бэкапа
sudo borg create --stats --compression zstd,3 \
  /backup/borg-repo::alt-server-$(date +%F) \
  --exclude=/backup --exclude=/proc --exclude=/sys \
  --exclude=/dev --exclude=/tmp --exclude=/run \
  /

# Ротация: оставить 7 дневных, 4 недельных, 6 месячных
sudo borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
  /backup/borg-repo

Borg шифрует данные на лету. Пароль от репозитория обязательно сохраните в менеджере паролей. Без него данные не восстановить.


5. Резервное копирование баз данных (обязательно отдельно!)

MariaDB / MySQL

# Однократный дамп всех БД (с флагом консистентности)
sudo mysqldump --all-databases --single-transaction --routines --triggers \
  | zstd > /backup/full/db-mysql-$(date +%F).sql.zst

# Для автоматизации создайте ~/.my.cnf (chmod 600)
# [mysqldump]
# user=root
# password=ваш_пароль

PostgreSQL

sudo -u postgres pg_dumpall | zstd > /backup/full/db-pg-$(date +%F).sql.zst

Дампы БД всегда делайте до файлового бэкапа, либо используйте LVM-снапшоты для гарантии консистентности.


6. Автоматизация и мониторинг

6.1. Systemd Timer (современная замена cron)

Создайте /etc/systemd/system/alt-backup.service:

[Unit]
Description=Daily ALT Server Backup
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/alt-backup.sh
Nice=15
IOSchedulingClass=idle

Создайте /usr/local/bin/alt-backup.sh:

#!/bin/bash
set -euo pipefail
LOG="/backup/logs/backup-$(date +%F).log"
exec > >(tee -a "$LOG") 2>&1

echo "[$(date)] Начало бэкапа"

# Дампы БД
mysqldump --all-databases --single-transaction --routines --triggers | zstd > /backup/full/db-mysql-$(date +%F).sql.zst
sudo -u postgres pg_dumpall | zstd > /backup/full/db-pg-$(date +%F).sql.zst

# Borg
sudo borg create --stats --compression zstd,3 \
  /backup/borg-repo::alt-server-$(date +%F) \
  --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/run /

sudo borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 /backup/borg-repo

echo "[$(date)] Завершено. Успешно."
# Отправка email (настроен через postfix/sendmail)
mail -s "ALT Backup $(date +%F) OK" admin@domain.com < "$LOG"

Сделайте исполняемым и включите таймер:

sudo chmod +x /usr/local/bin/alt-backup.sh
sudo systemctl daemon-reload
sudo systemctl enable --now alt-backup.timer

Таймер /etc/systemd/system/alt-backup.timer:

[Unit]
Description=Run ALT Server Backup Daily

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

6.2. Мониторинг

  • Проверяйте статус: systemctl status alt-backup.timer и journalctl -u alt-backup.service
  • Настройте алерты в Zabbix/Prometheus или через monit
  • Храните логи отдельно от бэкапов

7. Восстановление (самый важный этап)

7.1. Тестовое восстановление (обязательно раз в квартал)

  1. Разверните ВМ с Альт Сервером того же релиза (p10/p11)
  2. Загрузитесь с LiveCD/USB или используйте chroot
3. Восстановите системный архив:
   sudo tar --zstd -xvf /path/to/alt-server-YYYY-MM-DD.tar.zst -C /mnt/target
Или через Borg:
   sudo borg mount /backup/borg-repo::alt-server-YYYY-MM-DD /mnt/restore
   sudo rsync -aAX /mnt/restore/ /mnt/target/
4. Восстановите БД:
   zstd -dc /path/to/db-mysql-YYYY-MM-DD.sql.zst | mysql
   zstd -dc /path/to/db-pg-YYYY-MM-DD.sql.zst | sudo -u postgres psql
  1. Перезагрузите, проверьте сервисы, логи, доступность

7.2. Восстановление отдельных файлов

# Borg
borg extract /backup/borg-repo::alt-server-2026-05-01 etc/nginx/nginx.conf

# Tar
tar --zstd -xvf backup.tar.zst -C / etc/nginx/nginx.conf

8. Безопасность и архитектура хранения

Практика Реализация
Шифрование Borg repokey, LUKS для дисков, gpg -c для tar-архивов
Изоляция Отдельный VLAN, доступ по SSH-ключам, отключение публичных портов
Offsite rclone sync /backup remote:alt-backups (Backblaze, S3, Yandex Cloud с шифрованием)
Air-gap Еженедельная выгрузка на внешний SSD, хранение в сейфе
Доступ chmod 700 /backup/borg-repo, chown root:backupadmin

9. Чек-лист перед вводом в эксплуатацию

  • [ ] Бэкапы хранятся на отдельном носителе (не на системном диске)
  • [ ] Выполнено тестовое восстановление в изолированной среде
  • [ ] Дампы БД консистентны (флаги --single-transaction, остановка сервисов или снапшоты)
  • [ ] Настроена ротация (prune / cron cleanup)
  • [ ] Включено шифрование и сохранены ключи/пароли в менеджере паролей
  • [ ] Настроены уведомления об успешности/ошибках
  • [ ] Документирован план восстановления (DRP) с контактами и шагами
  • [ ] Проведён учебный сбой (отключение диска, удаление каталога, проверка восстановления)

Финальный совет:

Резервная копия ценна не в момент создания, а в момент аварии. Если вы не тестировали восстановление хотя бы раз в квартал, считайте, что бэкапов нет.