2014-08-28 198 views
3

有没有一种方法可以从SFTP服务器获取文件,该文件应该基于使用Tamir.SharpSsh的修改日期?目前我正在通过文件名下载文件,但我的要求是按修改日期。根据从SFTP修改日期下载文件

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

我不认为你可以下载的方式。我唯一的新东西是让所有文件列在sftp上,但是这个文件的细节我不这么认为。 – 2014-08-28 08:20:35

+0

是的,我知道我们从特定目录获取文件列表。我想要的是我需要根据修改日期列出文件。 – Sudha 2014-08-28 09:41:41

回答

4

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

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

你必须:

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

或者,你可以使用WinSCP .NET assembly。您可以将它的Session.GetFiles methodfile mask一起使用。例如。一个file mask *>7D selects all files modified in the last week

(我的WinSCP的作者)

0

SFTP协议不允许您为操作指定文件掩码。无论如何,您传递的掩码处理都在客户端完成。因此,您只能列出所有文件,然后遍历列表并根据特定条件选择需要的文件。

+3

SharpSSh的问题是它不允许您检索任何文件属性。 – 2014-08-28 13:09:59