带有 --exclude-cache 的 GNU tar 无法排除包含 CACHEDIR.TAG 文件的目录

Dio*_*lis 1 tar

根据 GNU tar 手册页,CACHEDIR.TAG可以通过指定命令行选项来排除包含文件的目录,例如--exclude-cache.

这似乎不会发生。

$ mkdir -pt/a/b/c
$ touch t/a/b/foo t/a/b/CACHEDIR.TAG
$ tar --exclude-caches-all -cvf /dev/null t
吨/
吨/年/
标签/
t/a/b/c/
t/a/b/CACHEDIR.TAG
t/a/b/foo

Dio*_*lis 9

查看 GNU tar 源代码(然后查看Texinfo 文档)会发现该文件需要包含一个特殊的签名。将此签名添加到文件可解决此问题。

$ mkdir -pt/a/b/c
$ 触摸 t/a/b/foo
$ echo 签名:8a477f597d28d172789f06886806bc55 >t/a/b/CACHEDIR.TAG
$ tar --exclude-caches-all -cvf /dev/null t
吨/
吨/年/
tar:t/a/b/:包含缓存目录标签CACHEDIR.TAG;目录未转储