С чего начать Первые шаги трек · 15 ступеней
Linux Labs

restic — резервные копии с дедупликацией

4 мин restic 0.16

Инкрементальные шифрованные бэкапы со снимками; без пароля репозиторий не расшифровать, другого пути нет.

Шпаргалка

7 команд Версия для печати
  • restic init создать репозиторий, один раз
  • restic backup /path --tag daily сделать снимок
  • restic snapshots список снимков
  • restic restore latest --target /restore восстановить последний снимок
  • restic forget --keep-daily 7 --keep-weekly 4 --prune применить политику хранения
  • restic check проверить целостность репозитория
  • restic unlock снять зависшую блокировку

Обзор

restic делает инкрементальные бэкапы с дедупликацией и шифрованием. В отличие от rsync/tar, хранит историю снимков (snapshots) и не дублирует одинаковые блоки. Backend: каталог, SFTP (по SSH), S3 и др.

bash
export RESTIC_REPOSITORY=/backup/repo
export RESTIC_PASSWORD='секрет'   # без него не расшифровать — НЕ ТЕРЯЙ!
restic init                       # создать репозиторий (один раз)

Backend через URL репозитория: sftp:user@host:/backup, s3:https://....

Ключи

7

--prune у forget — не косметика: без него забытые снимки перестают быть видимыми, но занятые ими блоки остаются на диске, и место не освобождается. --tag при backup и фильтр --tag при snapshots/forget держат разные графики бэкапов (daily/weekly) в одном репозитории раздельными.

Ключ Что делает Пример
--tag TAG Пометить снимок тегом; фильтровать по нему в snapshots/forget. restic backup /data --tag daily
--keep-daily N Сколько последних ежедневных снимков сохранить при forget. restic forget --keep-daily 7
--prune Реально удалить данные забытых снимков, а не только снять с них метку. опасно restic forget --keep-daily 7 --prune
--target DIR Куда восстановить файлы при restore. restic restore latest --target /restore
--exclude-file FILE Список путей и шаблонов, которые не включать в снимок. restic backup /data --exclude-file=excl.txt
--read-data При check перечитать все данные, а не только метаданные — медленно, но надёжно. restic check --read-data
--one-file-system Не заходить на другие смонтированные файловые системы. restic backup / --one-file-system

Ничего не найдено. Попробуй запрос короче.

Рецепты

2

Бэкап и восстановление

bash
restic backup /etc /var/www                    # снимок
restic backup /data --exclude-file=excl.txt --tag weekly --one-file-system
restic snapshots                               # список (ID, дата, хост, пути, теги)
restic snapshots --tag weekly --host web1      # фильтр
restic restore latest --target /restore        # восстановить последний
restic restore <ID> --target /restore --include /etc/nginx   # частично
restic mount /mnt/backup                        # смонтировать и ходить по файлам (FUSE)
restic diff <ID1> <ID2>                         # что изменилось между снимками
restic ls latest /etc                           # список файлов в снимке

Обслуживание и расписание

bash
restic check                      # целостность (метаданные)
restic check --read-data          # + перечитать все данные (долго, но надёжно)
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune   # retention + чистка
restic stats                      # размер/дедупликация
restic unlock                     # снять зависшую блокировку

В cron/systemd-таймере — backup + forget --prune по расписанию. Креды лучше из --password-file/RESTIC_PASSWORD_FILE, а не в открытом виде.

Неполадки

5

Забыл RESTIC_PASSWORD

Репозиторий зашифрован — без пароля данные не восстановить. Храни пароль отдельно и надёжно (самый частый провал бэкапов). Можно добавить второй ключ: restic key add.

Бэкап медленный/большой первый раз

Первый снимок — полный, дальше только изменения (дедуп). Это нормально.

Репозиторий распух

restic forget --keep-* --prune применяет политику хранения и реально удаляет неиспользуемые блоки (--prune). Без --prune снимки «забываются», но место не освобождается.

locked repository

Прерванная операция оставила блокировку: restic unlock (убедись, что параллельный бэкап не идёт).

Проверка бэкапа

restic check (+ периодически --read-data) и тестовый restore — бэкап без проверенного восстановления не бэкап.

Опасно

forget --prune необратимо удаляет данные снимков, не подпадающих под политику хранения — без --prune снимки только скрываются из списка. Проверь условия --keep-* заранее (restic forget --keep-daily 7 --dry-run без --prune покажет, что будет забыто). Потеря RESTIC_PASSWORD равносильна потере всего репозитория: расшифровать данные без него нельзя, даже имея полный доступ к файлам на диске.

См. также

  • rsync — Эффективное копирование и бэкап — только изменения, по сети и локально.
  • tar — Создание и распаковка архивов tar/gz/xz; бэкап каталогов.
  • cron — Запуск задач по расписанию — классический cron и современные systemd-таймеры.
Загрузка…