Как работает Frost
Frost делает снимки ваших папок, разбивает файлы на зашифрованные блоки и отправляет только те блоки, которых ещё нет в хранилище.
#Коротко
- Обход. Frost проходит по папкам и пропускает всё, что есть в списке исключений. Файлы, у которых с прошлой копии не изменились ни размер, ни время изменения, повторно не читаются, пока кэш Frost содержит сведения обо всех их блоках.
- Разбиение. Изменённые файлы разбиваются на блоки примерно по 1 МиБ, причём места разреза определяет содержимое. Правка в середине большого файла затрагивает только соседние блоки.
- Шифрование. Каждый новый блок сжимается, если от этого он становится меньше, а затем шифруется вашим ключом.
- Отправка. В хранилище отправляются только блоки, которых там ещё нет.
- Сохранение снимка. Frost сохраняет список файлов и то, из каких блоков состоит каждый файл, как новый снимок.
- Проверка. Frost скачивает случайную выборку блоков и проверяет их.
#Снимки
Снимок фиксирует состояние ваших папок в момент копирования: каждый файл и каждую папку с содержимым, правами доступа и временем изменения. Каждый снимок полон сам по себе, поэтому любой из них можно восстановить без остальных.
Снимки используют общие блоки. Файл, который не менялся год, хранится один раз, сколько бы снимков его ни содержали. Поэтому много снимков почти не занимают лишнего места.
Если с прошлой копии ничего не изменилось, Frost не сохраняет новый снимок. Он сообщает, что папки уже скопированы.
Идентификаторы снимков выглядят так: maple-absurd-3f1c, то есть два слова и ещё четыре символа. Как выбрать снимок по идентификатору или по времени, рассказано в разделе Восстановление файлов.
Frost пока не умеет удалять старые снимки, поэтому все они остаются в хранилище. Не удаляйте вручную объекты из папки Frost в хранилище и не настраивайте автоматическое удаление объектов по сроку хранения. Снимки используют общие блоки, и удаление одного объекта может испортить сразу многие снимки.
#Ваш ключ
frost init создаёт на вашем компьютере случайный 256-битный ключ и показывает его в виде фразы восстановления из 24 слов. Ключ никогда не покидает компьютер. Всё, что отправляет Frost, сначала шифруется этим ключом, включая имена файлов и структуру папок.
Прочитать копии может любой, у кого есть фраза и доступ к хранилищу. Без фразы не может никто. Подробнее в разделе Фраза восстановления.
#Репозиторий
Frost хранит копии в одной папке хранилища, которая называется репозиторием. В ней лежат объекты четырёх видов:
| Объект | Что содержит |
|---|---|
frost.repo | Идентификатор репозитория и версию его формата |
chunks/ | Данные и списки ваших файлов в зашифрованном виде |
snapshots/ | Небольшой зашифрованный заголовок для каждого снимка: когда, на каком компьютере и для каких папок он сделан |
trees/ | В каких блоках лежит список файлов каждого снимка |
Имена объектов выглядят как случайные идентификаторы, поэтому тот, кто управляет хранилищем, никогда не видит имён ваших файлов. Что именно видно хранилищу, описано в разделе Безопасность и конфиденциальность.
На собственном сервере или локальном диске каждый объект хранится как файл с таким именем в папке репозитория. В S3-бакете он хранится как объект с тем же именем, поэтому репозиторий можно копировать между ними. Подробнее в разделе Перенос резервных копий.
#Локальный кэш
Frost ведёт в папке кэша на вашем компьютере учёт того, что уже отправлено, чтобы не перечислять всё хранилище при каждой копии. Этот учёт сверяется с хранилищем раз в неделю, при смене места хранения или после проверки, обнаружившей недостающие данные.
Потеря кэша не приводит к потере резервных копий. Если он пропадёт, следующая копия восстановит его по хранилищу и заново прочитает ваши файлы. Для восстановления файлов кэш не нужен совсем.
#Без фоновой службы
Frost не работает в фоне. Автоматические копии делают обычные задания в планировщике операционной системы (launchd, systemd, cron или Планировщик заданий): они запускают Frost, выполняют одну копию и завершаются. Подробнее в разделе Автоматическое резервное копирование.
#Самопроверка
После каждой копии, которая сохраняет снимок, Frost скачивает случайную выборку блоков и проверяет, что каждый расшифровывается и совпадает со своим идентификатором. Копия без изменений повторяет проверку, только если прошлой больше суток. Подробнее в разделе Проверка резервных копий.