Как скачивать файлы из ftp серверов

Обновлено: 06.07.2024

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

Ситуация

Нужно было забирать периодически пару сотен файлов с ftp-сервера под Windows. Много мелочи и несколько очень крупных по размеру файлов. Суммарно примерно на 500 Гб. Сервер представляет собой vps, расположенный довольно далеко за рубежом. Днем машина высоко нагружена, рано ночью выполняются регламентные работы, итого на скачивание часов 5 максимум.

Конфиг

Все параметры для скрипта вынесем в отдельный файл для удобства.

Конфиг сохраняем с расширением .py и импортируем в начале нашего скрипта. Импортировать можно непосредственно в пространство имён скрипта, но я сделал конструкцию слегка напоминающую костыль в основной части моего скрипта:

В начале был список

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

Удобства ради и чтобы не таскать параметры по всему коду - переопределим параметры стандартного класса ftp:

Параметры берутся из конфига. Конечно же в нужно не забыть импортировать библиотеку ftplib, чтобы этот кусок заработал.

Список файлов с сервера мы получим с помощью следующего класса:

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

Логирование

Для ведения логов скачивания будет использовать стандартную библиотеку logging. Создадим класс, который будет заниматься логированием.

Скрипт будет поддерживать просто логирование в файл и ротацию файловых логов, ибо логи имеют свойство расти непомерно и это надо бы держать под контролем.

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

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

Для подсчета количества одновременно скачиваемых файлов мы будет использовать свойство класса count. В нём у нас будет количество существующих экземпляров класса: в конструкторе счетчик наращивается, в деструкторе, соответственно, уменьшается.

Метод для запуска скачивания должен обязательно называться run - это требование библиотеки threading (не забываем её импортировать!), которую мы будем использовать для параллельного запуска нескольких процессов скачивания.

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

Статус-файл

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

Класс для работы с этим файлов выглядит так:

Многопоточность

Ну и, наконец, сама основная функция скрипта, которая осуществляет работу с потоками скачивания:

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

В вечном цикле while мы проверяем количество одновременно запущенных скачиваний и, при необходимости, запускаем дополнительные потоки.

Сегодня будет интересный пост. Да будет Вам известно, как загружать и скачивать файлы с FTP сервера используя командную строку Windows (cmd.exe) и пакетный файл, проще говоря, батник. Также сегодня на блоге появилась новая рубрика «Командная строка» в которой я буду писать посты на тему bat файлов и о командной строке в целом. Подпишитесь на обновления блога, что бы ни пропустить новых постов.

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

И так, вернёмся к теме поста, и рассмотрим, как загрузить и удалить файлы с FTP сервера.

Все ниже описанный действия будут происходить на моём локальном FTP сервере, так как в данный момент у меня возникли некоторые проблемы с интернетом, и мне неудобно использовать свой FTP на котором крутится этот блог!
Если Вам интересно, как поставить FTP сервер на свой компьютер, то рекомендую прочитать мой прошлый пост « FTP сервер на домашнем ПК. Без проблем. » будет удобно для тренировки, если Вы не когда до этого момента не работали с FTP через Командную строку Window.

Как подключится к FTP серверу через cmd.

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

Для подключения к FTP используется «команда open» её синтаксис такой:

Open адрес сервера .

Запускаем cmd.exe или сразу встроенную в windows утилиту ftp.exe используя команду «выполнить» горячими клавишами «Win + R» я открою сразу ftp.exe. Если вы решили открыть cmd.exe то просто запустите ftp.exe командой ftp.

После запуска, используя команду open, подключаемся к ftp серверу. В моём случаи адрес ftp такой «127.0.0.1» если Вы используете локальный ftp, то адрес будет такой же, если нет, то, естественно адрес будет другой.

Вводим команду и жмём enter:

Kak)podklyuchitsya_k_FTP_serveru_cherez_cmd_1

После успешного подключения к FTP серверу, на нем требуется авторизация. Вводим логин, жмём enter, затем вводим пароль, и опять enter.

Стоит отметить, что при наборе пароля, не будут отображаться не какие символы. Пароль вводится в слепую из соображения безопасности. Просто наберите пароль и нажмите Enter.

Если все введено, верно, авторизация пойдёт успешно.

Kak)podklyuchitsya_k_FTP_serveru_cherez_cmd_2

