Бэкапы Nextcloud по правилу 3-2-1

2 мин чтения

Своё облако делает вас единственным ответственным за данные. Никакая служба поддержки не вернёт случайно удалённый каталог и не восстановит умерший диск. RAID тоже не заменяет резервную копию: он переживёт отказ диска, но послушно повторит ошибочное удаление или работу шифровальщика.

Правило 3-2-1

Держите три копии данных на двух разных типах носителей, причём одну из них вне дома. Основная копия находится на сервере, вторая — на внешнем диске, третья — в удалённом хранилище или у родственников.

Схема 3-2-1: сервер, внешний диск и удалённая копия

Что входит в резервную копию

Полная копия Nextcloud состоит из четырёх частей:

Чтобы копия была согласованной, на время создания снимка переводите систему в режим обслуживания:

sudo -u www-data php occ maintenance:mode --on
pg_dump -U nextcloud -Fc nextcloud > /backup/nextcloud.dump
restic backup /var/www/nextcloud/config /srv/nextcloud-data /backup/nextcloud.dump
sudo -u www-data php occ maintenance:mode --off

В Docker те же команды выполняются через docker compose exec. Если остановка на время копирования неудобна, снимите снимок файловой системы средствами LVM или ZFS: тогда простой составит считаные секунды.

Почему restic

Restic шифрует данные на стороне клиента, хранит изменения блоками и умеет работать с локальным диском, SFTP и S3-совместимыми хранилищами. Поэтому копию можно смело отправлять чужому провайдеру. Пароль от репозитория храните отдельно от сервера: без него архив бесполезен. Срок хранения настраивается командой restic forget --prune, например семь ежедневных, четыре еженедельных и шесть ежемесячных снимков.

Проверка восстановления

Резервная копия, которую ни разу не восстанавливали, — лишь предположение. Раз в несколько месяцев поднимайте тестовую копию на отдельной машине или в виртуалке: восстановите файлы и базу, запустите Nextcloud и откройте несколько документов. Команда restic check проверит целостность репозитория, но только полное восстановление покажет, что вы не забыли важный файл и помните порядок действий.

Запишите этот порядок в короткую инструкцию и храните её вне сервера. В день настоящей аварии вы скажете себе спасибо.