linux-labs

Вики / Базовые команды

restic (бэкапы)

Дедуплицированные шифрованные бэкапы — репозиторий, снимки, восстановление, политика.

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

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

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

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                           # список файлов в снимке
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, а не в открытом виде.

Забыл RESTIC_PASSWORD

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

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

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

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

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

locked repository

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

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

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

export RESTIC_REPOSITORY=... RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init                                    # один раз
restic backup /path --tag daily                # снимок
restic snapshots ; restic restore latest --target /restore
restic forget --keep-daily 7 --keep-weekly 4 --prune   # retention
restic check ; restic unlock                   # целостность / снять лок

См. также