Как рекурсивно скачать папку через FTP на Linux

Я пытаюсь открыть папку с помощью 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 компонентов пути. Двойная косая черта означает дополнительный компонент.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory

Если lftp установлен на вашем компьютере, используйте mirror dir, И вы сделали. Смотрите комментарий Сиро ниже, если вы хотите рекурсивно скачать каталог.

Если вы можете использовать scp вместо ftp, -r вариант сделает это за вас. Я бы проверил, можно ли использовать более современный механизм передачи файлов, чем FTP.

Вместо этого используйте 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

Если вы можете, я настоятельно рекомендую вам tar а также bzip (или же gzipнезависимо от того, что перемещает вашу лодку) каталог на удаленной машине - для каталога любого значительного размера экономия полосы пропускания, вероятно, будет стоить времени, чтобы сжать / разархивировать.

Вы не должны использовать ftp, подобно telnet он не использует безопасные протоколы, а пароли передаются в виде открытого текста. Это позволяет третьим лицам легко получить ваше имя пользователя и пароль.

Для удаленного копирования удаленных каталогов эти параметры лучше:

  • rsync является наиболее подходящим инструментом, если вы можете войти через ssh, потому что он копирует только различия и может легко перезапустить в середине в случае разрыва соединения.

  • ssh -r является вторым лучшим вариантом для рекурсивного копирования структур каталогов.

Увидеть:

Переключить подсказку командой PROMPT.

Использование:

ftp>cd /to/directory    
ftp>prompt    
ftp>mget  *
Другие вопросы по тегам