Linux文件时间戳咨询:仅修改last status change time或last modification time的场景
Linux文件时间戳咨询:仅修改last status change time或last modification time的场景
我来给你梳理两个符合需求的场景,都是实际可操作的,你可以亲手验证:
场景一:仅修改last status change time(ctime),不改动last modification time(mtime)
这个很容易实现,只要你修改文件的元数据而不触碰文件内容就行。文件的元数据包括权限、所有者、所属组这些属性,比如:
- 执行命令
chmod 644 f.txt修改文件的读写权限 - 或者执行
chown your_username:your_group f.txt修改文件的所有者和所属组
完成操作后运行 stat f.txt 查看,你会发现 ctime 已经更新为当前操作的时间,但 mtime 依然保持原来的数值——毕竟文件内容没做任何改动,自然不会触发修改时间的变化。
场景二:仅修改last modification time(mtime),不改动last status change time(ctime)
这个在常规操作里比较特殊,因为普通修改mtime的操作(比如 touch -m f.txt)本质上是修改了文件的元数据(时间戳本身属于元数据范畴),所以ctime也会跟着更新。但如果要实现只改mtime不动ctime,就得借助底层文件系统调试工具 debugfs(需要root权限,操作前建议备份文件):
- 先卸载目标文件所在的分区(或者先挂载为只读,再重新挂载为读写,确保文件系统处于可修改inode的状态)
- 执行
debugfs -w /dev/your_partition进入文件系统调试模式(把/dev/your_partition换成实际的分区路径,比如/dev/sda1) - 输入
set_inode_field f.txt mtime "2024-01-01 12:00:00"来设置指定的mtime时间(可以替换成你想要的任意时间) - 退出debugfs后重新挂载分区,再运行
stat f.txt查看,就能看到mtime已经改成了你设置的时间,而ctime依然保持原来的数值
不过要提醒一下,这种底层操作有一定风险,非必要情况下不建议在生产环境中使用哦。
备注:内容来源于stack exchange,提问作者tahzibi.jafar
相关产品推荐
相关产品推荐

