我正在尝试使用 rsync 自动执行一些备份,但遇到以下问题。我有一个文件,其中包含一些要从复制中排除的内容。假设该文件只有一行
exc
我希望 rsync 做的是排除我提供 rsync 的目录中名为“exc”的任何文件或目录。但是,如果我们有以下树:
./
|
+---exc
| file1
|
+---directory
+ file2
|
|
+---exc
file3
我希望图表是清楚的。我想要发生的是排除第一个 exc,但复制第二个 exc,同时传递带有 exc 行的文件将排除两者。可能还有其他更深层次的名为 exc 的文件,因此排除文件中的行应仅指向根文件 exc。
排除模式应该是什么样的?
答案1
您可以--exclude
在前面添加 a/
将其锚定到传输的根。这样,--exclude /exc
就会做你想做的事。
使用您的测试用例:
mkdir -p exc directory/exc
touch exc/file1 directory/file2 directory/exc/file3
rsync -av --exclude /exc . /tmp/
/tmp 将包含当前文件夹,包括目录/exc/*,但exc/
原始文件夹除外。