制作 tar 存档时如何按名称递归排除文件夹?

制作 tar 存档时如何按名称递归排除文件夹?

我知道可以通过这样的命令排除特定的文件夹:

tar --exclude='/srv/www/project/node_modules' -zcvf /backup/project.tgz .

我的问题是如何排除node_modules整个范围内的所有文件夹/srv/www

答案1

用于\( ! -name node_modules \)从 find 的输出中省略此目录名称。

-print0选项打印文件的完整名称,后跟一个空字符。如果文件名包含换行符,则应使用此选项。

tar-null选项为以下-T选项做好准备,以逐字读取以空字符结尾的文件。

tar-T -选项从 stdin(管道的输出)读取文件。

find . -type d \( ! -name node_modules \) -print0 | tar --null -czf /backup/project.tgz -T -

相关内容