OffshoreVps
Безопасность25 сент. 20266 мин чтенияАвтор: команда OffshoreVps

Резервное копирование VPS с помощью Restic или Borg

Зашифрованные резервные копии с дедупликацией на второй сервер: команды restic и borg, дампы баз данных, хранение, планирование и проверка восстановления.

Резервная копия, которую можно восстановить, — это разница между неприятным днём и потерей проекта. Идея изложена в базовом руководстве по резервному копированию VPS. Здесь мы идём дальше с restic и BorgBackup: двумя инструментами, которые делают зашифрованные резервные копии с дедупликацией на второй сервер или в объектное хранилище.

Окно терминала на VPS с командами для резервного копирования VPS с помощью restic или borg, начиная с «sudo apt install -y restic»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Почему restic или borg, а не простое копирование

  • Дедупликация. Сохраняются только изменённые данные, поэтому ежедневные снимки остаются небольшими.
  • Шифрование. Данные шифруются до того, как покинут ваш сервер.
  • Снимки. Можно восстановить состояние на любой из прошедших дней.
  • Проверка. Оба инструмента умеют проверять целостность репозитория.

Выберите что-то одно. Restic прост и работает со многими типами хранилищ, включая SFTP и S3-совместимые. Borg очень эффективен и работает по SSH с сервером, на котором установлен borg.

Куда отправлять копии

Никогда не храните единственную резервную копию на том же сервере. Используйте второй VPS в другой локации, S3-совместимое хранилище или storage box. Небольшой VPS с большим диском — недорогой вариант для резервных копий. См. тарифы VPS.

Restic: настройка

sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

Создайте файл с паролем, используя длинный случайный пароль, и храните его копию офлайн. Без этого пароля копии не восстановить.

restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Шаги этого руководства по порядку: 1. Почему restic или borg, а не простое копирование; 2. Куда отправлять копии; 3. Restic: настройка; 4. Базы данных требуют осторожности; 5. Настройте расписание; 6. Проверьте восстановление
Шаги этого руководства по порядку.

Borg: настройка

sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check

Экспортируйте и сохраните ключ репозитория с помощью borg key export.

Базы данных требуют осторожности

Не копируйте файлы работающей базы данных. Сначала сделайте дамп и копируйте его:

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz

Настройте расписание

Запускайте резервное копирование через таймер systemd или cron. Простая строка cron:

15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Настройте оповещение о сбое, например пинг мониторинга в конце скрипта.

Проверьте восстановление

restic restore latest --target /tmp/restore-test --include /etc/nginx
ls /tmp/restore-test

Время от времени проверяйте настоящее восстановление на запасной машине. Резервная копия, которую вы ни разу не проверяли, — это всего лишь надежда.