根据从SFTP修改日期下载文件
问题描述:
有没有一种方法可以从SFTP服务器获取文件,该文件应该基于使用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协议不允许您为操作指定文件掩码。无论如何,您传递的掩码处理都在客户端完成。因此,您只能列出所有文件,然后遍历列表并根据特定条件选择需要的文件。
+3
SharpSSh的问题是它不允许您检索任何文件属性。 – 2014-08-28 13:09:59
我不认为你可以下载的方式。我唯一的新东西是让所有文件列在sftp上,但是这个文件的细节我不这么认为。 – 2014-08-28 08:20:35
是的,我知道我们从特定目录获取文件列表。我想要的是我需要根据修改日期列出文件。 – Sudha 2014-08-28 09:41:41