2013-07-03 22 views
1

有一個遠程文件系統,我可以使用ssh訪問。ssh - 獲取許多遠程文件的元數據

我需要:

  1. 掃描該文件系統查找所有大於給定日期時間較新的文件。
  2. 檢索這些文件的名稱,規格清單及modified_time_stamp

一些限制:

  1. 我無法上傳腳本到這個遠程服務器。我只能通過ssh運行命令
  2. 遠程服務器中可能有超過100K的文件,並且此過程至少每分鐘發生一次,所以ssh調用的數量應該最小,最好等於1

我已經得到管理(1)以此來:

`touch -am -t {timestamp} /tmp/some_filename; find {path} -newer /tmp/some_filename; rm /tmp/some_filename')` 

,我想我可以在管道結果的方向移動到「xargs的ls -l命令」,然後解析結果從那裏提取大小和時間戳,但後來我發現this article ...

另外,我正在使用python運行命令(即它不只是一個命令行),所以它的確定做從ssh命令傳來的結果一些後處理

+0

的100,000個文件一分鐘一次運行一個大的發現似乎是不明智的。 – Paul

回答

1

我建議寫或在服務器端修改您的Python腳本如下:

  1. 當在一段時間內沒有獲得數據,使用您提供的觸摸/查找腳本獲取初始數據,並對找到的文件進行調用以獲取所需的屬性
  2. 然後,在服務器上的python腳本中,訂閱inotify()數據獲取更新。
  3. 當遠程連接和需要所有這些數據,從組合1周+ 2

的inotify提供最新的更新是一個系統調用在Linux支持,使您可以監控實時目錄文件系統事件。

參見:

https://serverfault.com/questions/30292/automatic-notification-of-new-or-changed-files-in-a-folder-or-share

http://linux.die.net/man/7/inotify

https://github.com/seb-m/pyinotify