Вопрос: Использование wget для рекурсивной загрузки всех FTP-каталогов


Я хочу скопировать все файлы и папки с одного узла на другой. Файлы на старом хосте сидят в / var / www / html, и у меня есть только FTP-доступ к этому серверу, и я не могу TAR всех файлов. Регулярное соединение со старым хостом через FTP приводит меня в папку / home / admin.

Я попробовал запустить следующую командную форму моего нового сервера:

wget -r ftp://username:password@ip.of.old.host

Но все, что я получаю, - это сделанный файл index.html.

Какой правильный синтаксис для использования wget рекурсивно по FTP?


86
2018-06-13 09:21


Источник


Обратите внимание, что по умолчанию wget -r имеет максимальную глубину рекурсии 5; если у вас есть более глубокие подкаталоги, они будут игнорироваться, если вы не измените это (см. -l на странице руководства). - mikewaters


Ответы:


Пытаться -m для --mirror

wget -m ftp://username:password@ip.of.old.host

119
2018-06-13 10:04



По соображениям безопасности было бы полезно использовать --ask-password во избежание сохранения пароля history, - checksum
Это так круто. Работал как шарм .. - Sambhav Sharma
Это должен быть принятый ответ (для лучшей видимости). - bgondy
он не включает в себя путь к каталогу для загрузки, я думаю, @Formoda ответ лучше - Wasim A.


У вас все в порядке, вам просто нужен трейлинг * на конце:

wget -r ftp://username:password@1.2.3.4/dir/*

Для общих серверов вы можете использовать следующее:

wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password

Поскольку у большинства общих серверов есть ftp-username что-то вроде имени пользователя @ hostname, поэтому первая команда wget не работает, а вторая команда отлично работает.


34
2018-06-22 12:35



Это приведет только к одному каталогу deep.Better, чтобы использовать флаг -m - SvennD
в некоторых случаях вторая команда не работает из-за пространства, вы можете использовать первую команду для совместного размещения, как это. ** wget -r ftp: / / имя пользователя% 40host: пароль @ host / dir / ** - Wasim A.
Примечание: вы должны использовать либо -m или -r -l inf потому что -r имеет глубину рекурсии по умолчанию 5. См. gnu.org/software/wget/manual/... - ndemou


Помимо wget, вы также можете использовать LFTP в режиме сценария. Следующая команда будет отображать содержимое данного удаленного FTP-каталога в данном локальном каталоге и может быть помещена в задание cron:

lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'

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


6
2018-06-13 18:04





Вы можете использовать «curlftpfs - монтировать ftp-хост в качестве локального каталога», и после установки вы можете использовать обычные файловые инструменты, такие как «cp -r».


5
2018-06-13 21:22



curlftpfs имеет серьезные проблемы с производительностью прямо сейчас, если вы не снижаете рейтинг libcurl3-gnutls - Hengjie


Проверьте приведенную ниже команду wget для рекурсивной загрузки данных из FTP.

wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"

-r: Для рекурсивной загрузки.

-np: Нет ни одного восходящего родителя.

-nH: Для отключения создания каталога с именем, аналогичным URL-адресу, например, abc.xyz.com

--cut-dirs: Для игнорирования числа родительских каталогов. Значение этой опции будет отличаться для вашей команды.

Вы можете проверить, выполнив вышеуказанную команду.


4
2017-07-24 04:48





Используйте -m, а не -r, из-за глубины рекурсии.

http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11


3
2018-06-17 11:56





Должна работать:

wget -r ftp://ftp:ftp@ftp.sunet.se/tst/

2
2018-06-13 09:54





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

wget -m ftp://192.168.0.1

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


2
2018-06-13 14:07



Как я уже сказал, вход в систему через FTP приводит меня в папку / home / admin, а файлы, которые мне нужны, находятся в / var / www / html. Поэтому, когда я запускаю команду, которую вы предложили, я получаю только содержимое / home / admin Я попытался запустить его с помощью 192.168.0.1/var/www/html, но затем он пытается использовать CWD / home / admin / var / www / html. Как заставить его перейти в эту папку из корня?
У меня нет опыта в этой конкретной проблеме, но вы можете попробовать сделать символическую ссылку на / var / www / html под своим домом. Тогда вы можете использовать адрес, например 192.168.0.1/html - prestomation
Я попытался создать символическую ссылку, но это привело к тому, что wget создал аналогичную символическую ссылку на моем локальном.


Это правильный синтаксис. Не знаете, почему вы не получаете ожидаемых результатов.

Как всегда, существует несколько способов сделать это. Попробуйте ncftp, в частности ncftpget


1
2018-06-13 09:27



Я не могу установить больше программного обеспечения на моем новом сервере. Должен ли я говорить wget для загрузки всех файлов из / var / www / html? Я попробовал wget -r Имя пользователя: password@ip.of.old.host/var/www/html но я получил ошибку, не найденную в каталоге.


Я могу понять, пытаетесь ли вы сбросить это в cron или что-то в этом роде, но почему бы не просто ftp на сервере с вашим обычным клиентом и mget *? Это может быть более быстрый путь к успеху.


1
2018-06-13 13:37



Я пробовал mget *, но он не работал с подпапками, говоря, что локальная подпапка не существует. Есть ли способ заставить его автоматически создавать локальные папки?
В зависимости от вашего клиента, ключ -r обычно делает трюк. IE: mget -r * - dr.pooter
ттт. Стандартный ftp-клиент AFAIK в Linux не предназначен для рекурсивного извлечения каталогов. Я имею в виду - нет опции -r. другие клиенты, такие как ncftp или lftp, поддерживают рекурсивный поиск, но обычно они недоступны по умолчанию. - Stann


Как я уже сказал, вход в систему через FTP   приводит меня в папку / home / admin,   и файлы, в которых я нуждаюсь, находятся в   / Var / WWW / HTML

Я думаю, что это будет работать в вашем случае:

wget -r ftp://192.168.0.1/../../var/www/html

1
2018-06-21 21:25