我正在一个目录中创建一个 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 进行增量存档。