默认情况下,rsync 会删除目标中的文件和文件夹吗?

Cro*_*der 51 unix bash rsync macos

文件

假设/foo/src仅包含A.c并且同时/foo/dest包含A.cB.c。假设我运行以下命令:

rsync /foo/src/ /foo/dest
Run Code Online (Sandbox Code Playgroud)

rsync抹掉B.c吗?

文件夹

现在假设/foo/src包含其中包含A一些文件的目录,并且/foo/dest包含目录AB,每个目录中都有一些文件。假设我运行以下命令(-a 选项包括 -r,递归):

rsync -a /foo/src/ /foo/dest
Run Code Online (Sandbox Code Playgroud)

rsync擦除B其内容吗?

Sax*_*ddy 57

默认情况下,rsync 不会删除文件,但这取决于您指定的命令选项。如果要删除文件,可以使用以下任何方法:

  • ??del(??delete?during 的别名)
  • ??delete(从目标目录中删除无关文件)
  • ??delete?before (接收者在 xfer [默认] 之前删除)
  • ??delete?during(接收者在 xfer 期间删除,而不是之前)
  • ??delete?after (接收者在 xfer 之后删除,而不是之前)
  • ??delete?excluded(也从目标目录中删除排除的文件)
  • ??max?delete=NUM(不要删除超过 NUM 个文件)

由于您专门调用了-a选项,因此手册页内容如下

?a, ??存档 >

这相当于?rlptgoD。这是一种表示您想要递归并想要保留几乎所有内容的快捷方式(其中 ?H 是一个明显的遗漏)。上述等价的唯一例外是指定??files?from 时,在这种情况下不隐含 ?r 。

请注意,?a 不保留硬链接,因为查找多重链接的文件很昂贵。您必须单独指定?H

因此,您的问题的答案似乎是否定的,鉴于您的示例,它不会被删除。
HTH