---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.4
alternate:
  - https://ydb.tech/docs/en/reference/ydb-cli/export-import/export-s3.md?version=v25.2
  - https://ydb.tech/docs/ru/reference/ydb-cli/export-import/export-s3.md?version=v25.2
sourcePath: ru/core/reference/ydb-cli/export-import/export-s3.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

<!-- source: ru/reference/ydb-cli/export-import/_includes/export-s3.md -->
# Выгрузка в S3-совместимое хранилище

Команда `export s3` запускает на стороне сервера процесс выгрузки в S3-совместимое хранилище данных и информации об объектах схемы данных, в описанном в статье [Файловая структура](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/file-structure.md?version=v25.2) формате:

```bash
ydb [connection options] export s3 [options]
```

{% note warning %}

Выгрузка доступна только для объектов следующих типов:

- [директория](https://ydb.tech/docs/ru/concepts/datamodel/dir.md?version=v25.2);
- [строковая таблица](https://ydb.tech/docs/ru/concepts/datamodel/table.md?version=v25.2#row-oriented-tables);
- [вторичный индекс](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.2#secondary-index).
- [векторный индекс](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.2#vector-index).

Для более простого экспорта одиночных строковых и колоночных таблиц в S3-совместимое хранилище данных можно использовать [внешние источники данных](https://ydb.tech/docs/ru/concepts/datamodel/external_data_source.md?version=v25.2). Подробнее см. в статье [Экспорт данных в объектное хранилище S3](https://ydb.tech/docs/ru/concepts/query_execution/federated_query/s3/write_data.md?version=v25.2#export-to-s3).

{% endnote %}

<!-- source: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->
, где `[connection options]` — опции [соединения с БД](https://ydb.tech/docs/ru/reference/ydb-cli/connect.md?version=v25.2#command-line-pars)
<!-- endsource: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->

## Параметры командной строки {#pars}

`[options]` - параметры команды:

### Параметры соединения с S3 {#s3-conn}

Команда выгрузки в S3 требует указания [параметров соединения с S3](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/auth-s3.md?version=v25.2). Так как выгрузка производится в асинхронном режиме сервером YDB, указанный эндпоинт должен быть доступен для установки соединения со стороны сервера.

### Перечень выгружаемых объектов {#items}

`--item STRING`: Описание объекта выгрузки. Параметр `--item` может быть указан несколько раз, если необходимо выполнить выгрузку нескольких объектов. `STRING` задается в формате `<свойство>=<значение>,...`, со следующими обязательными свойствами:

- `source`, `src`, или `s` — путь до выгружаемой директории или таблицы, `.` указывает на корневую директорию базы данных. При указании директории выгружаются все объекты в ней, имена которых не начинаются с точки, а также рекурсивно все поддиректории, имена которых не начинаются с точки.
- `destination`, `dst`, или `d` —  путь (префикс ключа) в S3 для размещения выгружаемых объектов

`--exclude STRING`: Шаблон ([PCRE](https://www.pcre.org/original/doc/html/pcrepattern.html)) для исключения путей из выгрузки. Данный параметр может быть указан несколько раз, для разных шаблонов.

### Дополнительные параметры {#aux}

Параметр | Описание
--- | ---
`--description STRING` | Текстовое описание операции, сохраняемое в истории операций.
`--retries NUM` | Количество повторных попыток выгрузки, которые будет предпринимать сервер.<br/>Значение по умолчанию: `10`.
`--compression STRING` | Сжимать выгружаемые данные.<br/>При уровне сжатия по умолчанию для алгоритма [Zstandard](https://ru.wikipedia.org/wiki/Zstandard) данные могут быть сжаты в 5-10 раз. Сжатие данных использует ресурс CPU и может повлиять на скорость выполнения других операций с БД.<br/>Допустимые значения:<br/><ul><li>`zstd` — сжатие алгоритмом Zstandard c уровнем сжатия по умолчанию (`3`);</li><li>`zstd-N` — сжатие алгоритмом Zstandard, `N` — уровень сжатия (`1` — `22`).</li></ul>
`--format STRING` | Формат вывода результата.<br/>Допустимые значения:<br/><ul><li>`pretty` — человекопонятный формат (по умолчанию);</li><li>`proto-json-base64` — [Protocol Buffers](https://ru.wikipedia.org/wiki/Protocol_Buffers) в формате [JSON](https://ru.wikipedia.org/wiki/JSON), бинарные строки закодированы в [Base64](https://ru.wikipedia.org/wiki/Base64).</li></ul>

## Выполнение выгрузки {#exec}

### Результат запуска {#result}

При успешном исполнении команда `export s3` выводит сводную информацию о поставленной в очередь операции выгрузки в S3, в заданном опцией `--format` формате. Фактическая выгрузка производится сервером асинхронно. В сводной информации выводится ID операции, который может быть использован в дальнейшем для проверки статуса и действий с операцией:

- В режиме вывода `pretty` (по умолчанию) идентификатор операции показывается в выделенном псевдографикой поле id:

  ```text
  ┌───────────────────────────────────────────┬───────┬─────...
  | id                                        | ready | stat...
  ├───────────────────────────────────────────┼───────┼─────...
  | ydb://export/6?id=281474976788395&kind=s3 | true  | SUCC...
  ├╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴┴╴╴╴╴╴╴╴┴╴╴╴╴╴...
  | StorageClass: NOT_SET
  | Items:
  ...
  ```

- В режиме вывода proto-json-base64 идентификатор находится в атрибуте "id":

  ```json
  {"id":"ydb://export/6?id=281474976788395&kind=s3","ready":true, ... }
  ```

### Статус выгрузки {#status}

Выгрузка данных выполняется в фоновом режиме. Получить информацию о статусе и прогрессе выгрузки можно вызовом команды `operation get`, параметром которой должен быть передан **заключенный в кавычки** идентификатор операции, например:

```bash
ydb -p quickstart operation get "ydb://export/6?id=281474976788395&kind=s3"
```

Формат вывода `operation get` также устанавливается опцией `--format`.

Несмотря на то, что идентификатор операции имеет формат URL, не гарантируется, что он будет сохранен в дальнейшем. Его нужно интерпретировать только как строку.

Завершение выгрузки отслеживается по изменению атрибута "progress":

- В режиме вывода `pretty` (по умолчанию) успешно завершенная операция отражается значением "Done" в выделенном псевдографикой поле `progress`:

  ```text
  ┌───── ... ──┬───────┬─────────┬──────────┬─...
  | id         | ready | status  | progress | ...
  ├──────... ──┼───────┼─────────┼──────────┼─...
  | ydb:/...   | true  | SUCCESS | Done     | ...
  ├╴╴╴╴╴ ... ╴╴┴╴╴╴╴╴╴╴┴╴╴╴╴╴╴╴╴╴┴╴╴╴╴╴╴╴╴╴╴┴╴...
  ...
  ```

- В режиме вывода proto-json-base64 завершенная операция отражается значением `PROGRESS_DONE` атрибута `progress`:

  ```json
  {"id":"ydb://...", ...,"progress":"PROGRESS_DONE",... }
  ```

### Завершение операции выгрузки {#forget}

При выполнении выгрузки в корневом каталоге базы данных создается директория с именем `export_*`, где `*` — это числовая часть идентификатора выгрузки. В данной директории размещаются таблицы, содержащие консистентный снапшот выгружаемых данных на момент начала выгрузки.

После выполнения выгрузки воспользуйтесь командой `operation forget` для того, чтобы выгрузка была завершена: удалена из перечня операций, а также были удалены все созданные для неё файлы:

```bash
ydb -p quickstart operation forget "ydb://export/6?id=281474976788395&kind=s3"
```

### Список операций выгрузки {#list}

Для получения списка операций выгрузки воспользуйтесь командой `operation list export/s3`:

```bash
ydb -p quickstart operation list export/s3
```

Формат вывода `operation list` также устанавливается опцией `--format`.

## Примеры {#examples}

<!-- source: ru/_includes/ydb-cli-profile.md -->
{% note info %}

В примерах используется профиль `quickstart`, подробнее смотрите в [Создание профиля для соединения с тестовой БД](https://ydb.tech/docs/ru/reference/ydb-cli/profile/create.md?version=v25.2#quickstart).

{% endnote %}
<!-- endsource: ru/_includes/ydb-cli-profile.md -->

### Выгрузка базы данных {#example-full-db}

Выгрузка всех объектов базы данных, имена которых не начинаются с точки, и не размещенных внутри директорий, имена которых начинаются с точки, в директорию `export1` в бакете `mybucket` с использованием параметров аутентификации S3 из переменных окружения или файла `~/.aws/credentials`:

```bash
ydb -p quickstart export s3 \
  --s3-endpoint storage.yandexcloud.net --bucket mybucket \
  --item src=.,dst=export1
```

### Выгрузка нескольких директорий {#example-specific-dirs}

Выгрузка объектов из директорий dir1 и dir2 базы данных, в директорию `export1` в бакете `mybucket`, с использованием явно заданных параметров аутентификации в S3:

```bash
ydb -p quickstart export s3 \
  --s3-endpoint storage.yandexcloud.net --bucket mybucket \
  --access-key VJGSOScgs-5kDGeo2hO9 --secret-key fZ_VB1Wi5-fdKSqH6074a7w0J4X0 \
  --item src=dir1,dst=export1/dir1 --item src=dir2,dst=export1/dir2
```

### Получение идентификаторов операций {#example-list-oneline}

Для получения перечня идентификаторов операций выгрузки в удобном для обработки в скриптах bash формате вы можете применить утилиту [jq](https://stedolan.github.io/jq/download/):

```bash
ydb -p quickstart operation list export/s3 --format proto-json-base64 | jq -r ".operations[].id"
```

Вы получите вывод, где в каждой новой строке находится идентификатор операции, например:

```text
ydb://export/6?id=281474976789577&kind=s3
ydb://export/6?id=281474976789526&kind=s3
ydb://export/6?id=281474976788779&kind=s3
```

По этим идентификаторам может быть, например, запущен цикл для завершения всех текущих операций:

```bash
ydb -p quickstart operation list export/s3 --format proto-json-base64 | jq -r ".operations[].id" | while read line; do ydb -p quickstart operation forget $line;done
```
<!-- endsource: ru/reference/ydb-cli/export-import/_includes/export-s3.md -->
