Restic — консольный инструмент резервного копирования на Go. Выделяется среди конкурентов: каждый бэкап шифруется AES-256, данные дедуплицируются на уровне содержимого (content-defined chunking), поддерживается большое число бэкенд-хранилищ. Идеален для offsite-бэкапов VPS.
Как работает
Restic разбивает файлы на переменные по размеру блоки (chunks) — примерно 1 МБ. Каждый чанк хешируется SHA-256. Если чанк уже существует в репозитории (из предыдущего бэкапа), он не загружается снова. Это обеспечивает инкрементальное хранение при полном бэкапе интерфейсе: каждый restic backup создаёт «снапшот» — полную логическую копию, но физически хранит только новые чанки.
Шифрование: restic шифрует данные и метаданные до записи в бэкенд. Ключи производятся из пароля через scrypt. Без пароля — нет доступа к данным даже для владельца бэкенда (S3-провайдер не видит содержимое).
Базовые команды:
restic -r s3:s3.amazonaws.com/bucket-name init — создать репозиторий.
restic -r s3:... backup /var/www /etc — создать снапшот.
restic -r s3:... snapshots — список снапшотов.
restic -r s3:... restore latest --target /restore — восстановить.
restic -r s3:... forget --keep-daily 7 --keep-weekly 4 --prune — политика хранения.
История
Restic создан Александром Нойманном (Alexander Neumann) в 2014 году. Написан на Go — один из первых широко используемых Go-инструментов для администрирования. Версия 0.9 (2018) добавила поддержку AWS S3. Версия 0.16 (2023) принесла значительные улучшения производительности. BorgBackup (2015) — схожий инструмент с лучшим сжатием, но только для SSH-бэкендов.
Restic: продвинутые сценарии
Restic snapshots позволяют восстановить файловую систему на любой момент времени из истории бэкапов. restic snapshots показывает все снимки с временными метками. restic restore
Дедупликация: Restic разбивает файлы на chunks с переменным размером (content-defined chunking, CDC). Одинаковые chunks между разными файлами и снапшотами хранятся один раз. Типичное сжатие на серверных данных: первый бэкап — 100%, ежедневные инкременты — 1-5% от изменений. Шифрование: AES-256 + Poly1305-AES — все данные в репозитории зашифрованы, включая метаданные. Ключ выводится из пароля через PBKDF2 с 10 000 итераций.
На что обращать внимание
Restic не сжимает данные по умолчанию (только дедуплицирует) — для медиафайлов экономии нет, для текстовых данных лучше использовать --compression max (добавлено в 0.14). Репозиторий Restic нельзя читать без restic CLI — это не просто директория с файлами. Для MySQL/PostgreSQL лучше создавать дамп через mysqldump/pg_dump, а потом бэкапить дамп через Restic — горячий бэкап файлов базы ненадёжен.
Restic в production
Restic — современный инструмент бэкапа на Go: шифрование (AES-256), дедупликация, атомарные операции. Установка на Linux: apt install restic или скачать бинарник. Инициализация: restic init --repo s3:s3.amazonaws.com/bucket-name. Бэкап: restic backup /var/www /etc. Добавьте в crontab: ежедневный бэкап на VPS. Восстановление: restic restore latest --target /tmp/restore. Ротация: restic forget --keep-daily 7 --keep-weekly 4 --prune. Off-site: поддерживает S3, SFTP, rclone, Backblaze B2. Шифрование паролем — пароль не теряйте: без него бэкап расшифровать невозможно.