Cloud Boxi

Бэкап, который ни разу не восстановили, не считается

Первая честная проверка показала, что моя копия хорошо защищена, в том числе от меня. Теперь раз в месяц сервер сам восстанавливает часть данных и сверяет их с оригиналом.

Полгода бэкапы работали без единой ошибки. Потом я решил проверить, что будет, если коробка сгорит. Взял старый ноутбук, поставил 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 минут, и это число мне важнее любого зелёного статуса.

Главный вопрос к бэкапу звучит не «копия есть?», а «сколько времени мне потребуется, чтобы открыть файл, если сервера больше нет?». Ответ можно получить, только попробовав.