在进行备份时使用目录的 Last Modified 时间戳是否可靠?
Is it reliable to use Last Modified timestamp of directory while doing a backup?
我正在设计一个简单的增量备份工具。有没有可能,我修改目录内容后,这个目录的 "Last Modified" 属性会保持不变?原因可能是 NTFS 故障或错误,我不知道。
我发现有一个选项 NtfsDisableLastAccessUpdate
。是否也可以关闭修改时间戳更新?
我想知道这个属性有多可靠,这样我就可以决定用它来备份文件系统是否是个好主意。
我正在使用 FileSystemInfo.LastWriteTime
在 C# 中提取该信息。
我不认为,最后修改的时间戳是可靠的。
时间戳由您使用的文件系统决定。
例如FAT32在处理modified/created时间时使用本地时间戳。
而 NTFS 使用 UTC 时区。
此外,FAT32 大约有 2 second resolution for last write times。
这意味着它无法准确地将最后修改日期记录到秒。
此外,当您将文件从 FAT32 复制到 NTFS 时,您会看到一大堆其他时间戳 problems。
有规则如何决定时间戳
此外,您可以使用第三方工具轻松 change the timestamp 任何文件和文件夹。
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
(为我工作):
的编程解决方法
As the workaround is for any process to open and close a handle to the log files, a tool was written to do exactly that, plus get the file information, using the following APIs:
CreateFile
GetFileInformationByHandle
CloseHandle
我知道,例如在 "XPlorer2" 应用程序中发布 "Refresh" 确实会以某种方式触发更新,以便所有应用程序将开始看到更新的 "last modified" 时间戳。
我正在设计一个简单的增量备份工具。有没有可能,我修改目录内容后,这个目录的 "Last Modified" 属性会保持不变?原因可能是 NTFS 故障或错误,我不知道。
我发现有一个选项 NtfsDisableLastAccessUpdate
。是否也可以关闭修改时间戳更新?
我想知道这个属性有多可靠,这样我就可以决定用它来备份文件系统是否是个好主意。
我正在使用 FileSystemInfo.LastWriteTime
在 C# 中提取该信息。
我不认为,最后修改的时间戳是可靠的。
时间戳由您使用的文件系统决定。
例如FAT32在处理modified/created时间时使用本地时间戳。
而 NTFS 使用 UTC 时区。
此外,FAT32 大约有 2 second resolution for last write times。 这意味着它无法准确地将最后修改日期记录到秒。
此外,当您将文件从 FAT32 复制到 NTFS 时,您会看到一大堆其他时间戳 problems。
有规则如何决定时间戳此外,您可以使用第三方工具轻松 change the timestamp 任何文件和文件夹。
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
(为我工作):
As the workaround is for any process to open and close a handle to the log files, a tool was written to do exactly that, plus get the file information, using the following APIs:
CreateFile
GetFileInformationByHandle
CloseHandle
我知道,例如在 "XPlorer2" 应用程序中发布 "Refresh" 确实会以某种方式触发更新,以便所有应用程序将开始看到更新的 "last modified" 时间戳。