В данном случаи мой логин «testlogin». На данном этапе мы выполнили успешное подключение к FTP серверу и можно начинать с ним работать.

Как загрузить файл на FTP сервер.

Для загрузки файлов на FTP используется команда send , её синтаксис такой:

send путь – имя файла.

Выберете файл на своём ПК для загрузки на FTP и поместите его, для удобства работы в корень диска C:\

Zagruzka faylov na FTP server.1

Как видим, файл был загружен на FTP сервер. Что бы проверить, действительно это так или нет, используем команду «DIR» Или зайдите на FTP сервер через любой FTP клиент, например FIleZilla, (Помните, FIleZilla не безопасный FTP клиент)

Zagruzka faylov na FTP server.2

Как видим, все подтвердилось, файл «FILE.exe» был действительно залит на FTP сервер, это нам и нужно было.

Как скачать файл с FTP сервера.

Для скачивания файлов с FTP используется команда «GET» её синтаксис:

GET |Какой файл скачать| |Путь – имя файла|

То есть, в первую очередь необходимо указать, какой файл с FTP сервера нужно скачать, в данном случае это «FILE.exe» затем указываем путь, где файл будет сохранён на Вашем ПК и с каким именем он будет сохранён.

Kak_skachat_fayl_s_FTP_servera_1

Файл был сохранён с FTP сервера в корне диска C:\ с именем «SaveFile.exe»

Как удалить файл с FTP сервера.

И напоследок, я решил коротко рассказать о том, как удалять файлы с Ftp сервера. Для этого дела используется команда «DELETE» синтаксис такой:

DELETE имя файла.

Пробуем удалить файл «FILE.exe»

Kak_udalit_fayl_s_FTP_servera

Теперь можно командой «DIR» проверить, удалён файл с FTP или нет. Но судя по ответу сервера «250» файл был действительно удалён.
Если ответ сервера был бы «550» то произошла ошибка, возможно, Вы ввели не правильное имя файла.

Работа с FTP из «BAT» файла.

Как загружать или удалять файлы с FTP, используя Bat файл? Для работы с FTP из Bat файла, нам понадобится не только сам батник, но и обычный, простой блокнот (txt). Но, создавать в ручную мы его не будем, так как, его создаст сам «BAT» файл и сам же запишет в него всю необходимую для работы информацию.

Что будет записано в txt документ?

В него будет записан «логин, пароль, команда – имя файла» такова вида.

Login
Password
Команда – Путь к файлу.

Создаём «Bat» файл и пишем в него следующие строк.

Таким образом, будет создан файл «config.txt» и в него запишутся все нужные данные, логин, пароль, команда – путь к файлу. В последней строке, запуск утилиты «ftp.exe» которая возьмёт все нужные данные из «config.txt» соединится с сервером и выполнит все нужные действия.

Приведу несколько примеров использования разных команд из bat файла.

echo get FILE . exe C : \ SaveFile . exe > > C : \ config . txt

Загрузить файл:

Удалить файл:

Теперь вы знаете не много о том, как работать с FTP сервером из командной строки Windows. Если Вам понравилась статья поделитесь ей с друзьями. Я буду очень благодарен Вам.

Часто требуется автоматизировать процессы скачивания, загрузки и удаления файлов c FTP-сервера. Например, при работе с распределенными базами данных 1С или для сохранения резервных копий. Но не все знают, что эти процедуры можно выполнять из командной строки, не прибегая к дополнительному программному обеспечению, то есть средствам Windows. Ниже я приведу синтаксис команд для работы с FTP, а также примеры bat-файлов для этих операций.

1. Команда ftp

Для обмена файлами с FTP-сервером используется команда ftp, вот ее синтаксис:

FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer]
[-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]

Как видно, здесь нет операторов для подключения к серверу и работы с файлами. Дело в том, что эта команда только запускает сеанс ftp:

komanda_ftp_01

Далее, работа с FTP-сервером происходит уже при помощи следующих операторов (пропустить) :

!
Временный переход в оболочку.

append
Добавление в файл.

ascii
Установка режима передачи файлов в формате ascii.

bell
Выдача звукового сигнала по завершении команды

binary
Установка режима передачи файлов в двоичном формате.

bye
Завершение сеанса ftp и выход.

