如何修改文件的最后访问/修改/变更日期?应对HPC服务器文件自动删除
可行方案:不修改文件内容更新访问时间规避清理
完全可以在不改动文件内容的前提下更新文件的Access日期,以此避开HPC临时存储盘的两周自动清理机制,下面是几种靠谱的方法:
1. 用touch命令精准更新访问时间
touch是最直接的工具,通过参数可以只更新访问时间,完全不碰文件内容:
- 更新为当前系统时间:
这个命令只会修改文件的Access字段为当前时间,Modify时间(文件内容最后修改时间)不会变化,仅因元数据更新会触发Change时间变动,但这不属于内容修改范畴。touch -a filename.txt - 指定自定义时间更新:
如果需要把访问时间设为某个特定日期而非当前时间,搭配-t参数:
时间格式为touch -a -t 202405201430 filename.txtYYYYMMDDhhmm(年-月-日-时-分),灵活度很高。
2. 只读打开文件触发时间更新(依赖文件系统配置)
如果HPC的存储盘没有挂载noatime参数(很多HPC为了性能会开启这个选项,禁用访问时间更新),可以通过只读方式打开文件来触发Access时间更新,比如:
cat filename.txt > /dev/null
或者用less filename.txt打开后按q退出。但这种方式稳定性不如touch,因为如果管理员开了noatime,打开文件也不会更新访问时间,优先推荐用touch -a。
注意事项
- 先确认清理规则:有些HPC的自动清理可能是基于Modify时间而非Access时间,比如你提供的
stat输出里Modify时间是2019年,如果清理逻辑看这个字段,那更新Access时间就没用了,建议先测试或咨询管理员确认。 - 批量处理:如果有大量文件需要维护,用循环批量操作更高效:
for file in /scratch/your-dir/*; do if [ -f "$file" ]; then touch -a "$file" fi done
内容的提问来源于stack exchange,提问作者1288Meow
相关产品推荐
相关产品推荐

