rsync 选项使得源和目标完全相同?

rsync 选项使得源和目标完全相同?

我的src文件夹是我的本地笔记本电脑。

我有一个dest用于备份的文件夹(并且已安装 NAS),但由于历史原因,我有时将该dest文件夹用于我现在所使用的用途src(请耐心等待)。

结果是我有例如

src/docs/2021/january.pdf

尽管

dest/docs/2021/february.pdf

我刚好跑了一下rsync -av src/ dest,现在的结果是

src/docs/2021/january.pdf
src/docs/2021/february.pdf

dest/docs/2021/february.pdf

但我想要实现的是两者完全同步,这样两者都拥有一月和二月的文件(换句话说,这些dest文件也同步到src)。

我怎么做?

答案1

您必须执行两次 rsync,每个方向一次。

答案2

rsync除非您能保证永不删除任何文件,否则您不能在这种情况下使用。

考虑两棵树,AB

  • 将所有文件从 A 复制到 B(同步)。我们不能删除 中的任何内容,B因为它可能是需要复制到 的文件A
  • 将 B 中的所有文件复制到 A(以另一种方式同步)。我们仍然无法删除 中的任何内容,A因为它可能是刚刚创建的,需要复制回B

现在A和是同步的,其中现在B的所有内容都包含在 中的副本,而现在的所有内容都包含在 中的副本。ABBA

假设您要从 中删除一个文件A。现在重复同步,您会注意到已删除的文件已重新出现在 中A。这是因为它仍存在于 中B,并被复制过来,就像它是一个新文件一样。

解决这个问题的一个方法是使用不同的工具。我用过unison(还https://www.cis.upenn.edu/~bcpierce/unison/),它是作为双向同步工具创建的。(还有一些其他工具,但我记不清了。)

同步两棵树AB就像用这个命令一样简单

unison A B

有一些选项可用于确定当双方更新同一个文件时如何采取行动等等。

相关内容