Восстановление автономного сайта
Как восстановить данные и медиа автономного сайта собственными инструментами провайдера. У Dee Wan нет сервиса резервного копирования. Команда проекта не проверяла эти действия на работающем развёртывании. Сначала отработайте их на временной копии, прежде чем полагаться на них при восстановлении.
Команды Wrangler ниже принадлежат Cloudflare. Их параметры и ограничения D1 сверены 2026-10-19 со справочником команд R2, руководством по импорту и экспорту D1 и справочником D1 Time Travel. Сам этот репозиторий запускает только wrangler d1 export (scripts/d1.ts).
Что восстанавливать
Заголовок раздела «Что восстанавливать»| Часть | Где хранится | Чем восстанавливается |
|---|---|---|
| Код | Ваш репозиторий | Git. Нужную версию определяет коммит. |
| Генерируемые строки контента | Генерируемые таблицы в вашей БД D1 | Повторная загрузка снимка из коммита (npm run data:load) или восстановление БД |
| Ваши собственные строки | Ваши таблицы в той же БД D1 | Только восстановление БД |
| Медиа | Ваши публичные и закрытые бакеты R2 или каталоги, если вы взяли медиа под своё управление | Ваши копии оригиналов и вариантов |
| Записи об экспортах | Каталог реестра и сохранённые артефакты экспорта | Копии graduation.exports.json, снимков и манифестов медиа |
| Секреты | Секреты вашего репозитория и секреты Worker | Ваше хранилище секретов. Никогда не в файле резервной копии. |
Откат кода в настройках не восстанавливает ни строки, ни медиа из этой таблицы.
Создание резервной копии
Заголовок раздела «Создание резервной копии»Сначала остановите всё, что изменяет данные: ваши фоновые задачи и развёртывания сайта, запускаемые из CMS.
Экспортируйте БД в файл:
npx wrangler d1 export <database-name> --remote --output backup-<date>.sqlВо время экспорта другие запросы к БД блокируются, а БД с виртуальными таблицами Cloudflare не экспортирует. Числовые значения преобразуются в числа JavaScript, поэтому целые числа, которым требуется более 52 бит точности, могут измениться.
Запишите развёрнутый коммит репозитория, время экспорта и контрольную сумму файла. Сохраните graduation.exports.json, а также снимки и файлы data/media-manifest.json всех экспортов, защищённых реестром: активного, предыдущего для отката, закреплённых и сохраняемых по возрасту и количеству. См. хранение экспортов.
Для каждого сохраняемого манифеста скопируйте объект из destinationKey каждой записи и все объекты из variants[].destinationKey. Сохраните указанные для них контрольные суммы и размеры. Пропускайте записи с outcome: "external": файлы остаются у внешнего провайдера, объекта в вашем хранилище нет. При необходимости сохраните их отдельно средствами этого провайдера.
Выбирайте хранилище по записи: visibility: "private" означает закрытый бакет или каталог; отсутствие visibility — публичное хранилище. Варианты хранятся там же, где оригинал. Для R2 команда npx wrangler r2 object get <bucket>/<key> --remote --file <path> скачивает один объект. Храните копии вне исходного хранилища и запишите, к какому бакету или каталогу относится каждая. Сохраните тип содержимого и другие метаданные, необходимые для выдачи файла.
Сначала восстановление в изоляции
Заголовок раздела «Сначала восстановление в изоляции»Создайте новую БД и загрузите в неё экспорт:
npx wrangler d1 create <restore-database-name>npx wrangler d1 execute <restore-database-name> --remote --file backup-<date>.sqlСгенерированный проект определяет БД по своей конфигурации. В проекте нет команды для переключения на восстановленную копию. Создайте отдельную конфигурацию Worker для тестовой среды и укажите в ней восстановленную БД, разверните в ней записанный коммит, затем проверьте его с API_BEARER_TOKEN в окружении:
npm run verify:deployment -- --origin 'https://restore.example.com' --expect-commit <full-commit-sha>npm run verify:mediaverify:deployment сравнивает развёрнутый контент со снимком из коммита. verify:media проверяет ссылки на медиа в проекциях, сохранённых в коммите. Сами файлы эта команда не скачивает. Характерные страницы и медиа откройте сами.
Восстановление БД D1 на момент времени
Заголовок раздела «Восстановление БД D1 на момент времени»Cloudflare D1 Time Travel восстанавливает БД на месте к более раннему моменту: до 30 дней назад на тарифе Workers Paid и до 7 дней на тарифе Workers Free. --timestamp принимает Unix timestamp или время RFC 3339 с часовым поясом. --bookmark принимает закладку, которую печатает info.
npx wrangler d1 time-travel info <database-name>npx wrangler d1 time-travel restore <database-name> --timestamp <time>Это перезаписывает живую БД, включая ваши собственные таблицы, и отменяет выполняющиеся запросы. Сначала сделайте экспорт. Восстановленная схема может быть старше развёрнутого кода. Прежде чем направлять на неё запросы, проверьте, что миграции развёрнутого коммита соответствуют восстановленной БД.
Восстановление медиа
Заголовок раздела «Восстановление медиа»Восстановите оригиналы и варианты под записанными ключами в соответствующих публичных или закрытых бакетах либо каталогах. Для R2 используйте npx wrangler r2 object put <bucket>/<key> --remote --file <path> и восстановите метаданные объектов средствами провайдера. Сверьте контрольные суммы и размеры восстановленных файлов с манифестом. Никогда не помещайте закрытый файл или его варианты в публично доступное хранилище.
Храните реестр и сохраняемые артефакты экспорта вместе с восстановленными файлами. Не запускайте очистку экспортов, пока записанная в реестре конфигурация хранилищ не соответствует восстановленной и не доступны все файлы защищённых экспортов. Для записей внешнего провайдера должны работать исходные URL: восстановление объектов CMS не возвращает эти файлы.
Пока CMS хранит нужные медиа, npm run backend:deliver с --media переносит их в рамках полной генерации и публикации. Для закрытых файлов нужно отдельно настроенное закрытое хранилище назначения. Команда создаёт новый экспорт текущего опубликованного контента; она не восстанавливает старый экспорт или медиа, которых в CMS уже нет.
Переключение
Заголовок раздела «Переключение»Только после того как изолированная копия прошла проверку, переключите на неё рабочую среду или повторите восстановление в рабочей среде. Сохраняйте старую БД до приёмки результата владельцем. Возобновляйте процессы, изменяющие данные, в последнюю очередь.
См. также: откат и восстановление, резервное копирование и восстановление CMS, руководство по отделению.
Следующий шаг
Заголовок раздела «Следующий шаг»Маршруты, аутентификация и поведение развёртывания описаны в справочнике API.
Стабильная версия ещё не выпущена (pre-MVP)
Коммит исходного кода: e207e63239a627fbd2ae9c414ef7c6eb19fcfe5a (с локальными изменениями)
Дата сборки (UTC): 2026-10-21T09:28:24.214Z
Коммит для обновления: не определён: в рабочей копии есть изменения. Примечания к выпуску