Полгода бэкапы работали без единой ошибки. Потом я решил проверить, что будет, если коробка сгорит. Взял старый ноутбук, поставил restic и попробовал получить файлы, представив, что доступа к домашнему серверу нет.
Что пошло не так
- Пароль от restic лежал только на сервере и в менеджере паролей, а база менеджера синхронизировалась через тот же сервер. Запасная копия у него на телефоне была, но я о ней просто не помнил.
- Адрес и пароль rest-server нигде, кроме сервера, записаны не были.
- Ключа SSH для VPS на ноутбуке не оказалось, а вход по паролю я заботливо отключил.
Сами данные были в полном порядке. Но добраться до них я смог только потому, что сервер на самом деле работал. С тех пор у меня есть бумажный лист, который лежит не дома: адрес VPS, пароли restic и rclone, инструкция на десять строк.
Что проверять
Простой restic check проверяет структуру репозитория, но не читает сами данные. Для этого нужен отдельный флаг:
restic check --read-data-subset=5%
Каждый месяц это проверяет случайные 5% данных, не скачивая терабайт. Такая проверка показывает, что блоки целы и расшифровываются.
Но и этого мало: надо убедиться, что восстанавливается именно то, что нужно. Поэтому скрипт restore-drill.sh раз в месяц забирает папку с документами с VPS и сравнивает её с оригиналом.
restic restore latest --target /var/tmp/drill --include /srv/data/docs
cmp /srv/data/docs/договор.pdf /var/tmp/drill/srv/data/docs/договор.pdf
Сверяются только файлы старше двух суток. Более свежие могли измениться после ночного снимка, и это не ошибка.
Посмотреть глазами
Удобнее всего просматривать копию через монтирование. Снимки появляются как обычные папки:
sudo mkdir -p /mnt/restic
restic mount /mnt/restic
ls /mnt/restic/snapshots/latest/srv/data/
Так можно быстро достать один файл, не восстанавливая ничего лишнего. Для этого нужен FUSE, на минимальной системе может не быть пакета fuse3.
Учебная тревога
Раз в год я повторяю полную проверку с чистого ноутбука и того самого бумажного листа. Условие одно: нельзя заходить на домашний сервер. Засекаю время до первого открытого файла. В прошлый раз ушло 25 минут, и это число мне важнее любого зелёного статуса.
Главный вопрос к бэкапу звучит не «копия есть?», а «сколько времени мне потребуется, чтобы открыть файл, если сервера больше нет?». Ответ можно получить, только попробовав.