如何防止 Linux 中的“atime”覆盖 NTFS 上 Windows 中的“创建日期”?

如何防止 Linux 中的“atime”覆盖 NTFS 上 Windows 中的“创建日期”?

在 Linux 中,如果我更改 NTFS 外部硬盘上的文件,以便获得mtimeatime和的一些特定值ctime(可以使用命令读取stat,并且 withctime = mtime因为无法从 Linux 更改 NTFS 上文件的访问权限 - 我认为),然后如果我在 Windows 7 系统上连接相同的外部硬盘,我看到了这一点Date modified = mtime(如预期),但我也得到了Date created = atime.

如何atime获取与 NTFSCTime时间戳关联的占位符?是否有办法避免这种行为,例如noatime在 NTFS 卷上使用该选项是否是一个正确的解决方案?我的目标是能够在同一个外部硬盘上同时在 Windows 和 Linux 上工作,而不会混合太多时间戳。

编辑

重新排查问题后发现,最终问题并不存在。我问这个问题的时候一定很困惑。我仍然留下这个问题,因为它产生了一些评论和答案。

答案1

这太大了,无法写成评论,但我认为它会有所帮助。

如果你想避免这种行为,你可以这样做:

 $current_ctime=$(getfattr -n system.ntfs_crtime_be -e hex yourfile | grep system.ntfs_crtime_be | cut -d= -f2) 

然后在更改后使用以下命令恢复 current_ctime:

setfattr -n system.ntfs_crtime_be -v $current_ctime yourfile 

为了多个文件,例如,您可以使用 for 循环存储所有 ctime,并以相同的方式为每个文件恢复它们。

不是很漂亮,但很有效。

相关内容