CLI commands

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

openclaw backup

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

bash
openclaw backup createopenclaw backup create --output ~/Backupsopenclaw backup create --dry-run --jsonopenclaw backup create --verifyopenclaw backup create --no-include-workspaceopenclaw backup create --only-configopenclaw backup verify ./2026-03-09T08-00-00.000+08-00-openclaw-backup.tar.gzopenclaw backup sqlite create --global --repository ~/Backups/openclaw-sqliteopenclaw backup sqlite create --agent main --repository ~/Backups/openclaw-sqliteopenclaw backup sqlite list --repository ~/Backups/openclaw-sqliteopenclaw backup sqlite verify ~/Backups/openclaw-sqlite/<snapshot-id>openclaw backup sqlite verify ~/Backups/openclaw-sqlite/<snapshot-id> --scratch ~/Private/openclaw-scratchopenclaw backup sqlite restore ~/Backups/openclaw-sqlite/<snapshot-id> --target ./restored/openclaw.sqlite

Примечания

  • В архив встроен manifest.json с разрешенными исходными путями и структурой архива.
  • По умолчанию в текущем рабочем каталоге создается архив .tar.gz с меткой времени. В именах файлов с меткой времени используется локальный часовой пояс вашего компьютера и указывается смещение относительно UTC. Если текущий рабочий каталог находится внутри резервируемого дерева исходных данных, OpenClaw использует домашний каталог в качестве расположения архива по умолчанию.
  • Существующие файлы архивов никогда не перезаписываются. Выходные пути внутри исходных деревьев состояния или рабочих пространств отклоняются во избежание включения архива самого в себя.
  • openclaw backup verify <archive> проверяет, что архив содержит ровно один корневой манифест, отклоняет пути архива с обходом каталогов и сопутствующие файлы SQLite, подтверждает наличие всех данных, объявленных в манифесте, проверяет структуру файлов каждого снимка SQLite и выполняет полную проверку целостности и ролей канонических баз данных OpenClaw. Выделенные схемы плагинов остаются непрозрачными, поскольку для них могут требоваться определенные владельцем возможности SQLite. openclaw backup create --verify выполняет эту проверку сразу после записи архива.
  • openclaw backup create --only-config создает резервную копию только активного файла конфигурации JSON.

Снимки SQLite

Используйте openclaw backup sqlite, когда вместо обширного архива состояния требуется переносимый артефакт одной базы данных SQLite, принадлежащей OpenClaw.

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

Команда База данных
openclaw backup sqlite create --global --repository <dir> Общее состояние OpenClaw
openclaw backup sqlite create --agent <id> --repository <dir> Отдельная база данных агента

Репозиторий содержит по одному каталогу на каждый зафиксированный снимок. Каждый каталог снимка содержит ровно:

  • manifest.json
  • database.sqlite

При создании снимка рабочая база данных проверяется перед чтением, затем с помощью SQLite VACUUM INTO зафиксированное состояние WAL сохраняется в компактную базу данных, созданная база данных проверяется повторно, а завершенный каталог публикуется без перезаписи существующих путей. Из глобальных снимков удаляются временные строки очереди доставки, после чего база снова уплотняется, чтобы удаленные данные очереди не сохранялись на свободных страницах.

Не копируйте рабочие файлы .sqlite, -wal, -shm или -journal в качестве переносимого артефакта. Копируйте только завершенные каталоги снимков.

Снимки SQLite могут содержать профили аутентификации, состояние сеансов, состояние плагинов и другие конфиденциальные записи. Защищайте репозитории с помощью тех же разрешений, шифрования, политики хранения и ограничений мест назначения, что и рабочий каталог состояния OpenClaw.

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

bash
openclaw backup sqlite verify <snapshot-directory>openclaw backup sqlite restore <snapshot-directory> --target <new-database-path>

Проверка контролирует строгую структуру манифеста, размер артефакта и SHA-256, целостность SQLite, внешние ключи, версию схемы, роль и владельца базы данных, а также определения индексов, принадлежащих OpenClaw.