close
Завершение сеанса ftp.

debug
Переключение режима отладки.

disconnect
Завершение сеанса ftp.

glob
Переключение метасимвольного расширения имен локальных файлов.

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

pwd
Вывод рабочего каталога удаленного компьютера.

quit
Завершение сеанса ftp и выход в командную строку.

status
Отражение текущего состояния подключения ftp.

trace
Переключение трассировки пакетов.


Рассмотрим небольшой пример.

komanda_ftp_02

Для этого необходимо выполнить следующий набор команд:

В итоге получим требуемый результат:

komanda_ftp_03

komanda_ftp_04

komanda_ftp_05

2. Пример bat-файла для загрузки файла на FTP

  • Создаем файл transport.txt с последовательностью операторов ftp;
  • Выполняем команду ftp, указав в качестве параметров созданный файл;
  • Удаляем transport.txt.

komanda_ftp_06

В данном примере имя файла и директорий жестко прописаны в файле. Это не всегда удобно. Доработаем bat-файл таким образом, чтобы данные для загрузки он получал в качестве параметров, а также вынесем все изменяемые значения в переменные файла. Получим следующий код (скачать файл):

komanda_ftp_07

komanda_ftp_08

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

Смотрите также:

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

Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…

FTP-Сервер обеспечивает возможность передачи файлов между клиентом и сервером с помощью протокола FTP. Здесь будет рассказано как запустить FTP-сервер в Windows Server 2008 R2. 0. Оглавление Добавление службы FTP-сервер Добавление…

Как подключиться к FTP-серверу

FTP (File Transfer Protocol) представляет собой протокол удаленной передачи файлов. С его помощью можно загрузить на сервер и скачивать с него же данные любого типа и размера, создавать или удалять файлы и папки.

В Windows, Linux и macOS подключиться к FTP-серверу можно с помощью встроенных средств и сторонних программ разного назначения. Полноценная работа со всеми средствами возможна только через специальные приложения, называемые FTP-клиентами. Теперь подробнее расскажем обо всех этих способах.

Данные для доступа к FTP-серверу

При подключении к FTP-серверу очень важно вводить правильные данные. Возьмем в качестве примера Timeweb. После регистрации на почту приходят два письма. Письмо с данными выглядит вот так:

Данные для FTP в электронном письме

Теперь о том, какие данные необходимо иметь под рукой:

  • логин,
  • пароль,
  • ссылка на FTP-сервер (указывается в том же письме),
  • порт (по умолчанию устанавливается значение 21).


Как подключится к FTP через Проводник Windows

Сначала рассмотрим, как подключиться к FTP-серверу через программу «Проводник» в Windows 10. Здесь ничего дополнительно устанавливать не надо, просто открываем системный файловый менеджер. В левой панели находим значок «Этот компьютер» и жмем по нему правой кнопкой мыши для вывода контекстного меню. В списке выбираем элемент «Добавить новый элемент в сетевое окружение».

Подключение к FTP-хосту через Проводник Windows

В результате откроется окно мастера добавления сетевого расположения. В начальном окне просто нажимаем «Далее».

Как добавить сетевое расположение через Проводник Windows

Следом надо выбрать его дальнейшее местоположение, но в этом окне нам доступен только один вариант. Для продолжения снова нажимаем на кнопку «Далее».

Выбор в меню типа сетевого расположения

В этом окне понадобится указать ссылку на сетевой ресурс, к которому планируется провести подсоединение. Важно соблюдать предписанный формат (чуть ниже есть несколько примеров). В поле вводим адрес/ссылку и вновь идем дальше.

Набор сетевого адреса или ссылки на FTP-ресурс

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

Ввод данных для входа в интерфейс FTP сервера

В самом конце даем название новому сетевому окружению.

Ввод наименования для создаваемого ярлыка

На этом настройка завершена. При необходимости можно поставить галочку, чтобы сразу после нажатия на кнопку «Готово» открыть указанный сервер и приступить к работе.

Подтверждение данных и завершение настройки соединения с FTP

Новое подключение теперь находится в «Сетевых расположениях» в разделе «Этот компьютер».

Новое сетевое расположение для соединения с FTP-хостом

Ввод имени пользователя и пароля для подключения

Если все данные введены успешно, откроется папка сервера. Можно приступать к работе.

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