Подробный гайд: резервное копирование сервера на базе Альт Сервер (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. Тестовое восстановление (обязательно раз в квартал)
- Разверните ВМ с Альт Сервером того же релиза (p10/p11)
- Загрузитесь с 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
- Перезагрузите, проверьте сервисы, логи, доступность
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) с контактами и шагами
- [ ] Проведён учебный сбой (отключение диска, удаление каталога, проверка восстановления)
Финальный совет:
Резервная копия ценна не в момент создания, а в момент аварии. Если вы не тестировали восстановление хотя бы раз в квартал, считайте, что бэкапов нет.