考虑以下示例:
/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“ /源/ /目的地/