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

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

文件

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

rsync /foo/src/ /foo/dest

rsync刪除B.c嗎?

文件夹

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

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

是否会rsync擦除B其内容?

答案1

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

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

由于你特别指出-A选项,以下是手册页的内容

−a, −−存档 >

这相当于−rlptgoD。这是快速表示您想要递归并希望保留几乎所有内容(−H 是一个明显的遗漏)的方式。上述等价的唯一例外是−−文件−来自已指定,在这种情况下不暗示 -r。

注意−a 不保留硬链接,因为查找多重链接文件的成本很高。您必须单独指定−H

因此,似乎你的问题的答案是否定的,根据你的例子,它不会被删除
。HTH

相关内容