使用 rsync 时如何排除目标上的特定文件夹?

使用 rsync 时如何排除目标上的特定文件夹?

考虑以下示例:

/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“ /源/ /目的地/

相关内容