Ответы:
Вы можете положиться на wget, который обычно правильно обрабатывает ftp (по крайней мере, по моему опыту). Например:
wget -r ftp://user:pass@server.com/
Вы также можете использовать то, -mчто подходит для зеркалирования. В настоящее время это эквивалентно -r -N -l inf.
Если у Вас есть какие - то специальные символы в верительных детали, вы можете указать --userи --passwordаргументы , чтобы получить его на работу. Пример с пользовательским логином с конкретными символами:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
РЕДАКТИРОВАТЬ
Как указал @asmaier, обратите внимание, что даже если он -rпредназначен для рекурсии, он имеет максимальный уровень по умолчанию 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
Если вы не хотите пропустить подкаталоги, лучше используйте параметр зеркалирования -m:
-m --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
wget -m( --mirror). wget -rпо умолчанию ограничена глубиной рекурсии до 5.
--userи --passwordна Red Hat. Мой виджет таков: GNU Wget 1.11.4 Red Hat modifiedинтересно, это версия или дистрибутив ...
-l 0, поэтому нет необходимости использовать, --mirrorкоторый может иметь некоторые нежелательные побочные эффекты, такие как .listing файлы
wget --ask-password -rl 99 ftp://user@server.com. Таким образом, пароль не отображается psи не сохраняется в истории. Конечно, по природе ftp он отправляется на сервер в незашифрованном виде.
$), например--user='user' --password='pa$$word'
Просто чтобы дополнить ответ, который дал Тибо Баррер.
я использовал
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Обратите внимание на двойную косую черту после имени сервера. Если вы не добавите лишнюю косую черту, путь будет относительно домашнего каталога пользователя.
-nH избегает создания каталога, названного в честь имени сервера-nc избегает создания нового файла, если он уже существует в месте назначения (он просто пропущен) --cut-dirs=5позволяет взять содержимое каталога / absolute / path / to / и поместить его в каталог, где вы запускаете wget. Число 5 используется для фильтрации 5 компонентов пути. Двойная косая черта означает дополнительный компонент.--ftp-user=USERи --ask-password.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
open ftp://USERNAME:PASSWORD@HOSTпосле запуска ncftp…
wgetв режиме TAR. Спасибо!
Если lftpустановлен на вашем компьютере, используйте mirror dir. И вы сделали. Смотрите комментарий Сиро ниже, если вы хотите рекурсивно скачать каталог.
mirror -R dirвыполняет рекурсивную загрузку / обновление каталога
mirror ./для загрузки всех файлов и папок рекурсивно в текущем пути.
mirror, для текущего каталога и его подпапок.
Если вы можете использовать scpвместо ftp, -rопция сделает это за вас. Я бы проверил, можно ли использовать более современный механизм передачи файлов, чем FTP.
scpвсе равно будет пытаться использовать ssh, который не будет работать, если у вас есть только учетные данные FTP. Чувствует себя странно, отвечая на комментарий 2008 года о том, что технология, с которой я застрял, не современна :( Старый добрый 2008 год, мне исполнилось 18 лет в день, когда вы опубликовали свой комментарий.
Вместо этого используйте WGet. Он поддерживает протоколы HTTP и FTP.
wget -r ftp://mydomain.com/mystuff
Удачи!
ссылка: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Существует «ncftp», который доступен для установки в Linux. Это работает по протоколу FTP и может быть использовано для рекурсивной загрузки файлов и папок. работает на Linux. Был использован и работает нормально для рекурсивной передачи папок / файлов.
Проверьте эту ссылку ... http://www.ncftp.com/
Если вы можете, я настоятельно рекомендую вам tarи bzip(или gzip, что бы ни плавало на вашей лодке) каталог на удаленной машине - для каталога любого значительного размера экономия полосы пропускания, вероятно, будет стоить времени на zip / unzip.
Вы не должны использовать ftp. Как будто telnetне используются безопасные протоколы, а пароли передаются в виде открытого текста. Это позволяет третьим лицам легко получить ваше имя пользователя и пароль.
Для удаленного копирования удаленных каталогов эти параметры лучше:
rsyncявляется наиболее подходящим инструментом, если вы можете войти через него ssh, потому что он копирует только различия и может легко перезапускаться в середине в случае разрыва соединения.
ssh -r это второй лучший вариант для рекурсивного копирования структур каталогов.
Видеть:
переключить подсказку командой PROMPT.
Использование:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
mget, это не рекурсивно. ответ от 22 сентября 2008 года в 9:01 Тибо Баррера легче понять, но он должен добавить опцию,-l 0как указано в комментариях