rsync是否默认删除目标位置的文件,文件夹?


44

档案

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

rsync /foo/src/ /foo/dest

rsync擦除B.c吗?

资料夹

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

rsync -a /foo/src/ /foo/dest

rsync擦除B及其内容吗?


您需要--delete开关。
fideli 2014年

Answers:


51

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

  • -del(别名删除期间)
  • ---删除(从dest dirs中删除无关的文件)
  • ---之前删除(接收方在xfer [默认]之前删除)
  • 删除期间(接收方在xfer期间删除,而不是之前删除)
  • --- delete-after(接收者在xfer之后而不是之前删除)
  • ---删除-排除(也从dest dirs中删除排除的文件)
  • --max-delete = NUM​​(最多删除NUM个文件)

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

-a,-存档 >

这等效于-rlptgoD。这是说您想要递归并想要保留几乎所有内容的快速方法(其中-H是明显的遗漏)。上述等效项的唯一例外是当指定了-files-from时,在这种情况下不隐含-r。

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

因此,似乎您的问题的答案为“否”,鉴于您的示例,该答案不会被删除。
高温超导

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.