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

本文关键字:修改 时间戳 是否 备份 | 更新日期: 2023-09-27 18:33:33

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

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

我想知道此属性的可靠性,因此我可以决定使用它来备份文件系统是否是一个好主意。

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

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

我不

认为,上次修改的时间戳是可靠的。

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

例如,FAT32 在处理修改/创建时间时使用本地时间戳。

NTFS 使用 UTC 时区。

此外,FAT32 的上次写入时间分辨率约为 2 秒。这意味着它无法准确地将上次修改日期记录为秒。

另外,当您将文件从FAT32复制到NTFS时,您会看到一大堆其他时间戳问题。

文件系统如何决定时间戳是有规则的

此外,您可以使用第三方工具轻松更改任何文件和文件夹的时间戳。

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

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

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

在较新的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 获取文件信息:
创建文件
获取文件信息按句柄
关闭手柄

我知道例如在"XPlorer2"应用程序中发出"刷新"确实会以某种方式触发更新,以便所有应用程序都将开始看到更新的"上次修改"时间戳。