Как рекурсивно загрузить папку через FTP в Linux [закрыто]
Я пытаюсь ftp-папку с помощью ftp-клиента командной строки, но до сих пор я мог использовать только " get " для получения отдельных файлов.
12 ответов
вы можете положиться на 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 -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 компонентов пути. Двойная косая черта означает дополнительный компонент.
Если lftp
установлен на вашем компьютере, используйте mirror dir
. И вы закончили. См. комментарий Ciro ниже, если вы хотите рекурсивно загрузить каталог.
Если вы можете использовать scp
вместо ftp
на -r
опция сделает это за вас. Я бы проверил, можете ли вы использовать более современный механизм передачи файлов, чем FTP.
существует "ncftp", который доступен для установки в linux. Это работает по протоколу FTP и может использоваться для рекурсивной загрузки файлов и папок. работает на Linux. Используется и отлично работает для рекурсивной передачи папок/файлов.
, проверьте эту ссылку... http://www.ncftp.com/
вместо этого используйте WGet. Он поддерживает протоколы HTTP и FTP.
wget -r ftp://mydomain.com/mystuff
Удачи!
ссылка:http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Если вы можете, я настоятельно рекомендую вам tar
и bzip
(или gzip
, что бы ни плавало на вашей лодке) каталог на удаленной машине-для каталога любого значительного размера экономия полосы пропускания, вероятно, будет стоить времени на zip / unzip.
Если вы хотите придерживаться FTP командной строки, вы должны попробовать NcFTP. Затем вы можете использовать get-R для рекурсивного получения папки. Вы также получите завершение.
вы не должны использовать ftp
. Как telnet
он не использует защищенные протоколы, и пароли передаются в незашифрованном виде. Это делает его очень легким для третьих лиц, чтобы захватить ваше имя пользователя и пароль.
чтобы скопировать удаленные каталоги удаленно, эти параметры лучше:
rsync
является наиболее подходящим инструментом, если вы можете войти черезssh
, потому что он копирует только различия, и может легко перезагрузить в середине в случае подключения разрыв.ssh -r
является вторым лучшим вариантом для рекурсивного копирования структур каталогов.
посмотреть:
переключите приглашение командой приглашения.
использование:
ftp>cd /to/directory
ftp>prompt
ftp>mget *