我知道可以通过这样的命令排除特定的文件夹:
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 -