問題:
有什麼方法可以跟蹤Linux中文件的進度(即新文件/保存文件)嗎?在Linux中觀察文件的更改
詳情:
我知道inotify可用於跟蹤文件的創建,刪除和修改整個文件夾。但是,這些水平非常低。文本編輯器通常在保存文件時,將修改後的緩衝區寫入臨時位置,然後移動它並覆蓋原始文件。當我想要的是MODIFY
時,這會被看作是CREATE
和MOVE
。
對我來說,每次保存文件都會被解釋爲一個新文件,這看起來並不直觀。是否有任何文件的識別值可用於區分創建新文件和保存現有文件?提出這個問題的另一種方法是:「程序如Beagle,Spotlight,Windows Search和Google Desktop如何解決此問題」?
目標:
這裏是描述我想有什麼好辦法:使用Vim
,如果我打開一個文件並保存(:w
),該文件將被寫入到一個臨時文件,然後移動到原始文件,欺騙inotify
認爲創建了一個全新的文件,然後用它來覆蓋原始文件。但是,如果將文件添加到subversion(svn
),然後使用Vim
打開該文件並將其保存(:w
),則svn
將知道保存的文件實際上是修改後的文件,而不是新文件。 svn
如何知道這一點?
即使存儲了創建時間,在這種情況下它是否仍然會被文本編輯器覆蓋?如果文本編輯器保存的文件如'cp a.txt a.txt〜; rm a.txt; cp a.txt〜a.txt'?有什麼辦法可以解決這個問題嗎? – puk
我的問題不是我不知道什麼時候創建了文件,而是像'vim'這樣的程序寫入臨時文件,然後將其移至原始文件,因此無法確定文件何時被覆蓋完全或只是隨意修改。 – puk
真實的臨時文件很難說清楚。你關心安全還是別的什麼?如果安全,那麼像tripwire這樣的程序可能會有所幫助,但我不知道他們如何確定文件何時更改。 – johnshen64