Бэкап Linux сервера: rsync, Veeam Agent и стратегия 3-2-1
Бэкап — это последний рубеж обороны вашей инфраструктуры. Когда всё остальное не помогло — взлом, ransomware, ошибка администратора, аппаратный сбой — именно резервная копия спасает бизнес от катастрофы. По статистике, 60% компаний, потерявших данные, закрываются в течение 6 месяцев. В этом руководстве — все инструменты и стратегии бэкапа Linux-серверов: от простого rsync до enterprise-решения Veeam.
Что такое стратегия 3-2-1 и почему она обязательна?
Правило 3-2-1 — золотой стандарт резервного копирования:
- 3 копии данных: оригинал + 2 резервные копии
- 2 разных типа носителей: например, SSD сервера + NAS + облако
- 1 копия вне площадки: облако, удалённый сервер, или физический носитель в другом здании
Зачем нужны все три уровня:
- Локальный бэкап на NAS спасает от случайного удаления и сбоя диска, но не от пожара или ransomware (шифровальщик может зашифровать и NAS)
- Облачная копия защищает от физических катастроф, но восстановление может занять часы из-за скорости интернета
- Только комбинация даёт надёжную защиту от любого сценария
Какие данные нужно бэкапить на Linux сервере?
Определите, что критично для восстановления работоспособности:
- Конфигурация:
/etc/— все настройки сервисов - Данные приложений:
/var/www/,/var/lib/,/opt/ - Базы данных: дампы PostgreSQL, MySQL (отдельно от файлового бэкапа!)
- Домашние директории:
/home/ - Crontab:
/var/spool/cron/ - SSL-сертификаты:
/etc/letsencrypt/ - Docker volumes: именованные тома и docker-compose.yml
Что НЕ нужно бэкапить
/proc/,/sys/,/dev/— виртуальные файловые системы/tmp/— временные файлы/var/cache/— кеш пакетов (восстанавливается через apt)- Логи
/var/log/— по желанию, обычно не критичны
Как настроить бэкап через rsync?
rsync — базовый инструмент синхронизации файлов. Быстрый, надёжный, встроен в каждый Linux:
# Простой бэкап на локальный диск
rsync -avz --delete /var/www/ /backup/www/
# Бэкап на удалённый сервер через SSH
rsync -avz --delete -e "ssh -p 22 -i ~/.ssh/backup_key" \
/var/www/ backup@remote-server:/backup/web-server/www/
# Параметры:
# -a (archive) — сохраняет права, владельца, симлинки
# -v (verbose) — вывод процесса
# -z (compress) — сжатие при передаче
# --delete — удалять файлы на приёмнике, которых нет на источнике
Инкрементальные бэкапы через rsync + hardlinks
#!/bin/bash
# Скрипт: incremental-backup.sh
DATE=$(date +%Y-%m-%d)
LATEST="/backup/latest"
DEST="/backup/$DATE"
SRC="/var/www/"
rsync -avz --delete --link-dest=$LATEST $SRC $DEST
rm -f $LATEST
ln -s $DEST $LATEST
# Удаление бэкапов старше 30 дней
find /backup/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
Благодаря --link-dest неизменённые файлы создаются как жёсткие ссылки (hardlinks) и не занимают дополнительного места.
Как использовать Veeam Agent for Linux для полного бэкапа?
Veeam Agent for Linux — enterprise-решение для полного бэкапа физических и виртуальных серверов. Бесплатная версия покрывает базовые сценарии:
# Установка Veeam Agent for Linux
wget https://download2.veeam.com/veeam-release-deb_1.0_amd64.deb
dpkg -i veeam-release-deb_1.0_amd64.deb
apt update
apt install -y veeam
# Настройка через CLI
veeamconfig repository create --name "Local Backup" \
--location /backup/veeam
# Создание задания бэкапа
veeamconfig job create --name "Full System" \
--repoName "Local Backup" \
--backupallsystem
# Запуск бэкапа
veeamconfig job start --name "Full System"
# Расписание: каждый день в 02:00
veeamconfig schedule set --jobname "Full System" \
--at 02:00 --daily
Преимущества Veeam перед rsync
- Полный образ: бэкапит весь диск, включая загрузчик. Восстановление «голого» сервера (bare-metal recovery).
- Инкрементальные бэкапы: после первого полного бэкапа сохраняются только изменения
- Дедупликация и сжатие: экономия места в хранилище
- Гранулярное восстановление: можно восстановить отдельные файлы или всю систему
- Целостность: проверка целостности бэкапов
Как настроить бэкап через Borg Backup?
Borg — мощный инструмент с дедупликацией и шифрованием. Идеален для экономии места при бэкапе на удалённый сервер:
# Установка
apt install -y borgbackup
# Инициализация репозитория (с шифрованием)
borg init --encryption=repokey ssh://backup@remote-server/backup/borg-repo
# Создание бэкапа
borg create --stats --progress \
ssh://backup@remote-server/backup/borg-repo::{hostname}-{now} \
/etc /var/www /home /var/lib/postgresql \
--exclude '/var/cache' --exclude '*.tmp'
# Просмотр архивов
borg list ssh://backup@remote-server/backup/borg-repo
# Удаление старых архивов (оставить 7 daily, 4 weekly, 6 monthly)
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
ssh://backup@remote-server/backup/borg-repo
# Восстановление файла
borg extract ssh://backup@remote-server/backup/borg-repo::latest \
var/www/site/config.php
Borg обеспечивает дедупликацию на уровне блоков: если файл изменился на 1%, сохраняется только изменённый блок. Это даёт колоссальную экономию места при ежедневных бэкапах.
Как бэкапить базы данных PostgreSQL и MySQL?
Бэкап БД — это не просто копирование файлов. Нужен консистентный дамп:
# PostgreSQL
pg_dump -U postgres -Fc mydb > /backup/db/mydb_$(date +%Y%m%d).dump
pg_dumpall -U postgres > /backup/db/all_dbs_$(date +%Y%m%d).sql
# Восстановление
pg_restore -U postgres -d mydb /backup/db/mydb_20260324.dump
# MySQL/MariaDB
mysqldump -u root -p --all-databases --single-transaction \
> /backup/db/all_dbs_$(date +%Y%m%d).sql
# Восстановление
mysql -u root -p < /backup/db/all_dbs_20260324.sql
/var/lib/postgresql/ без остановки PostgreSQL может дать неконсистентную копию. Всегда используйте pg_dump или pg_basebackup для горячего бэкапа.Как бэкапить Docker-контейнеры и volumes?
# Бэкап именованного volume
docker run --rm -v myvolume:/data -v /backup:/backup \
alpine tar czf /backup/myvolume_$(date +%Y%m%d).tar.gz -C /data .
# Бэкап docker-compose.yml и .env
cp docker-compose.yml .env /backup/docker/
# Полный скрипт бэкапа Docker-стека
#!/bin/bash
BACKUP_DIR="/backup/docker/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# Останавливаем для консистентности (если допустимо)
docker compose stop
for vol in $(docker volume ls -q); do
docker run --rm -v $vol:/data -v $BACKUP_DIR:/backup \
alpine tar czf /backup/${vol}.tar.gz -C /data .
done
docker compose start
cp docker-compose.yml $BACKUP_DIR/
Как автоматизировать бэкапы через cron и systemd?
# Cron: ежедневный бэкап в 02:00
echo "0 2 * * * root /opt/scripts/backup.sh >> /var/log/backup.log 2>&1" \
> /etc/cron.d/daily-backup
# Systemd timer (предпочтительно)
# /etc/systemd/system/backup.service
[Unit]
Description=Daily Backup
After=network.target
[Service]
Type=oneshot
ExecStart=/opt/scripts/backup.sh
StandardOutput=journal
StandardError=journal
# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily at 02:00
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
# Активация
systemctl enable --now backup.timer
Мониторинг бэкапов
Бэкап без мониторинга — это бэкап Шрёдингера: вы не знаете, работает он или нет, пока не попытаетесь восстановиться. Решения:
- Скрипт отправляет статус в Telegram/email после каждого бэкапа
- Zabbix: мониторинг файла с датой последнего бэкапа
- Healthchecks.io: бэкап-скрипт «пингует» URL после успешного завершения
Как восстановить Linux сервер из бэкапа?
Сценарии восстановления:
Восстановление файлов (rsync, borg)
# rsync: просто скопируйте обратно
rsync -avz /backup/latest/etc/ /etc/
# borg: извлечение конкретных файлов
borg extract backup-repo::2026-03-24 etc/nginx/
Bare-metal восстановление (Veeam)
- Загрузитесь с Veeam Recovery Media (ISO)
- Укажите расположение бэкапа (локальный диск, NFS, Veeam repo)
- Выберите точку восстановления
- Восстановите на тот же или новый диск
Как настроить бэкап в облачное хранилище (S3)?
# restic — отличный инструмент для облачных бэкапов
apt install -y restic
# Инициализация репозитория в S3
export AWS_ACCESS_KEY_ID="your_key"
export AWS_SECRET_ACCESS_KEY="your_secret"
restic -r s3:s3.amazonaws.com/my-backup-bucket init
# Создание бэкапа
restic -r s3:s3.amazonaws.com/my-backup-bucket backup \
/etc /var/www /home \
--exclude-file=/opt/scripts/backup-exclude.txt
# Автоочистка (7 daily, 4 weekly, 12 monthly)
restic -r s3:s3.amazonaws.com/my-backup-bucket forget \
--keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
# Восстановление
restic -r s3:s3.amazonaws.com/my-backup-bucket restore latest \
--target /restore/ --include /var/www/
restic поддерживает S3-совместимые хранилища: Yandex Object Storage, Selectel, MinIO, Backblaze B2.
Заключение: бэкап — это страховка, которая окупается в первый же инцидент
Настройка бэкапов — не самая увлекательная задача, но одна из самых важных. Начните с rsync для файлов и pg_dump для баз данных, настройте cron, добавьте мониторинг. Когда инфраструктура вырастет — переходите на Borg или Veeam для дедупликации и bare-metal восстановления. И главное: следуйте правилу 3-2-1 и регулярно проверяйте восстановление. Бэкап, который не проверяли — не существует. А если нужна помощь с проектированием системы резервного копирования — обращайтесь в АйТи Фреш.
Инструменты: Veeam Agent for Linux, Borg Backup, restic
Часто задаваемые вопросы
Чем rsync лучше или хуже Veeam для бэкапа?
rsync — файловый бэкап, быстрый и простой, но не позволяет восстановить сервер целиком (bare-metal). Veeam делает полный образ диска с загрузчиком и позволяет восстановить сервер на голое железо за 15-30 минут. Для критичных серверов рекомендуется Veeam + rsync для отдельных данных.
Сколько места нужно для хранения бэкапов?
Правило: 2-3x от объёма данных для полного бэкапа с историей. При использовании дедупликации (Borg, Veeam, restic) — 1.2-1.5x. Для сервера с 100 ГБ данных заложите 200-300 ГБ для бэкапов с 30 точками восстановления.
Как правильно бэкапить базу данных PostgreSQL?
Используйте pg_dump для логического дампа или pg_basebackup для физического. Никогда не копируйте файлы /var/lib/postgresql/ при работающей БД — это даст неконсистентную копию. Для больших баз используйте pg_dump с форматом -Fc (custom) для сжатия и параллельного восстановления.
Как защитить бэкапы от шифровальщиков (ransomware)?
Храните бэкапы на отдельном сервере, к которому основной сервер не имеет прямого доступа. Используйте pull-модель: бэкап-сервер сам забирает данные. Включите immutable storage (S3 Object Lock) для облачных бэкапов. Держите одну offline-копию.
Что такое pull-модель бэкапа и почему она безопаснее?
В pull-модели бэкап-сервер подключается к основному серверу и забирает данные. Основной сервер не знает о бэкап-сервере и не имеет к нему доступа. Если основной сервер скомпрометирован — злоумышленник не сможет удалить или зашифровать бэкапы.
Как часто нужно проверять восстановление из бэкапа?
Минимум раз в квартал выполняйте тестовое восстановление на отдельный сервер. Автоматизируйте: скрипт разворачивает бэкап в тестовую VM, проверяет работу сервисов и отправляет отчёт. Без проверки вы не знаете, работают ли ваши бэкапы.
ООО «АйТи Фреш» возьмёт это на себя
Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.