Я пытаюсь найти ftp-папку с помощью ftp-клиента командной строки, но до сих пор я мог использовать «get» для получения отдельных файлов.Как рекурсивно загрузить папку через FTP в Linux
ответ
Вы можете рассчитывать на Wget, который обычно обрабатывает FTP получить должным образом (по крайней мере, в моем собственном опыте). Например:
wget -r ftp://user:[email protected]/
Вы также можете использовать -m
, который подходит для зеркалирования. В настоящее время он эквивалентен -r -N -l inf
.
Если у вас есть специальные символы в данных учетных данных, вы можете указать аргументы и --password
, чтобы заставить его работать. Пример с пользовательским логином с определенными символами:
wget -r --user="[email protected]" --password="Pa$$wo|^D" ftp://server.com/
EDIT Как отметил @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.
Если вы можете использовать scp
вместо ftp
, опция -r
сделает это за вас. Я бы посмотрел, можно ли использовать более современный механизм передачи файлов, чем FTP.
Я голосовал это, потому что это была именно моя первая мысль, даже если оно не строго ответьте на вопрос как есть. – metao 2008-09-22 09:04:49
Какой из них вы предлагаете @ greg-hewgill? У меня есть аналогичная проблема – Michal 2016-08-25 11:25:08
`scp` все равно попытается использовать ssh, который не будет работать, если у вас есть только учетные данные FTP. Чувствуется странное реагирование на комментарий 2008 года, в котором говорится, что технология, за которой я застрял, не является современной :(Хорошо, что в прошлом году мне исполнилось 18 лет, когда вы отправили свой комментарий. – 2017-06-17 19:34:35
Try MGET:
mget remote-files
Expand the remote-files on the remote machine and do a get for each file name thus produced.
See glob for details on the filename expansion. Resulting file names will then be processed
according to case, ntrans, and nmap settings. Files are transferred into the local working
directory, which can be changed with ‘lcd directory’; new local directories can be created with
‘! mkdir directory’.
Вам также может потребоваться выключить запрос, так что не просит для каждого файла (см команду propmt)
Но с помощью УПП или Rsync через SSH, вероятно, лучше, чем ftp, если сможете.
Чтобы резюмировать:
cd /dir
prompt
interactive mode off
mget *
Это не отображается для рекурсивной загрузки любых папок, находящихся в удаленном каталоге. – 2012-06-01 17:53:36
Я думал, что сойду с ума, когда прочитаю ответ; Я никогда не знал, что mget был рекурсивным. Оказывается, это не так. Это не правильный ответ на название этого вопроса. Ответы wget ниже работают хорошо. – Jason 2012-10-23 19:56:31
Даун-проголосовали, поскольку это неправильный ответ – rroche 2012-11-01 23:44:24
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Если вы можете, я настоятельно рекомендую вам tar
и bzip
(или gzip
, независимо от плывет лодка) каталог на удаленном компьютере, для каталога любого значительного размера, экономии пропускной способности вероятно, будет стоить времени на zip/unzip.
Вместо этого используйте 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/
Если вы хотите придерживаться командной строки FTP, вы должны попробовать NcFTP. Затем вы можете использовать get -R для рекурсивного получения папки. Вы также получите завершение.
wget -r ftp://url
Работа идеально подходит для Redhat и Ubuntu
тумблера подсказки по командной строке.
Использование:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
Просто, чтобы дополнить ответ дал Тибо Barrere.
Я использовал
wget -r -nH --cut-dirs=5 -nc ftp://user:[email protected]//absolute/path/to/directory
примечание двойной слэш после имени сервера. Если я не добавлю дополнительную косую черту, путь будет относиться к домашнему каталогу пользователя.
- -nH избегает создания каталога с именем имя сервера
- -nc избегает создания нового файла, если он уже существует в месте назначения (он просто пропускается)
- --cut-каталоги = 5 позволяет мне взять содержимое каталога/absolute/path/to/и поместить его в каталог, где я запускаю wget. Число 5 используется для фильтрации 5 компонентов пути. Двойная косая черта означает дополнительный компонент.
Если на вашей машине установлено lftp
, используйте mirror dir
. И все готово. См. Комментарий Ciro ниже, если вы хотите рекурсивно загрузить каталог.
Вы не должны использовать ftp
. Подобно telnet
, он не использует безопасные протоколы, а пароли передаются в ясном тексте. Это упрощает для третьих лиц запись вашего имени пользователя и пароля.
Для копирования удаленных каталогов удаленно, эти параметры лучше:
rsync
является наиболее подходящим инструментом, если вы можете войти черезssh
, потому что она копирует только различия, и может легко перезагрузить в середине в случае разрыва соединения.ssh -r
- второй вариант, позволяющий рекурсивно копировать структуры каталогов.
См:
правильный ответ с 6 апреля 11 в 14:13 по lkuty. Не используйте `mget`, он не рекурсивный вообще. Ответ от 22.09.2008 в 9:01 Thibaut Barrère легче понять, но должен добавить опцию `-l 0`, как указано в комментариях – chriscatfr 2012-11-11 22:12:34