# Резервное копирование и восстановление

Если вы сохранили приложение NocoBase как среду CLI, ежедневное резервное копирование и восстановление в основном выполняются с помощью группы команд `nb backup`. `nb backup create` используется для создания резервной копии в целевой среде и загрузки ее на локальную папку. `nb backup restore` используется для восстановления локального файла резервной копии в целевой среде.

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

## Быстрый индекс

| Я хочу... | Какую команду использовать |
| --- | --- |
| Сначала создайте резервную копию текущего окружения на локальном | [`nb backup create`](../../api/cli/backup/create.md) |
| Сохраните резервную копию в указанный каталог | [`nb backup create --output ./backups`](../../api/cli/backup/create.md) |
| Разрешить сценарию продолжать использовать результаты резервного копирования | [`nb backup create --json-output`](../../api/cli/backup/create.md) |
| Восстановить локальную резервную копию в текущей среде | [`nb backup restore --file ./backups/xxx.nbdata --force`](../../api/cli/backup/restore.md) |
| Восстановить локальную резервную копию в другой среде | [`nb backup restore --env app1 --file ./backups/xxx.nbdata --yes --force`](../../api/cli/backup/restore.md) |

::: совет: сначала подтвердите текущую среду

Команда `nb backup` по умолчанию действует в текущей среде. Если вы одновременно поддерживаете несколько сред, рекомендация по умолчанию — просмотреть текущую среду перед выполнением резервного копирования или восстановления.

```bash
nb env current
nb env use app1
```

Если вы явно передаете другой `--env`, CLI обычно запрашивает подтверждение. В сценариях или неинтерактивных сценариях вы можете добавить `--yes`, чтобы пропустить этот шаг.

:::

## Создать резервную копию

Самое простое использование — напрямую создать резервную копию:

```bash
nb backup create
```

После успешного выполнения команды файл резервной копии будет загружен локально. Если `--output` опущен, CLI сохраняет файл в текущем рабочем каталоге и использует имя файла, возвращенное удаленным концом — обычно `backup_*.nbdata`.

Если вы хотите поместить резервные копии в один каталог, вы можете использовать это:

```bash
nb backup create --output ./backups
```

Если `./backups` уже существует и это каталог, CLI автоматически добавит имя файла удаленной резервной копии к каталогу. Только если путь не существует, CLI будет рассматривать его как путь к целевому файлу.

Если вы хотите продолжать использовать результаты резервного копирования в сценариях, CI или ссылках агента, вы можете добавить `--json-output`:

```bash
nb backup create --env app1 --yes --json-output
```

В этом режиме CLI больше не выводит текст выполнения, а напрямую возвращает окончательный JSON, который обычно содержит три поля: `env`, `name` и `output`.

## Восстановить резервную копию

Команда восстановления загрузит локальный файл резервной копии в целевую среду и перезапишет текущие данные приложения:

```bash
nb backup restore --file ./backups/backup_20260520_190408_8397.nbdata --force
```

Если вы хотите восстановить что-то отличное от текущего окружения, обычно безопаснее написать так:

```bash
nb backup restore --env app1 --file ./backups/backup_20260520_190408_8397.nbdata --yes --force
```

:::предупреждение

Восстановление — это операция полного покрытия. По умолчанию перед восстановлением рекомендуется сделать еще одну резервную копию текущей целевой среды.

```bash
nb backup create --env app1 --yes --output ./backups
nb backup restore --env app1 --file ./backups/backup_20260520_190408_8397.nbdata --yes --force
```

:::

`nb backup restore` сначала проверит, существует ли путь, указанный `--file`, и подтвердит, что это обычный файл. После успешной загрузки CLI будет продолжать ждать, пока приложение снова пройдет проверку работоспособности, поэтому, когда команда завершается успешно, приложение обычно восстанавливается до доступного состояния.

Если `--force` не передано, интерактивный терминал снова запросит подтверждение. В неинтерактивных терминалах, сценариях и сеансах агента AI требуется `--force`.

## Распространенные ситуации

Если вы привыкли работать с интерфейсом или вам нужны такие возможности, как запланированное резервное копирование и синхронизация облачного хранилища, вы можете напрямую просмотреть [Управление резервным копированием](../../ops-management/backup-manager/index.mdx). В таких сценариях веб-интерфейс часто оказывается более подходящим.

## Ссылки по теме

- [`nb backup` Справочник команд](../../api/cli/backup/index.md)
- [`nb env` Справочник команд](../../api/cli/env/index.md)
- [Управление несколькими средами](./multi-environment.md)
- [Управление резервным копированием](../../ops-management/backup-manager/index.mdx)
