You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何tar归档时不更新零字节文件的atime?如何解决该问题?

解决tar归档时空文件atime不更新的问题

方案1:归档前后手动更新空文件的访问时间

这是最直接的解决方式,用touch命令强制刷新空文件的atime。你可以在执行tar归档前,先定位目标目录下所有零字节文件并更新它们的访问时间:

# 替换为你的目标目录路径
find /your/target/dir -type f -size 0 -exec touch {} \;
# 接着执行归档命令
tar -cvzf archive.tar.gz /your/target/dir

如果担心归档过程中遗漏,也可以在归档完成后再执行一次上述find+touch命令。

方案2:通过读取操作触发atime更新

tar处理空文件时可能不会触发实际读取动作,导致atime不更新。你可以先通过cat读取所有空文件(即使没有内容),强制触发atime更新:

# 读取所有空文件并丢弃输出
find /your/target/dir -type f -size 0 -exec cat {} \; > /dev/null
# 再执行归档
tar -cvzf archive.tar.gz /your/target/dir

这个操作会让系统认为文件被访问过,从而更新atime。

备选方案:调整系统atime策略(需管理员权限)

多数现代Linux默认使用relatime策略,只有当atime早于mtime/ctime时才会更新。如果你有系统权限,可以将目标分区的挂载选项改为strictatime,这样任何文件访问(包括打开空文件)都会更新atime。但此改动会影响分区性能,非必要不推荐:

  1. 编辑/etc/fstab中对应分区的挂载行,添加strictatime选项
  2. 重新挂载分区生效:
mount -o remount,strictatime /your/mount/point

内容的提问来源于stack exchange,提问作者Talles Brito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:27:35