![使用 rsync 时如何排除目标上的特定文件夹?](https://linux22.com/image/87851/%E4%BD%BF%E7%94%A8%20rsync%20%E6%97%B6%E5%A6%82%E4%BD%95%E6%8E%92%E9%99%A4%E7%9B%AE%E6%A0%87%E4%B8%8A%E7%9A%84%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%9F.png)
考虑以下示例:
/source
/source/folder1
/source/folder2
/source/folder3
/destination
/destination/folder2
/destination/folder3
/destination/folder3/mytestfolder1
/destination/folder4
/destination/folder4/mytestfolder1
/destination/folder4/mytestfolder2
我想将源同步到目标,但必须忽略“/destination/folder4/mytestfolder1”。
我尝试使用排除参数
rsync -av --delete --progress --exclude "mytestfolder1" /source/ /destination/
但这会忽略所有名为“mytestfolder1”的文件夹。
当我提供完整路径时,不会忽略任何内容,因为 rsync 似乎认为路径位于源中而不是目标中。
rsync -av --delete --progress --exclude "/destination/folder4/mytestfolder1" /source/ /destination/
rsync -av --delete --progress --exclude "destination/folder4/mytestfolder1" /source/ /destination/
我在网上搜索过但没有找到任何有用的东西。
谢谢您的帮助。 :)
答案1
如果您在过滤器中使用绝对路径(包含/排除),则会从同步的根开始解释。您不是排除源中的目录,也不是排除目标中的目录,而是排除树中要同步的目录。
因此:
rsync -av --删除 --progress --排除 "/folder4/mytestfolder1“ /源/ /目的地/