我想从备份中排除一些目录。但不是所有具有特定名称的目录 - 仅是位于指定根目录下的目录。使用 rsync 时,我将使用排除掩码,如下所示:
/path/excludeRoot/**/directoryToExclude
这意味着名称位于directoryToExclude
下面的所有目录都/path/excludeRoot
将被排除。
另一方面:每个有名称directoryToExclude
但位于其他地方的目录都将被包含
可以用 tar 来做吗?
答案1
遗憾的是,这不可能直接实现,因为--exclude
选项系列不够强大。
一种方法是使用外部程序(比如)获取对象列表find
,然后使用-T
开关告诉 tar 应该包含哪些文件/对象。
引用手册页:
-T, --files-from FILE
get names to extract or create from FILE
如果文件名包含特殊符号(和/或空格),我会将其添加--null
到 tar 命令行;为了生成列表,我还会使用find -- 用 NUL( )字符-print0
分隔文件/目录。\000