Restic и Borg: бэкапы которые реально работают
Restic и Borg: бэкапы которые реально работают
Бэкап, который вы не проверяли — это не бэкап, это иллюзия спокойствия. Rsync-скрипты в cron — любимый инструмент тех, кто ещё не терял данные. Restic и BorgBackup — современные инструменты с дедупликацией, шифрованием и встроенной верификацией. Разберём оба и поймём, когда что выбирать.
Что общего у Restic и Borg
Оба инструмента используют content-defined chunking — файлы режутся на блоки, блоки хешируются, одинаковые блоки хранятся один раз. Это называется дедупликацией. Практический результат: если у вас 100 ГБ данных с небольшими ежедневными изменениями, хранить 30 дней бэкапов может стоить всего 110−120 ГБ, а не 3 ТБ как при наивном копировании.
Оба шифруют данные на стороне клиента. Бэкап-сервер видит только зашифрованные блоки — даже если он скомпрометирован, данные в безопасности.
BorgBackup: классика с Pull-моделью
# Инициализировать репозиторий
borg init --encryption=repokey-blake2
user@backup-server:/backups/myhost
# Создать снапшот
borg create
user@backup-server:/backups/myhost::"{hostname}-{now:%Y-%m-%d}"
/home /etc /var/www
--exclude /home/*/.cache
--compression lz4
--stats
# Список снапшотов
borg list user@backup-server:/backups/myhost
# Восстановить
borg extract
user@backup-server:/backups/myhost::myhost-2026-03-20
home/petrov/important-file.txt
# Проверить целостность
borg check user@backup-server:/backups/myhost
Политика хранения:
borg prune
user@backup-server:/backups/myhost
--keep-daily=7
--keep-weekly=4
--keep-monthly=6
Restic: современный конкурент с поддержкой S3
Restic написан на Go, не требует установки на сервере, и поддерживает множество бэкенд-хранилищ из коробки.
# Инициализировать репозиторий на S3
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
restic -r s3:s3.amazonaws.com/my-bucket/backups init
# Создать снапшот
restic -r s3:s3.amazonaws.com/my-bucket/backups
backup /home /etc /var/www
--exclude-caches
# Список снапшотов
restic -r ... snapshots
# Восстановить конкретный файл
restic -r ... restore latest
--target /tmp/restore
--include /etc/nginx/nginx.conf
# Проверить данные
restic -r ... check --read-data-subset=10%
# Политика хранения
restic -r ... forget
--keep-daily 7 --keep-weekly 4 --keep-monthly 6
--prune
Borg vs Restic: что выбрать
- Borg: если вы делаете бэкапы на выделенный SSH-сервер, нужна зрелость и проверенность временем. Borgmatic (обёртка над Borg) делает конфигурацию ещё проще.
- Restic: если нужна поддержка S3, MinIO, Backblaze, Azure, SFTP — Restic выигрывает по гибкости. Плюс единый бинарник без зависимостей.
Автоматизация с проверкой
Самое важное — автоматически проверять бэкапы. Не просто создавать, но и убеждаться что они читаются:
#!/bin/bash
# /etc/cron.d/backup
0 2 * * * root restic -r s3:... backup /data &&
restic -r s3:... check --read-data-subset=5% ||
echo "BACKUP FAILED" | mail -s "ALERT: backup" ops@example.com
Мониторинг бэкапов
Подключите Healthchecks.io или аналог: бэкап-скрипт пингует URL при успешном завершении, если пинга нет — вам приходит алерт. Это простейший и надёжнейший способ мониторить бэкапы.
Restic с MinIO как бэкендом — отличная связка для self-hosted, у нас так работает уже полтора года без единой проблемы. Главное не забыть пароль от репозитория — без него данные не достать.