Curl ftp передать файл

Обновлено: 05.07.2024

Я почти не работаю с ftp протоколом из-за его ограничений и проблем с безопасностью. Тем не менее иногда приходится иметь с ним дело, потому что предоставляют доступ к каким-то ресурсам по ftp. Мне понадобилось загружать готовые бэкапы на ftp сервер. На удивление, я потратил много времени, пока не нашел простой и подходящий вариант.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Задача очень простая. Более того, у меня в своих шпаргалках даже были готовые варианты скриптов для загрузки файлов на удаленный ftp сервер. Но почему-то в этот раз они не работали. В общем случае все делается примерно так с помощью скрипта:

В принципе, все просто и раньше у меня нормально загружались файлы на ftp с этим скриптом. В этот раз почему-то нет. Не проходила авторизация, хотя если я делал все руками в консоли, то работало нормально. Я подозреваю, проблема была в лютых спецсимволах в пароле, которые я не смог нормально экранировать.

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

Тут весь нужный функционал, который на удивление сразу заработал как надо.

backup имя пользователя ftp
password12345678 пароль от ftp, который я поместил в одиночные кавычки, чтобы экранировать спецсимволы
/backup/zabbix директория на удаленном ftp сервере
ftp.server.com адрес ftp сервера

Если загрузка не работает, можно добавить ключ -v к команде curl, будет подробный лог.

Все это было затеяно для бэкапа сервера мониторинга zabbix. Покажу сразу и сам скрипт бэкапа.

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

Для решения таких задач и задач подобного круга можно воспользоваться утилитой curl. Она позволяет решить намного более широкий круг задач, среди которых даже имитация действий пользователя на сайте. В этой статье мы рассмотрим как пользоваться curl, что это такое и зачем нужна эта программа.

Что такое curl?

Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl - это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.

Команда curl

Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:

$ curl опции ссылка

Теперь рассмотрим основные опции:

Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.

Как пользоваться curl?

Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.

Загрузка файлов

Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:

А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:

Если загрузка была неожиданно прервана, вы можете ее возобновить:

Если нужно, одной командой можно скачать несколько файлов:

Еще одна вещь, которая может быть полезной администратору - это загрузка файла, только если он был изменен:

Данная команда скачает файл, только если он был изменен после 21 декабря 2017.

Ограничение скорости

Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:

Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:

Передача файлов

Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:

В ответе утилита сообщит где вы можете найти загруженный файл.

Отправка данных POST

Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:

Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:

Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.

Передача и прием куки

Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:

Передача и анализ заголовков

Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:

Аутентификация curl

Использование прокси

Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:

Выводы

В этой статье мы рассмотрели как пользоваться curl, зачем нужна эта утилита и основные ее возможности. Несмотря на свою схожесть с wget, они очень сильно отличаются. Команда curl linux предназначена больше для анализа и имитации различных действий на сервере, тогда как wget больше подходит для загрузки файлов и краулинга сайтов.

Мы уже видели, как подключиться к FTP-серверу и работать с ним (или с его содержимым) через терминал, то есть без использования графических приложений.

На этот раз я предлагаю вам плюс или минус . позвольте мне объяснить.

Несколько лет назад я оставил их сценарий bash, используемый для создания резервных копий (сохраняет) данные с сервера. Скрипт скопировал серию папок (например, / etc /), экспортированных баз данных и т. Д. И сжал их с паролем в файл .RAR или .7z (в настоящее время я использую 7z), единственное, чего не хватало скрипту, - это возможность загрузки после этого сжатый файл на какой-нибудь FTP-сервер, таким образом, сохранение с сервера будет скопировано в другое место.

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

Как загрузить на FTP с помощью одной команды?

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

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

Пересмотрев 4 или 5… подумал, ага !! . но он существует виться

Загрузить на FTP с помощью curl

С curl я могу делать бесконечное количество вещей, может быть, я могу делать то, что хочу . и все!

С параметром -u я могу указать пользователя и пароль, а также с параметром -T я могу сказать ему, что нужно загрузить файл, и, наконец, сообщить ему, на какой FTP и в какую папку я хочу его загрузить, в конце я просто поместите полный путь примерно так:

curl -u usuario:password -T archivo-backup.7z ftp://192.168.128.2/SERVER_BACKUPS/

Он подключается к FTP 192.168.128.2 с пользователем пользователь и пароль пароль, и загрузите в папку SERVER_BACKUPS файл называется файл-backup.7z

Все просто, правда? .

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

А что насчет упомянутого сценария?

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

FTP-сервер

Конец!

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.

Синтаксис и опции curl

Синтаксис команды следующий:

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

Основные опции мы рассмотрим на простых примерах.

Просмотр версии curl



Скачивание файла

Если вам требуется скачать файл, запустите curl с опцией –O или –o. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.

Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.

Cохранение файла под именем newfile в директории /tmp/examplе/.

Возобновление прерванной загрузки

Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции -C – (дефис, С, тире):

Скачивание нескольких файлов

Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):

Использование прокси-сервера

Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.


Также эту информацию можно получить, воспользовавшись функциями браузера для разработчиков.

cURL POST-запросы с параметрами

Этим приемом можно пользоваться для симуляции работы обычных веб-форм.

Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):

Если FTP-сервер поддерживает анонимный вход, параметр –u с именем пользователя и пароля указывать не нужно.

Загрузка файлов на FTP-сервер

Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:

Указание агента пользователя

Запись файлов cookie с веб-сайта

Отправка файлов cookie на сайт

Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:

Изменение разрешения имен

Ограничение скорости скачивания

Заключение

Мы рассмотрели краткую историю появления curl и наиболее характерные примеры применения этой команды. Для более подробной информации можно обратиться к соответствующей man-странице.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: