在进行备份时使用上次修改的目录时间戳是否可靠?

时间:2016-02-07 23:17:30

标签: c# windows backup ntfs

我正在设计一个简单的增量备份工具。是否有可能,在修改目录内容后,该目录的“Last Modified”属性将保持不变?原因可能是NTFS故障或错误,我不知道。

我发现有一个选项NtfsDisableLastAccessUpdate。是否也可以关闭修改时间戳更新?

我想知道这个属性有多可靠,所以我可以决定用它来备份文件系统是不是一个好主意。

我正在使用FileSystemInfo.LastWriteTime在C#中提取该信息。

3 个答案:

答案 0 :(得分:2)

我不认为,最后修改的时间戳是可靠的。

时间戳由您正在使用的文件系统决定。

E.g。 FAT32 在处理修改/创建时间时使用本地时间戳。

NTFS 使用 UTC 时区。

此外, FAT32 大约有2 second resolution for last write times。 这意味着它无法准确地将上次修改日期记录为秒。

此外,当您将文件从FAT32复制到NTFS时,您会看到一大堆其他时间戳problems

filesystems

决定时间戳的规则

此外,您可以轻松地使用第三方工具change the timestamp任何文件和文件夹。

答案 1 :(得分:0)

FSUTIL有助于更改时间戳。示例命令 - fsutil behavior set disablelastaccess 1

此网站可帮助您了解参数。 https://technet.microsoft.com/en-us/library/cc785435.aspx

希望这对您的设计有所帮助。

答案 2 :(得分: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"应用程序以某种方式触发更新,以便所有应用程序将开始看到更新"最后修改"时间戳。

相关问题