tar 相当于 zip -o (--latest-time)?

tar 相当于 zip -o (--latest-time)?

Zip 实用程序使我们能够

将 zip 存档的“上次修改”时间设置为 zip 存档中的条目中找到的最新(最旧)“上次修改”时间

zip -o [...]

或者

zip --latest-time [...]

对 TAR 执行相同操作的最简单方法是什么?

答案1

new_file="$(find dir/ -type f -exec stat --printf='%n\0%Y\n' {} + | sort -k2,2 -nt '\0' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz

发生情况的示例

tar -zcf foo.tar.gz dir/; touch -r fileX foo.tar.gz

你应该改变foo.tar.gz,目录/在上面的命令中

  • 查找所有文件目录/(同样是焦油)
  • 获取自纪元以来的最后一次修改时间戳(以秒为单位)
  • 按数字排序并获取底部的一个(最新的)
  • touch 在调整 foo.tar.gz 时间戳时使用该文件作为参考。

答案2

可能没有一句台词(至少在 POSIX 中)。我使用一个脚本(触摸目录) 设置目录时间戳以匹配目录中文件的最新时间戳,然后将该时间戳用于生成的存档。

最后一步可以使用-r(参考)选项来完成touch。实际上我也不使用它,而是使用一个实用程序(cpd)。

相关内容