如何使用命令行以递归方式从linux服务器ftp某些文件类型?

时间:2009-07-31 22:35:22

标签: file recursion ftp types

我想从我的服务器下载.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 个答案:

答案 0 :(得分:4)

你可以用wget

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

或:

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

但是,根据Types of Files

  

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

答案 1 :(得分:0)

ncftpget能理解dir globs吗?

尝试

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

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

答案 2 :(得分: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相反,因此您可以使用它来指定不要获取的模式。

警告:确保引用模式!否则,您的shell 可能会扩展glob本身,从而导致意外结果。

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