![如何防止 Linux 中的“atime”覆盖 NTFS 上 Windows 中的“创建日期”?](https://linux22.com/image/153735/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20Linux%20%E4%B8%AD%E7%9A%84%E2%80%9Catime%E2%80%9D%E8%A6%86%E7%9B%96%20NTFS%20%E4%B8%8A%20Windows%20%E4%B8%AD%E7%9A%84%E2%80%9C%E5%88%9B%E5%BB%BA%E6%97%A5%E6%9C%9F%E2%80%9D%EF%BC%9F.png)
在 Linux 中,如果我更改 NTFS 外部硬盘上的文件,以便获得mtime
、atime
和的一些特定值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,并以相同的方式为每个文件恢复它们。
不是很漂亮,但很有效。