Ответы:
Вы можете положиться на 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
как указано в комментариях