Как я могу рекурсивно фтп только определенные типы файлов с сервера Linux с помощью командной строки? - PullRequest
5 голосов
/ 01 августа 2009

Я хочу загружать только файлы .htm или .html с моего сервера. Я пытаюсь использовать ncftpget и даже wget, но с ограниченным успехом.

с помощью ncftpget Я могу загрузить всю древовидную структуру без проблем, но не могу указать, какие файлы мне нужны, это либо все, либо ничего.

Если я укажу такой тип файла, он будет выглядеть только в верхней папке:

ncftpget -R -u myuser -p mypass ftp://ftp.myserver.com/public_html/*.htm ./local_folder

Если я сделаю это, он загрузит весь сайт, а не только файлы .htm:

ncftpget -R -u myuser -p mypass ftp://ftp.myserver.com/public_html/ ./local_folder *.htm

Могу ли я использовать ncftp для этого или есть другой инструмент, который я должен использовать?

Ответы [ 3 ]

4 голосов
/ 01 августа 2009

Вы можете сделать это с помощью wget

wget -r -np -A "*.htm*" ftp://site/dir

или

wget -m -np -A "*.htm*" ftp://user:pass@host/dir

Однако, согласно Типы файлов :

Обратите внимание, что эти два параметра не влияют на загрузку файлов HTML (как определено префиксом .htm или .html имени файла). Такое поведение может быть нежелательным для всех пользователей и может быть изменено для будущих версий Wget.

0 голосов
/ 01 августа 2009

Команда wget понимает синтаксис глобализации стоящего файла Unix.

wget -r -np --ftp-user=username --ftp-password=password "ftp://example.com/path/to/dir/*.htm"

И наоборот, вы можете использовать опцию -A, которая принимает список разделенных запятыми суффиксов или шаблонов имен файлов для принятия.

wget -A '*.htm'

Параметр -R противоположен -A, поэтому вы можете использовать его для указания шаблонов, которые НЕ нужно извлекать.

Предостережение: не забудьте процитировать шаблоны! В противном случае ваша оболочка может сама расширить глобус, что приведет к неожиданным результатам.

Также! См. «Использование wget для рекурсивной загрузки целых каталогов FTP» о сбое сервера.

0 голосов
/ 01 августа 2009

ncftpget понимает dir globs?

Попробуйте

ncftpget -R -u myuser -p mypass ftp://ftp.myserver.com/public_html/**/*.htm ./local_folder

** означает любое количество каталогов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...