IPFS: полнота и долговременное хранение
Архив содержит много блоков, но оператор должен знать, что именно сохранено и как долго оно будет доступно. В уроке подготовим опись выпуска, которая связывает корни, файлы, формат архива и независимые копии. Она помогает отличить действительно восстановимый набор от большого файла с неизвестным содержимым.
Архивы не создаются и не читаются. Контрольные суммы пока не вычислены. Все записи являются моделью досье для будущего разрешённого исполнения.
Несколько уровней полноты
Полнота исходников означает, что редакция сохранила Markdown и зависимости сборки. Полнота файлового выпуска означает наличие объявленных HTML, стилей и изображений. Полнота DAG означает наличие необходимых блоков выбранного представления. Полнота CAR-копии означает, что этот набор действительно содержится в сохранённом контейнере.
Эти уровни связаны, но не взаимозаменяемы. Можно иметь все исходники и не суметь повторить старые байты из-за потерянной версии генератора. Можно иметь готовые файлы, но получить другой CID при ином профиле импорта. Можно иметь корни без зависимостей.
Для библиотеки сохраняем опись каждого уровня. Тогда после сбоя оператор знает, что способен восстановить сразу и какой этап потребует дополнительной работы. Не объявляем всё «полным резервом» по одному размеру архива.
Собственная запись архива
{
"releaseId": "course-17-edition-1",
"rootCid": "ROOT_CID",
"manifestSha256": "TO_BE_COMPUTED",
"importProfile": "library-unixfs-v1",
"archiveFormat": "car-v1",
"archiveSha256": "TO_BE_COMPUTED",
"coverage": "full-release-dag"
}
Это формат приложения. Поле coverage является заявлением, которое должно получить основание при будущей сверке. Само написание строки не доказывает полноту. В отчёте рядом сохраняется метод и состояние такой сверки.
Архив может также содержать список ожидаемых файлов и их размеров. Он помогает понять, чего не хватает при восстановлении. Для больших наборов опись не обязана показывать все блоки в публичной статье, но внутренний инструмент должен иметь достаточные сведения для обработки.
Сохранённые байты
Файловая контрольная сумма подтверждает, что копия архива соответствует известным байтам. Если известный исходный архив уже неполный, совпадение не исправит ситуацию. Поэтому проверка целостности и проверка состава разделяются.
Для зашифрованного архива дополнительно нужен доступ к ключу и формат расшифрования. Открытая опись может сообщать версию контейнера без секрета. Потерянный ключ превращает исправный файл в практически недоступную копию.
При нескольких копиях не достаточно записать три пути, если они находятся на одном устройстве. Независимость определяется причинами отказа и правами. Опись хранит реальные места, ответственных и процедуру получения, не раскрывая чувствительные секреты публично.
Срок и формат
Долговременное хранение требует периодической оценки носителя и доступности инструментов. Формат с открытой спецификацией помогает, но не гарантирует, что конкретный файл останется читаемым без заботы. Для восстановления нужен поддерживаемый путь получения байтов и их интерпретации.
Версии импортёра и генератора также архивируются в своей достаточной форме. Необязательно навсегда хранить все установленные пакеты без цели, но нужно сохранить воспроизводимый профиль и необходимые исходные зависимости. Если зависимость исчезнет, документ должен объяснять альтернативный маршрут.
Смена носителя не меняет выпуск, если сохраняются байты и опись. Если контейнер преобразуется в другую форму, файловая контрольная сумма меняется и создаётся новая запись архива, связанная с прежним содержимым. Это честная миграция, а не повреждение по умолчанию.
Исправления описи
Ошибочный путь хранителя можно исправить во внешнем редакционном документе. Если опись была включена в неизменный опубликованный манифест, изменение её байтов создаёт другой объект. Поэтому операционные сведения о текущих местах разумно отделять от состава выпуска.
Публичный манифест сообщает, что должно быть получено. Внутренняя опись сообщает, где это сейчас хранится и каким образом восстановить. Такое разделение уменьшает необходимость менять криптографическое объявление при каждом переезде поставщика.
При обнаружении неполной копии статус становится ограниченным, а не удаляется незаметно. Указывается, какие зависимости отсутствуют и какие источники могут их предоставить. Другой оператор должен увидеть риск до прекращения единственного полного хранителя.
Полнота имеет конкретную цель
Назовём три уровня архивной готовности в нашей модели. На первом есть только корневой блок каталога. Он может позволить узнать имена или дальнейшие ссылки, но не восстановить уроки. На втором сохранён путь к манифесту и сам манифест; читатель способен прочитать объявленный состав, но ещё не все материалы. На третьем есть весь необходимый набор для восстановления выпуска без обращения к прежнему источнику. Эти прикладные уровни не заменяют формат CAR, а объясняют цель описи.
Если архив содержит только второй уровень, отсутствие сети при восстановлении второго урока закономерно приведёт к незавершённости. Это не обязательно повреждение сохранившихся блоков. Проблема в охвате резервирования. Поэтому отчёт должен различать неправильные байты, отсутствие необходимой части и внешнюю зависимость, которая не включалась в договор. Слова «архив открывается» недостаточно для вывода, что весь курс переживёт потерю исходного хранителя.
Внешний видеофайл или платёжная услуга также могут находиться за границей выпуска. Полная опись наших локальных HTML-файлов не обещает сохранить их будущие ответы. Если нужно архивное воспроизведение учебного примера, необходимые статические зависимости включаются или отдельно сохраняются по своей политике. Для серверной функции описывается ограничение. Скриншот страницы способен показать внешний вид в момент наблюдения, но не заменяет архив байтов и исполняемую спецификацию зависимостей.
Долговременное хранение требует понятного формата, нескольких копий и возможности получить сведения об их составе. Редакторская исправленная опись не переписывает старую незаметно: сохраняются причина и связь с прежней записью. В текущем досье критерии готовы, а фактическая степень полноты пока не подтверждена исполнением. Такая честная граница помогает планировать восстановление и не называть будущую процедуру уже проверенным резервом.
Критерий независимого восстановления
Будущий разбор должен получить архив из независимого места, проверить контейнер, импортировать блоки, удержать нужный корень и восстановить объявленные файлы без обращения к прежнему поставщику. Затем сверяются SHA-256 манифеста и состав.
Сейчас это процедура, не выполненный результат. В частности, мы не утверждаем, что локальный архив пережил удаление исходного хранилища. Такие действия потребуют отдельного запроса и безопасной изолированной среды.
Открытый контейнер описан в CARv1, файловая структура — в UnixFS. После урока резерв имеет опись, степень полноты и способ независимого получения. Следующий шаг использует её при переезде к новому хранителю.