Tar 保留文件夹修改日期

Tar 保留文件夹修改日期

我正在一个目录中创建一个 tarball,该目录中有多个子目录,我需要按月归档这些子目录。问题是,当我提取特定月份的文件/文件夹时,顶级子文件夹不会保留修改日期。

我使用下面的 tarball

查找 -type f -newermt 2021-12-01 !-newermt 2021-12-31 | xargs tar -cvzf 2021-12.tar.gz

它仍然显示我存档的每个文件夹的提取时间,而不是修改时间。有人能帮帮我吗?

我也按照另一个用户帖子的建议尝试了这个

查找 -type f -newermt 2021-12-01 !-newermt 2021-12-31 | xargs tar --atime-preserve -cvzf 2021-12.tar.gz

谢谢

答案1

你没有档案实际的文件夹,只有其中的文件。您可以通过运行亲自查看tar -tvvf 2021-12.tar.gz- 这并不是文件夹条目缺少其 mtime,而是根本没有任何文件夹条目。

(这些文件夹不是 tar 输入的一部分,因为find -type f特别排除了它们。)

您的输出需要包含所有父目录路径,最好是在相应文件之后(尽管 GNU tar 必须--delay-directory-restore处理顺序错误的条目)。类似这样的操作可能会有效:

$ find -name '*.c' |
  perl -ne 'print; print while s!/[^/]+$!\n!g' |
  sort -r |
  uniq |
  xargs -d '\n' tar -cvzf out.tgz --no-recursion

我的另一个建议是使用 Git、Borg 或 Restic 进行增量存档。

相关内容