Проверка выполняется на закрытой копии с привязкой к содержимому, чтобы подмена пути не позволила заменить байты, проверяемые SQLite. По умолчанию эта временная копия создается рядом с репозиторием снимков и удаляется до завершения команды. Корень промежуточного каталога и вся цепочка его предков должны исключать возможность его подмены другими пользователями. Корни POSIX должны принадлежать текущему пользователю и не допускать запись для группы или всех пользователей; предки с sticky-битом, такие как /tmp, допускаются для дочерних объектов, принадлежащих пользователю. Разрешения ACL macOS, открывающие промежуточный каталог или позволяющие его подменить, отклоняются. Корни Windows и их предки должны принадлежать текущему пользователю или доверенному субъекту ОС, а правила ACL должны запрещать недоверенный доступ к промежуточному каталогу. Для файловой системы, смонтированной только для чтения, или сетевого ресурса передайте --scratch <existing-private-directory>, указав хранилище с эквивалентными средствами шифрования и контроля места назначения.

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

Восстановление повторяет проверку и выполняет запись только в новый целевой объект. Оно отклоняет существующий целевой объект и сопутствующие файлы -wal, -shm или -journal, а также никогда не заменяет рабочую базу данных OpenClaw на месте. К родительскому каталогу целевого объекта применяются те же требования безопасности пути, что и к временному каталогу проверки. Активация восстановленной базы данных остается явным автономным действием оператора.

Репозитории снимков являются локальными каталогами. Планирование, отправка, хранение, инкрементные пакеты WAL, аварийное переключение и восстановление при загрузке намеренно не входят в область действия этой команды.

Что включается в резервную копию

openclaw backup create планирует источники из локальной установки OpenClaw:

  • Каталог состояния (обычно ~/.openclaw)
  • Путь к активному файлу конфигурации
  • Разрешенный каталог credentials/, если он находится вне каталога состояния
  • Каталоги рабочих пространств, обнаруженные в текущей конфигурации, если не передан --no-include-workspace

Профили аутентификации и другое состояние среды выполнения для отдельных агентов хранятся в SQLite в каталоге состояния (agents/<agentId>/agent/openclaw-agent.sqlite), поэтому они автоматически включаются в резервную копию состояния.

--only-config пропускает состояние, каталог учетных данных и обнаружение рабочих пространств и архивирует только активный файл конфигурации.

Перед созданием архива OpenClaw канонизирует пути: если конфигурация, каталог учетных данных или рабочее пространство уже находятся внутри каталога состояния, они не дублируются как отдельные источники верхнего уровня. Отсутствующие пути пропускаются.

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

Область относительно каталога состояния Пропускаемые суффиксы файлов
sessions/** .jsonl, .log
agents/<agentId>/sessions/** .jsonl, .log
cron/runs/** .jsonl, .log
logs/** .jsonl, .log
delivery-queue/** .json, .delivered, .tmp
session-delivery-queue/** .json, .delivered, .tmp
Любой путь в резервируемом каталоге состояния .sock, .pid, .tmp

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

Базы данных SQLite в каталоге состояния уплотняются с помощью VACUUM INTO, чтобы остатки удаленных страниц не попадали в архив, а рабочие файлы WAL/SHM не копировались. Если для базы данных, принадлежащей плагину, требуются недоступные возможности SQLite, определенные владельцем, операция завершается с ошибкой вместо отката к необработанному копированию страниц. Файлы SQLite, включенные через резервные копии рабочих пространств, копируются как обычные файлы рабочих пространств и не охватываются гарантией уплотнения.

Исходные файлы и манифесты установленных плагинов в дереве extensions/ каталога состояния включаются, но их вложенные деревья зависимостей node_modules/ пропускаются как восстанавливаемые артефакты установки. После восстановления архива используйте openclaw plugins update <id> или переустановите с помощью openclaw plugins install <spec> --force, если восстановленный плагин сообщает об отсутствующих зависимостях.

Поведение при недействительной конфигурации

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

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

--only-config также работает с некорректной конфигурацией, поскольку не анализирует ее для обнаружения рабочих пространств.

Размер и производительность

OpenClaw не устанавливает встроенного максимального размера резервной копии или ограничения размера отдельного файла. Практические ограничения зависят от:

  • Доступного пространства для временной записи архива и итогового архива
  • Времени обхода больших деревьев рабочих пространств и их сжатия в .tar.gz
  • Времени повторного сканирования архива с помощью --verify или openclaw backup verify
  • Поведения целевой файловой системы: OpenClaw предпочитает публикацию через жесткую ссылку без перезаписи и при отсутствии поддержки жестких ссылок использует эксклюзивное копирование

Основным фактором размера архива обычно являются большие рабочие пространства. Используйте --no-include-workspace для создания меньшей и более быстрой резервной копии или --only-config для получения архива минимального размера.

Связанные материалы

Was this useful?
On this page

On this page