如何调试/验证“--exclude-from”匹配文件“tar”?

如何调试/验证“--exclude-from”匹配文件“tar”?

命令tar有一个选项--exclude-from

   -X, --exclude-from=FILE
          Exclude files matching patterns listed in FILE.

如何列出与FILE.

我正在制作一个脚本来备份我的主目录,我不想意外地忽略一些重要的东西。

答案1

如果您要压缩,某些tar命令将超级优化它们的功能/dev/null,例如

tar cvf /dev/null . >/tmp/a

将创建所有文件的列表,.而不实际读取任何数据。在我的 10G 家庭上,花了 3 秒,大约与find.

因此,您可以执行上述操作,然后对排除列表执行相同的操作/tmp/b,然后diff在它们之间执行操作以查看丢失的内容。

sort或者,也通过管道传输每个输出,然后用于comm -3 /tmp/a /tmp/b仅获取排除的文件。

答案2

while read -r pattern; do
    printf 'Pattern: "%s"\n' "$pattern"
    echo 'Matches:'
    find . -path "$pattern" -print
done <patterns

这将从文件中获取每个模式patterns并报告当前目录中的哪些名称与其匹配。

答案3

这可能很棘手,因为 tar 和 find 匹配模式的方式不同。但也许您正在寻找这样的东西:

for pattern in $(cat FILE)
do
    find $HOME -path "*$pattern*"
done

相关内容