3

有没有办法从 SFTP 服务器获取文件,这些文件应该基于使用 Tamir.SharpSsh 的修改日期?目前我正在按文件名下载文件,但我的要求是按修改日期。

var sftp = new Sftp(Host, UserName, Password);
sftp.Connect();
sftp.Get(sourcePath+"/*.*." + name + "*", destinationPath);
4

2 回答 2

5

SharpSsh 不允许这样做。这是一个死项目,不要使用它。

无论如何,我查看了代码以评估使用Sftp.GetFileList(因为库是开源的)增加检索文件时间戳的可能性的难度。

你必须:

  • 将时间戳字段添加到ChannelSftp.LsEntry
  • SSH_FXP_NAME将从数据包中解析出的时间戳添加到ChannelSftp.ls方法中
  • 修改(或添加替代项)Sftp.GetFileList以不仅返回文件名,还返回时间戳(和其他文件元数据)。

或者,您可以使用WinSCP .NET 程序集。您可以将其Session.GetFiles方法文件掩码一起使用。例如,文件掩码*>7D选择上周修改过的所有文件

(我是WinSCP的作者)

于 2014-08-28T13:09:05.363 回答
0

SFTP 协议不允许您为操作指定文件掩码。无论如何,您传递的掩码的处理都是在客户端完成的。所以你只能列出所有文件,然后遍历列表,按照一定的标准挑选你需要的文件。

于 2014-08-28T13:04:35.583 回答