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

Я пытаюсь загрузить ftp-папку с помощью ftp-клиента командной строки, но до сих пор я мог использовать "get" для получения отдельных файлов.

Ответ 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/

Ответ 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  *