【发布时间】:2014-10-22 00:32:00
【问题描述】:
有没有办法使用 Tamir.SharpSsh 从 SFTP 服务器获取基于修改日期的文件?目前我正在按文件名下载文件,但我的要求是按修改日期。
var sftp = new Sftp(Host, UserName, Password);
sftp.Connect();
sftp.Get(sourcePath+"/*.*." + name + "*", destinationPath);
【问题讨论】:
有没有办法使用 Tamir.SharpSsh 从 SFTP 服务器获取基于修改日期的文件?目前我正在按文件名下载文件,但我的要求是按修改日期。
var sftp = new Sftp(Host, UserName, Password);
sftp.Connect();
sftp.Get(sourcePath+"/*.*." + name + "*", destinationPath);
【问题讨论】:
SharpSsh 不允许这样做。这是一个死项目,不要使用它。
无论如何,我查看了代码以评估使用Sftp.GetFileList 检索文件时间戳的难度(因为该库是开源的)。
你必须:
ChannelSftp.LsEntry
SSH_FXP_NAME数据包中的时间戳解析添加到ChannelSftp.ls方法Sftp.GetFileList 以不仅返回文件名,还返回时间戳(和其他文件元数据)。或者,您可以使用WinSCP .NET assembly。您可以将其Session.GetFiles method 与file mask 一起使用。例如。 file mask *>7D selects all files modified in the last week。
(我是 WinSCP 的作者)
【讨论】:
SFTP 协议不允许您为操作指定文件掩码。无论如何,您传递的掩码的处理都是在客户端完成的。所以你只能列出所有文件,然后遍历列表,按照一定的标准挑选你需要的文件。
【讨论】: