Автоматизация загрузки файлов обновления с ftp
Задача
Появилась задача - Нужно сделать автоматическую загрузку файлов, которые загружаются на ftp (находится в Москве) на сервер филиала. Все это делается для того, чтобы облегчить жизнь сотрудников и не выполнять эту монотонную работу вручную.
Решение:
Использование WGET
- скачать здесь
- почитать про ключи можно в инструкции, которая идет вместе с утилитой - файл wget.html
Собственно строка, по которой производится скачивание представлено ниже:
CMD:
CMD:
@echo Скачиваем AzkExchange
Ниже описание использованных ключей:
wget -P "Y:\AZKExchange\AzkExchange\2.46.0" --user=**** --password=***** --output-file=logs\Exch.log -N -A exe -c ftp://ftp.***com.com:21/!azk_update/!finance/!azk_exchange/!2.46/AzkExchange*.exe
Ниже описание использованных ключей:
--directory-prefix=prefix
Устанавливает корневой каталог в prefix. Корневой каталог - это каталог, куда будут сохранены все файлы и подкаталоги, т.е. вершина скачиваемого дерева. По умолчанию . (текущий каталог).
--user / --password
Указываем имя пользователя и пароль на FTP/HTTP
--output-file
Включает использование временных отметок.
-r
Протоколировать все сообщения в logfile. Обычно сообщения выводятся в standard error. Важно, что при новом запуске созданный ранее лог будет перезаписываться.
-a logfile
--append-output=logfile
Дописывать в logfile. То же, что -o, только logfile не перезаписывается, а дописывается. Если logfile не существует, будет создан новый файл.
-N
--timestampingВключает использование временных отметок.
-A exe / −R rejlist
−−accept acclist / −−reject rejlist
Дает возможность указать маску файлов, которые нужно скачать (-А) или не нужно скачивать (-R). Обратите внимание, что если любой из подстановочных знаков,*,?, [или], появляются в элементе acclist или rejlist, он будет рассматриваться как шаблон, а не суффикс. В этом случае необходимо заключить шаблон в кавычки, чтобы оболочка не расширяла его, как в −A "*.mp3 " или - a ’*.mp3’.
-c
--continue
Продолжение закачки частично скачанного файла. Это полезно при необходимости завершить закачку, начатую другим процессом Wget или другой программой.
-r
Параметр указывает на рекурсивный поиск (как оказалось при скачивании папок этот параметр необходим)
--show-progress
Позволяет вывести в консоль wget индикатор выполнения процесса с детализацией.
По умолчанию wget отображает индикатор выполнения только в подробном режиме. Однако можно хотеть, чтобы wget отображал индикатор выполнения на экране в сочетании с любыми другими режимами многословия, такими как --no-verbose или --quiet . Это часто является желательным свойством при вызове wget для загрузки нескольких маленьких / больших файлов. В таком случае, wget может быть просто вызван с этим параметром, чтобы получить более чистый вывод на экран.
-nH
--no-host-directories
Отключает создание хост-каталога. По умолчания запуск Wget -r http://htmlweb.ru/ создаст структуру каталогов, начиная с htmlweb.ru/. Данный ключ отменяет такое поведение.
--cut-dirs=number
Игнорировать number уровней вложенности каталогов. Это полезный ключ для чёткого управления каталогом для сохранения рекурсивно скачанного содержимого.
Например, требуется скачать каталог ftp://htmlweb.ru/pub/xxx/. При скачивании с -r локальная копия будет сохранена в ftp.htmlweb.ru/pub/xxx/.
Если ключ -nH может убрать ftp.htmlweb.ru/ часть, остаётся ненужная pub/xemacs. Здесь на помощь приходит --cut-dirs; он заставляет Wget закрывать глаза на number удалённых подкаталогов. Ниже приведены несколько рабочих примеров --cut-dirs.
No options -> ftp.htmlweb.ru/pub/xxx/ -nH -> pub/xxx/ -nH --cut-dirs=1 -> xxx/ -nH --cut-dirs=2 -> . --cut-dirs=1 -> ftp.htmlweb.ru/xxx/
Если вам нужно лишь избавиться от структуры каталогов, то этот ключ может быть заменён комбинацией -nd и -P. Однако, в отличии от -nd, --cut-dirs не теряет подкаталоги - например, с -nH --cut-dirs=1, подкаталог beta/ будет сохранён как xxx/beta, как и ожидается.
Проблема заключается в следующем:
Папка с обновлениями содержит папки с названиями
Необходимо скачивать только те, что в своем названии НЕ имеют слова patch
Для решения данной проблемы необходимо использовать следующие ключи:
−I list
−−include−directories=list
Укажите разделенный запятыми список каталогов, которым вы хотите следовать при загрузке. Элементы списка могут содержать символы подстановки.
−X list
−−exclude−directories=list
Укажите разделенный запятыми список каталогов, которые вы хотите исключить из загрузки. Элементы списка могут содержать символы подстановки.
CMD:
wget -P "Y:\АЦК-Финансы\Эталонные сборки\2.46.0" --user=**** --password=**** --output-file=logs\finan.log --show-progress -N -nH --cut-dirs=4 -X /!azk_update/!finance/!builds/!2.46.0/patch*/,/!azk_update/!finance/!builds/!2.46.0/v*/ -r ftp://ftp.*****.com:21/!azk_update/!finance/!builds/!2.46.0/
Здесь мы указываем, что папки (каталоги) с названиями patch* и v* скачивать не нужно
Комментарии
Отправить комментарий