2016-02-07 54 views
3

我正在設計一個簡單的增量備份工具。是否有可能在修改目錄內容後,此目錄的「上次修改」屬性將保持不變?原因可能是NTFS故障或錯誤,我不知道。我找到了NtfsDisableLastAccessUpdate的選項。是否也可以關閉修改時間戳更新?做備份時使用上次修改的目錄時間戳可靠嗎?

我想知道這個屬性有多可靠,所以我可以決定是否用它來備份文件系統是個好主意。

我使用FileSystemInfo.LastWriteTime來提取C#中的信息。

+0

我對C#一無所知,但我記得讀過一些PHP函數不會修改日期修改日期,除非您明確告訴他們。從那裏,我會收集你的答案取決於如何修改文件。 – Carcigenicate

+1

而不是禁用更新,它似乎只能恢復修改時間戳 - 請參閱[本討論](http://superuser.com/questions/710014/how-to-disable-modified-time-stamp-in -視窗)。 –

+1

IIRC,將文件寫入'a \ b'只會改變'b'的修改日期而不是'a'的修改日期。所以你不能跳過任何具有相同修改日期的目錄,你仍然需要遍歷目錄結構。 –

回答

2

我不認爲,最後修改時間戳是可靠的。

時間戳由您正在使用的文件系統決定。

E.g. FAT32在處理修改/創建的時間時使用本地時間戳。

while NTFS使用UTC時區。

另外,FAT32約有2 second resolution for last write times。 這意味着它不能準確記錄上次修改日期到秒。

此外,當您將文件從FAT32複製到NTFS時,您會看到大量其他時間戳problems

有規則如何時間戳由filesystems

而且決定,你可以很容易地使用第三方工具的任何文件和文件夾的change the timestamp

0

在較新的Windows版本中,NTFS不更新實際上正在寫入的打開日誌文件上的最後修改時間戳,直到這些文件被關閉或者某些東西強制日期更新(不清楚它是什麼,但顯然是一些方法)。


https://blogs.technet.microsoft.com/asiasupp/2010/12/14/file-date-modified-property-are-not-updating-while-modifying-a-file-without-closing-it/

https://social.technet.microsoft.com/Forums/windowsserver/en-US/2b8baca2-9c1b-4d80-80ed-87a3d6b1336f/file-timestamp-not-updating-on-2008-but-does-on-2003?forum=winservergen&prof=required

沒有可靠的工作程序解決方法已經提出了批處理文件。
批處理文件的不可靠解決方案在需要修改日期爲最新的文件上調用dir

在他們使用的是Windows API
(爲我工作)提到綱領性的解決方法另一方面:

由於解決方法爲任何進程打開和關閉句柄到日誌文件,工具被寫入做到這些,再加上獲取文件信息,使用下列API:
的CreateFile
GetFileInformationByHandle
CloseHandle的

我知道,例如在「XPlorer2」應用程序中發佈「刷新」以某種方式觸發更新,以便所有應用程序將開始看到更新的「上次修改」時間戳。