2014-08-28 74 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