# Экспорт на FTP/SFTP
Определенные операции экспорта имеют возможность выгрузки на FTP либо SFTP.

* экспорт клиентов
* экспорт регистраций клиентов
* экспорт объединений клиентов
* экспорт действий клиентов
* экспорт продуктов
* экспорт промоакций
* экспорт изменений сегментации клиентов
* экспорт изменений сегментации продуктов

Вы можете так же использовать операции экспорта без выгрузки результатов на внешнее хранилище с получением данных по ссылке на файл. Подробнее [здесь](https://developers.mindbox.ru/docs/%D0%BE%D0%B1%D1%89%D0%B8%D0%B9-%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2).

Экспортировать данные на FTP/SFTP можно двумя способами:

1. Создав задачу на внешнюю интеграцию в интерфейсе административной панели
2. Указав данные подключения к серверу в запросе на постановку задачи

Файлы выгружаются на хранилище сразу по готовности. То есть в течении длительной выгрузки, файлы будут по очереди создаваться и записываться в хранилище, на протяжении всего времени выполнения задачи выгрузки, а не только по итогу выполнения задачи. 

## Задача на периодический экспорт через административную панель

Для FTP доступна авторизация по логину и паролю
Для SFTP 

* авторизация по логину и паролю
* авторизация по логину и SSH-ключу

OpenSSH-ключ должен быть сгенерирован без использования кодовой фразы(с пустой фразой) с шифрованием RSA. Приватный ключ добавляется в настройки задачи. До этого публичный ключ должен быть добавлен на сервер. 

Обратите внимание, что многие SFTP серверы **не поддерживают** алгоритм ssh-rsa по умолчанию, поскольку  этот алгоритм считается устаревшим. В этом случае можно или включить поддержку алгоритма ssh-rsa на SFTP сервере. Либо можно сгенерировать новый ключ в современном и рекомендуемом стандарте ed25519.

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

Создать периодическую задачу на экспорт данных можно в разделе "Интеграции со сторонними системами". Период между задачами отсчитывается от момента окончания периодической задачи. Это означает, что ежесуточное время постановки задачи экспорта сдвигается. Сдвиг во времени определяется длительностью выполнения периодической задачи. 

## Передача данных подключения к серверу в запросе на постановку задачи

Общий порядок постановки задачи не изменяется. Подробней [здесь.](https://developers.mindbox.ru/docs/%D0%BE%D0%B1%D1%89%D0%B8%D0%B9-%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2) 

Для сохранения результатов экспорта на внешнее хранилище необходимо в первом запросе для поставку задачи экспорта добавить данные подключения к внешнему хранилищу. Файлы будут всегда создаваться в заданной директории и будут сжаты gzip методом, иметь расширение файлов .gz. Формат разархивированного файла зависит от настроек операции экспорта.

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

## Для экспорта на FTP/SFTP по логину и паролю

Дополнительно в запрос надо добавить следующие данные:

```json title="JSON"
{
  "exportOutput": {
    type": "<FTP/SFTP>",
    "credentials": {
      "userName": "<логин>",
      "password": "<пароль>"
    },
    "server": {
      "url": "<URL FTP сервера в формате ftp://127.0.0.1/>",    
      "port": "<порт>"
    },
    "directory": "<Папка, в которую надо складывать файлы>"
  }
}
```

## Для экспорта на SFTP по ключу

Дополнительно в запрос надо добавить следующие данные:

```json title="JSON"
{
  "exportOutput": {
    "type": "SFTP",
    "credentials": {
      "userName": "<логин>",
      "sshPrivateKey": "<Значение приватного SSH ключа закодированное в Base64>"
    },
    "server": {
      "url": "<URL FTP сервера>",    
      "port": "<порт>"
    },
    "directory": "<Папка, в которую надо складывать файлы>"
  }
}
```

* ключ должен быть создан без использования кодовой фразы
