2009-07-31 37 views
5

我只想从我的服务器下载.htm或.html文件。我试图使用ncftpget,甚至wget,但只有有限的成功。如何使用命令行从Linux服务器中仅递归地ftp特定文件类型?

与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来做到这一点,或者我应该使用另一种工具吗?

回答

4

你可以用wget的

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

或做它:

wget -m -np -A "*.htm*" ftp://user:[email protected]/dir 

然而,按照Types of Files

注意,这两个选项不影响HTML的下载文件(由.htm.html文件名前缀确定)。对于所有用户来说,这种行为可能并不理想,并且可能会针对未来版本的Wget进行更改。

+0

例如,您应该使用`* .htm *'`将* * .htm *``传递给wget。 – Jazz 2009-07-31 22:51:53

0

ncftpget是否理解dir globs?

尝试

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

**表示任意数量的目录。

+0

不起作用 – 2009-07-31 22:52:40

0

wget命令了解常用的unix文件通配语法。

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

相反,您可以使用-A选项,它接受一个逗号分隔的文件名后缀或模式接受的列表。

wget -A '*.htm' 

-R选项的-A对面,所以你可以用它来指定模式不去取。

警告:确保引用模式!否则,你的外壳可能会扩大glob本身,导致意想不到的结果。

另外!请参阅服务器故障上的"Using wget to recursively download whole FTP directories"问题。

相关问题