Резервное копирование

Резервное копирование сервисов, чтобы данные никогда не были потеряны

Зачем нужно резервное копирование (backups)

Когда ваш сервис сломался, но ещё вчера он работал, у вас есть два варианта действий:

  • Потратить некоторое время на чтение журналов и отладку того, что пошло не так. Сервис в это время будет оставаться не рабочим, и возможно, некоторые данные уже безвозвратно утеряны;
  • Откатить сервис до рабочего состояния и затем отлаживать в более спокойном темпе. Надеясь, что это была просто солнечная вспышка или сбой в Матрице.

Второй вариант, экономящий нервы, регулярное, а ещё лучше — автоматическое резервное копирование.

Дополнительным преимуществом резервного копирования является возможность переноса сервиса с одной машины на другую с минимальными трудностями. Это полезно, к примеру, в случае пожара в центре обработки данных, если ваш серверный провайдер выкуплен другой корпорацией или если акционеры решили, что наконец-то пришло время получать больше прибыли.

Мы рассмотрим основные условия и порядок использования системы резервного копирования SelfPrivacy.

Что такое моментальный снимок (snapshot)?

SelfPrivacy не создает резервных копий всей машины. Вместо этого сохраняются данные каждого сервиса. Снимком называется состояние файлов сервиса, сделанное в определенный момент времени. В интерфейсе приложения можно увидеть, что снимок имеет дату создания, идентификатор и название сервиса, который он резервирует.

Когда происходит резервное копирование?

Снимок создается в трёх случаях:

  • По ручной команде пользователя;
  • Автоматически через определенные промежутки времени, если включена функция автоматического резервного копирования;
  • В качестве меры предосторожности, перед восстановлением сервиса на месте.

Как хранятся данные?

Резервные копии сервисов хранятся в зашифрованном виде в облаке на выбор пользователя. В настоящий момент мы поддерживаем Backblaze, но в дальнейшем планируем добавить и других провайдеров.

Все данные сервисов шифруются локальным секретным ключом, который облако никогда не получит. Для передачи зашифрованных данных мы используем Restic.

В таких облаках, как Backblaze, есть возможность запретить немедленное удаление данных. Приложение SelfPrivacy использует эту опцию, чтобы в случае взлома сервера данные не могли быть удалены.

Список моментальных снимков

При просмотре списка доступных резервных копий следует учитывать два фактора:

  • В целях повышения производительности список кэшируется. Если в нем отсутствуют некоторые снимки, которые, по вашему мнению, должны там быть, перезагрузите список, чтобы он обновился;
  • Если вы удалите некоторые снимки, они исчезнут из списка, но в течение некоторого ограниченного времени их можно будет восстановить с помощью интерфейса вашего облака.

Восстановление моментального снимка

При восстановлении моментального снимка сервис останавливается, а все его файлы восстанавливаются до состояния, в котором они находились на момент создания снимка. Это можно сделать двумя способами.

Самый безопасный и используемый по умолчанию — загрузить снимок полностью, убедиться, что данные не повреждены, и заменить сервисные файлы, файлами из снимка. Недостатком этого способа является то, что для хранения снимка необходимо дополнительное место.

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

Перед попыткой восстановления приложение проверяет наличие свободного места.

Забывание моментального снимка

Забывание делает снимок недоступным, но его можно восстановить из облачного пользовательского интерфейса в течение некоторого времени (по умолчанию 30 дней для Backblaze).

Автоматическое резервное копирование

Если задать период автоматического резервного копирования, то оно будет производиться регулярно, и работать для всех сервисов.

Обратите внимание, что резервное копирование для каждого сервиса происходит независимо. Если резервное копирование сервисов A и B выполняется автоматически каждый день утром, а затем в полдень вручную сделать резервную копию сервиса B, то следующее резервное копирование сервиса A будет выполняться утром, как обычно, а резервное копирование сервиса B будет выполняться в полдень.

Если отключить автоматическое резервное копирование, то производится оно не будет.

Восстановление после того как кто-то удалил все снимки

  • Перейдите непосредственно в интерфейс Backblaze/другого облака;
  • Откатите состояние ведра до состояния, предшествовавшего удалению;
  • Откройте приложение SelfPrivacy;
  • Обновите список копий;
  • Восстановите моментальный снимок обычным способом.

Устранение неполадок при резервном копировании

  • Если вы подозреваете, что список моментальных снимков неточен, попробуйте обновить список копий.
  • Если восстановление на месте не удалось, убедитесь, что облако доступно и аккаунт не заблокирован, а затем попробуйте восстановить либо снимок, который вы пытались восстановить, либо снимок, сгенерированный автоматически перед восстановлением.
  • Если на диске не хватает места для безопасного восстановления, попробуйте второй вариант восстановления: восстановить на месте
Изменено 08.04.2024: fix(ru): reorder toc (294d527)