it-swarm-ru.tech

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

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

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

wget -r ftp://username:[email protected]

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

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

97
user9406

Пытаться -m за --mirror

wget -m ftp://username:[email protected]
129
Dave Cheney

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

wget -r ftp://username:[email protected]/dir/*

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

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

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

39
Formoda

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

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

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

7
zappan

Проверьте приведенную ниже команду 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: Для игнорирования количества родительских каталогов. Значение этой опции будет отличаться для вашей команды.

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

5
AVJ

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

5
chmeee

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

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

3
Bojan Hrnkas

Должен работать попробуйте:

wget -r ftp://ftp:[email protected]/tst/
2
rkthkr

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

wget -m ftp://192.168.0.1

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

2
Rajat

Как я уже сказал, при входе через FTP я попадаю в папку/home/admin, а нужные мне файлы находятся в/var/www/html.

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

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

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

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

1
goo

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

1
dr.pooter

Я сталкивался с хостингом Windows с именем пользователя brinkster/username, поэтому wget выдает ошибку, если вы используете синтаксис:

wget -m ftp://brinkster/username:[email protected]

Чтобы обойти это, используйте

wget -m ftp://brinkster%2Fusername:[email protected]

Мне пришлось столкнуться с этим с Windows хостингом @ brinkster.

0
Anto Joseph