Облачное хранилище и консольные FTP-клиенты

  • Tutorial
image

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

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


LFTP


Загрузка одного файла в хранилище:

$ lftp -e 'cd /container/; put /path/to/local/file; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

(здесь и далее вместо xxxx_ftp указываем имя пользователя, вместо PasSw0rD — свой пароль, containter — имя контейнера; вместо /path/to/local/file — путь к файлу на локальной машине).

Загрузка папки со всеми файлами в ней:

$ lftp -e 'mirror -R /path/to/local/dir/ /container/; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

(здесь и далее вместо /path/to/local/dir/ указываем путь к папке на локальной машине).

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

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

$ lftp -e 'mirror --delete -R /path/to/local/dir/ /container/; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

Скачивание одного файла из хранилища на локальную машину:

$ lftp -e 'get /container/file -o to-dir/; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

Возобновление скачивания (например, в случае, если произошел разрыв соединения или операция загрузки была прервана):

$ lftp -e 'get -c /container/file -o to-dir/; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

Скачивание из хранилища папки со всем содержимым:

$ lftp -e 'mirror /container/ to-dir/; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

Опция -P для предыдущей команды позволяет выполнить скачивание в несколько потоков, что может ускорить всю операцию в целом:

$ lftp -e 'mirror -P 10 /container/ to-dir/; bye' -u xxxx_ftp,PasSw0rD ftp.selcdn.ru

Все рассмотренные команды можно выполнять в интерактивном режиме. Вход в интерактивный режим осуществляется с помощью команды:

$ lftp -u xxxx_ftp,PasSw0rD ftp.selcdn.ru


NCFTP


Загрузка одного файла в хранилище:

$ ncftpput -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru /container/ /path/to/local/file

NCFTP поддерживает автоматическое повторение операции в случае возникновения ошибок при ее выполнении; для этого нужно использовать опцию -r:

# повторять попытку 5 раз
$ ncftpput -r 5 -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru /container/ /path/to/local/file

Загрузка папки со всеми файлами в ней:

$ ncftpput -R -r 5 -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru /container/ /path/to/local/dir/

Синхронизация локальных файлов с хранилищем:

$ ncftpput -z -R -r 5 -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru /container/ /path/to/local/dir/

Скачивание из хранилища одного файла:

$ ncftpget -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru to-dir/ /container/file

Возобновление скачивания, опция -z:

$ ncftpget -z -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru to-dir /container/file

Загрузка на локальную машину папки с файлами:

$ ncftpget -R -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru to-dir/ /container/dir/

# докачать
$ ncftpget -R -z -u xxxx_ftp -p PasSw0rD ftp.selcdn.ru to-dir /container/dir/


Wget


Скачивание одного файла на локальную машину:

# файл будет загружен в текущую папку
$ wget ftp://xxxx_ftp:PasSw0rD@ftp.selcdn.ru/container/file
# возобновление скачивания
$ wget -с ftp://xxxx_ftp:PasSw0rD@ftp.selcdn.ru/container/file

Скачать на локальную машину папки с файлами:

$ wget -r ftp://xxxx_ftp:PasSw0rD@ftp.selcdn.ru/container/dir/
# докачать недостающие файлы
$ wget -r -с ftp://xxxx_ftp:PasSw0rD@ftp.selcdn.ru/container/dir/


cURL


Загрузка одного файла в хранилище:

$ curl ftp://ftp.selcdn.ru/container/ --user xxxx_ftp:PasSw0rD -T /path/to/local/file

Скачивание файла на локальную машину:

# обязательно  нужно указать имя файла для сохранения (опция -o)
$ curl ftp://ftp.selcdn.ru/container/file --user xxxx_ftp:PasSw0rD -o file


Поддержка протокола SFTP


Теперь наше хранилище поддерживает и доступ по протоколу SFTP — пока что в режиме тестирования.

Приглашаем всех заинтересованных читателей попробовать новую возможность. Для подключения нужно указывать хост sftp.selcdn.ru. Обо всех ошибках и проблемах с доступом по SFTP обязательно сообщайте нам. Все замечания и предложения по улучшению сервиса обязательно примем к сведению.

Читателей, не имеющих возможности комментировать посты на Хабре, приглашаем к нам в блог.
Selectel
IT-инфраструктура для бизнеса

Comments 8

    0
    А планируется ли увеличение лимита 5Гб на размер заказчиваемого по фтп файла?
      +1
      Пока что нет.
      +2
      статью не читал, плюсанул за динозаврика.
        +4
        Плюсанул за команду с экрана.

        The Matrix has you, Neo.
          +6
          динозаврик как динозаврик.
          а вот кактус — прямо мимимишка.
          –2
          Не статья то может для кого то и полезная,, но фраза «FTP клиенты отличаются своеобразным и довольно сложным синтаксисом команд» на хабре смотрится прикольно =)
            +3
            Синтаксис-то простой, но вот семантика из-за протокола далеко не так проста. Сами-то без подглядывания в документацию сказать сможете, как скачать какой-нибудь архив в активном режиме?
            +2
            lftp первый из клиентов, который мне попался подругу для автоматизации. Долгое время использовал его, чтобы скачивать тарификационные файлы с серверов АТС. Работал как часы.

            Only users with full accounts can post comments. Log in, please.