Golang 1.23:使用os.DirFS和os.CopyFS能否保留文件时间戳?
关于Go 1.23
os.CopyFS 时间戳问题的解答 - 目前
os.CopyFS确实没有提供保留源文件时间戳的配置选项,你查看源码的结论是正确的。该函数复制文件时,会默认将目标文件的修改、访问时间设为调用时的当前时间,没有暴露参数允许调整这一行为。 - 若想基于标准库实现保留时间戳的需求,有两种可行方案:
- 先用
os.CopyFS完成基础复制操作,之后遍历目标文件系统,通过fs.Stat获取源文件的时间戳信息,再调用os.Chtimes同步目标文件的时间戳。 - 不依赖
os.CopyFS,自行实现递归复制逻辑:复制每个文件时,先完成内容拷贝,再同步源文件的时间戳、权限等元数据。这种方式更灵活,但需要处理目录递归、符号链接等特殊场景。
- 先用
内容的提问来源于stack exchange,提问作者awful hack
相关产品推荐
相关产品推荐

