Недавно мне понадобилось скачать сайт с кучей мелких файлов. Как обычно я запустил mc, подключился к серверу и стал скачивать.
Но по какой то непонятной причине коннект постоянно рвался, да и сканировал mc структуру папок довольно долго.
Сначала я хотел попробовать консольным FTP, но никак не мог найти команду для рекурсивного скачивания, при этом я постоянно натыкался на рекомендации сделать это через wget, что я и решил попробовать
Синтаксис команды предельно прост
wget -r ftp://LOGIN:PASSWORD@FTP_SERVER_IP_OR_HOSTNAME:PORT
Ключ -r означает ходить по папкам рекурсивно, всё остальное я думаю понятно 🙂
Поставив скачиваться сайт, я пошел налить чаю, а когда вернулся, то увидел что экран больше не скроллится. Я конечно сразу подумал, что опять произошел дисконнет, однако последняя надпись гласила
FINISHED --2017-09-11 20:34:28--
Total wall clock time: 9m 7s
Downloaded: 3460 files, 753M in 2m 3s (6.13 MB/s)
Что меня, к слову, изрядно удивило в плане скорости — оказалось что скачивать wget ftp с авторизацией и просто и, что важнее, намного быстрее чем через mc. Единственный момент — файлы закачиваются не туда, где запущен wget, а сначала создается папка с именем FTP_SERVER_IP_OR_HOSTNAME и в нее уже сохраняется структура. Искать где это отключить мне было влом, и я просто скопировал файлы на уровень выше.
UPDATE
Оказалось что wget скачал не всё, по причине того что дефолтная глубина при рекусивном скачивании = 5.
Правильный синтаксис такой
wget -r -l inf ftp://LOGIN:PASSWORD@FTP_SERVER_IP_OR_HOSTNAME:PORT
или
wget -m ftp://LOGIN:PASSWORD@FTP_SERVER_IP_OR_HOSTNAME:PORT
Во втором варианте сохраняется time-stamp файлов, т.е.
-m
=
-r -l inf -N