Я пытаюсь загрузить ftp-папку с помощью ftp-клиента командной строки, но до сих пор я мог использовать "get" для получения отдельных файлов.
Как рекурсивно загружать папку через FTP в Linux
Ответ 1
Вы можете положиться на wget, который обычно обрабатывает ftp правильно (по крайней мере, на собственном опыте). Например:
wget -r ftp://user:[email protected]/
Вы также можете использовать -m
, который подходит для зеркалирования. В настоящее время он эквивалентен -r -N -l inf
.
Если у вас есть специальные символы в данных учетных данных, вы можете указать аргументы --user
и --password
, чтобы заставить его работать. Пример с пользовательским входом со специальными символами:
wget -r --user="[email protected]" --password="Pa$$wo|^D" ftp://server.com/
ИЗМЕНИТЬ
Как отметил @asmier, обратите внимание, что даже если -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.
Ответ 2
Просто чтобы дополнить ответ, данный Тибо Баррером.
Я использовал
wget -r -nH --cut-dirs=5 -nc ftp://user:[email protected]//absolute/path/to/directory
Обратите внимание на двойную косую черту после имени сервера. Если я не добавлю лишнюю косую черту, путь будет относиться к домашнему каталогу пользователя.
- -nH избегает создания каталога с именем имени сервера
- -nc избегает создания нового файла, если он уже существует в пункте назначения (он просто пропущен)
- - cut-dirs = 5 позволяет мне взять содержимое каталога/absolute/path/to/и поместить его в каталог, где я запускаю wget. Число 5 используется для фильтрации 5 компонентов пути. Двойная косая черта означает дополнительный компонент.
Ответ 3
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Ответ 4
Если на вашем компьютере установлено lftp
, используйте mirror dir
. И все готово. См. Комментарий Ciro ниже, если вы хотите рекурсивно загрузить каталог.
Ответ 5
Если вы можете использовать scp
вместо ftp
, опция -r
сделает это за вас. Я бы посмотрел, можно ли использовать более современный механизм передачи файлов, чем FTP.
Ответ 6
Существует "ncftp", который доступен для установки в Linux. Это работает по протоколу FTP и может использоваться для рекурсивного скачивания файлов и папок. работает над linux. Был использован и отлично работает для рекурсивной передачи файлов/файлов.
Отметьте эту ссылку... http://www.ncftp.com/
Ответ 7
Вместо этого используйте WGet. Он поддерживает протоколы HTTP и FTP.
wget -r ftp://mydomain.com/mystuff
Удачи!
ссылка: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Ответ 8
Если вы хотите придерживаться командной строки FTP, вы должны попробовать NcFTP. Затем вы можете использовать get -R для рекурсивного получения папки. Вы также получите завершение.
Ответ 9
Если вы можете, я настоятельно рекомендую вам tar
и bzip
(или gzip
, независимо от того, что плавает ваша лодка), каталог на удаленном компьютере - для каталога любого значительного размера экономия полосы пропускания, вероятно, будет стоит времени на zip/unzip.
Ответ 10
wget -r ftp://url
Отлично работать для Redhat и Ubuntu
Ответ 11
Нельзя использовать ftp
. Подобно telnet
, он не использует безопасные протоколы, а пароли передаются в виде чистого текста. Это упрощает третьим лицам фиксировать ваше имя пользователя и пароль.
Чтобы удаленно копировать удаленные каталоги, эти параметры лучше:
-
rsync
- самый подходящий инструмент, если вы можете войти черезssh
, потому что он копирует только различия и может легко перезапускаться посередине в случае разрыва соединения. -
ssh -r
- второй вариант для рекурсивного копирования структур каталогов.
См:
Ответ 12
Попробуйте 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)
Но использование scp или rsync поверх ssh, вероятно, лучше, чем ftp, если вы можете.
Повторить:
cd /dir
prompt
interactive mode off
mget *
Ответ 13
переключить запрос командой PROMPT.
Использование:
ftp>cd /to/directory
ftp>prompt
ftp>mget *