Об особенностях работы с нашим хранилищем по 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 обязательно сообщайте нам. Все замечания и предложения по улучшению сервиса обязательно примем к сведению.
Читателей, не имеющих возможности комментировать посты на Хабре, приглашаем к нам в блог.