Перейти к основному содержимому
FTP
Последнее изменение:

FTP

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

  • управляющее соединение — по нему передаются команды и ответы, это текстовые строки;
  • соединение для передачи данных.

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

Запись в конец файла не поддерживается — при попытке сделать это вернется код ответа 426.

Доступ через FTP

Для подключения к объектному хранилищу по FTP/FTPS используется:

  • хост ftp.ru-1.storage.selcloud.ru, где ru-1 — пул, в котором размещается объектное хранилище;
  • порт 21.

Аутентификация происходит с помощью отдельного логина и пароля — OpenStack Application Credentials, их необходимо выписать пользователю через клиент OpenStack CLI.

Получить логин и пароль

Пользователь, который выписывает логин и пароль OpenStack Application Credentials, должен иметь роль с доступом в объектное хранилище, подробнее в инструкции Управлять доступом в объектом хранилище.

Логин всегда генерируется автоматически. Пароль можно сгенерировать или задать явно. Подробнее о получении OpenStack Application Credentials в документации OpenStack.

  1. В OpenStack CLI сгенерируйте логин и пароль:

    openstack application credential create <ftps-creds>

    Укажите <ftps-creds> — название для пары логин/пароль.

    Вы получите ответ вида:

    +--------------+----------------------------------------------------------------------------------------+
    | Field | Value |
    +--------------+----------------------------------------------------------------------------------------+
    | description | None |
    | expires_at | None |
    | id | 0987654321abcdef0987654321abcdef |
    | name | ftps-creds |
    | project_id | 1234567890abcdef1234567890abcdef |
    | roles | member |
    | secret | 12345password |
    | system | None |
    | unrestricted | False |
    | user_id | abcdef1234567890abcdef1234567890 |
    +--------------+----------------------------------------------------------------------------------------+
  2. Посмотрите логин и пароль в выводе команды:

    • логин — в поле id;
    • пароль — в поле secret.

Подключиться через FTP

Подключиться на Windows

  1. Получите логин и пароль для доступа по FTP.

  2. Откройте Total Commander.

  3. В главном меню Сеть выберите пункт Соединиться с FTP-сервером.

  4. Откройте окно создания профиля соединения — нажмите Добавить.

  5. Заполните параметры на вкладке Общие:

    • Имя соединения — любое, например, Selectel;
    • Сервер — ftp.ru-1.storage.selcloud.ru;
    • Учетная запись — логин из шага 1;
    • Пароль — пароль из шага 1.
  6. Отметьте чекбокс Пассивный режим обмена (как Web-браузер).

  7. Откройте вкладку Расширенные.

  8. В выпадающем списке Кодировка имён файлов выберите значение UTF-8.

  9. Нажмите OK. Профиль будет сохранен.

  10. Нажмите Соединиться.

Подключиться на Linux

  1. Получите логин и пароль для доступа по FTP.
  2. Откройте любую директорию с помощью Nautilus.
  3. В меню Файл выберите Подключение к серверу.
  4. В поле Адрес сервера введите ftp://ftp.ru-1.storage.selcloud.ru
  5. Нажмите Подключиться.
  6. Выберите пункт Зарегистрированный пользователь.
  7. Введите логин и пароль из шага 1.
  8. Опционально: отметьте чекбокс Запомнить навсегда.
  9. Нажмите Подключиться.

Работа с FTP

Авторизация

КомандаАргументыОбозначение
USERЛогинПередать логин
PASSПарольПередать пароль

Защита

КомандаАргументыОбозначение
AUTHНе требуютсяУстановить защищенное TLS-соединение. Аргументы будут проигнорированы
PROTP / CУстановить режим защиты. P for Private, C for Clean. По умолчанию P будет использовать TLS
PBSZРазмер буфераУстановить размер буфера защиты. Cервер ответит 200 OK

Разное

КомандаАргументыОбозначение
FEATНе требуютсяОтобразить список поддерживаемых дополнительных функций
SYSTНе требуютсяОтобразить операционную систему сервера
NOOPНе требуетсяПустая операция, сервер в ответ передаст 200 ОК
OPTSСогласно RFC2389Передать серверу дополнительные опции

Доступ к файлам

КомандаАргументыОбозначение
SIZEИмя файлаПолучить размер файла
STATНе требуютсяПолучить статистику соединения
MDTMПутьПолучить дату и время изменения файла
RETRИмя файлаСкачать файл. Сработает только после перехода в пассивный режим командой PASV. Поддерживается докачка
STORИмя файлаЗагрузить файл в пассивном режиме
APPEИмя файлаСообщить серверу принять удаленный файл. Команда сработает только если такого файла еще не существует в хранилище. Если файл существует, то будет возвращена ошибка
DELEИмя файлаУдалить файл
RNFRИмя файлаВыбрать файл для переименования
RNTOНовое имя файлаЗадать новое имя файла. Только после того как был выбран командой RNFR
ALLOРазмер в байтахВернуть ответ о наличии доступного места. Вне зависимости от аргумента ответ будет 202 OK
RESTСмещение в байтахКоманда «перемотки» к определенной позиции в файле. Требуется для докачки с помощью RETR

Работа с контейнерами

КомандаАргументыОбозначение
CWDИмя директорииПерейти в указанную директорию
PWDНе требуютсяПоказать текущий рабочий каталог
CDUPНе требуютсяПерейти в родительскую директорию
NLSTНе требуютсяВозвратить список файлов директории в более кратком формате чем LIST. Только в режиме пассивного соединения
LISTПутьВывести содержимое текущей или предоставленной директории. Поддерживается как относительный, так и абсолютный путь
MLSDПутьВывести содержимое текущей директории. Главное отличие от LIST - метки времени с точностью до секунды, время указывается в UTC
MKDИмя директорииСоздать директорию
RMDИмя директорииУдалить директорию

Установление соединения

КомандаАргументыОбозначение
TYPEA / IСменить режим передачи данных. Имеется два варианта — ASCII(A) или Binary(I). Любой аргумент игнорируется, команда используется для обратной совместимости. Поддерживается только Binary-режим
PASVНе требуютсяПерейти в пассивный режим передачи данных
EPSVНе требуютсяИнициировать соединение для передачи данных в пассивном режиме. В ответ сервер передаст номер порта для соединения
EPRTВерсия протокола / адрес / портИнициировать соединение для передачи данных. Команда исключительно для активного режима передачи данных, поэтому на эту команду сервер сообщит, что активный режим не поддерживается
PORTНе требуютсяПерейти в активный режим передачи данных. Команда исключительно для активного режима передачи данных, поэтому на эту команду сервер сообщит, что активный режим не поддерживается
QUITНе требуютсяОтключиться от сервера