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

mrj*_*per 10 rsync file-copy

考虑以下示例:

/source
  /source/folder1
  /source/folder2
  /source/folder3

/destination
  /destination/folder2
  /destination/folder3
    /destination/folder3/mytestfolder1
  /destination/folder4
    /destination/folder4/mytestfolder1
    /destination/folder4/mytestfolder2
Run Code Online (Sandbox Code Playgroud)

我想将源同步到目标,但必须忽略“/destination/folder4/mytestfolder1”。

我尝试使用 exclude 参数

rsync -av --delete --progress --exclude "mytestfolder1" /source/ /destination/
Run Code Online (Sandbox Code Playgroud)

但这会忽略所有名为“mytestfolder1”的文件夹。

当我提供完整路径时,没有任何内容被忽略,因为 rsync 似乎认为路径在源中而不是在目标中。

rsync -av --delete --progress --exclude "/destination/folder4/mytestfolder1" /source/ /destination/

rsync -av --delete --progress --exclude "destination/folder4/mytestfolder1" /source/ /destination/
Run Code Online (Sandbox Code Playgroud)

我在网上搜索过,但没有找到任何有用的东西。

谢谢您的帮助。:)

Gil*_*il' 10

如果您在过滤器中使用绝对路径(包括/排除),它会从同步的根开始解释。您不是排除源中的目录,也不是排除目标中的目录,而是排除要同步的树中的目录。

因此:

rsync -av --delete --progress --exclude " /folder4/mytestfolder1 " /source/ /destination/