rsync:排除文件中的排除模式不起作用

rsync:排除文件中的排除模式不起作用

我试图从同步中排除所有 vim 备份文件(隐藏的 *.swp 文件)。我的排除文件中的模式如下所示:

**.swp

我的 rsync 调用:

rsync -ravu --exclude=~/sync/exclude.txt /home/username/Documents/ remotehost:/home/username/Documents/

该文件位于同步根的子目录中。它不起作用。 Rsync 也会复制 vim 备份文件。我也尝试过:*.swp

我究竟做错了什么?

答案1

您正在使用--exclude(需要模式)而不是--exclude-from(需要包含模式的文件的名称)。

您也不需要-r( --recursive) 和-a( --archive),因为-a可以启用递归同步。其实和说明书上的-a是一样的。-rlptgoD

答案2

对于单个模式,您不需要**和 ,您不妨只使用--exclude。该--include模式确保与该--exclude模式匹配的目录包含在副本中。

rsync -a  --include '*/' --exclude='.*.swp' /home/username/Documents/ remotehost:/home/username/Documents/

如果您的远程用户名/home/username作为其主目录,您可以使用相对路径进一步简化:

rsync -a  --include '*/' --exclude='.*.swp' /home/username/Documents/ remotehost:Documents/

另请记住,如果一个匹配项已存在或正在使用,vim则将使用其他文件名作为其交换文件。*.swp但您可以通过这种单一模式捕获其中的大多数。以下是文档警告的内容:

如果该文件已经存在(例如,当您从崩溃中恢复时),则会发出警告并使用另一个扩展名,“.swo”、“.swn”等。

.*.sw[a-p]如果您足够担心,您可以调整要使用的排除模式。

相关内容