4

我们用于备份的专有软件 (sadface) 会生成一系列图像,rsync用于同步到异地位置。生成的文件如下所示:

a.bak
b.bak
c.bak

因此,我们将它们同步并在异地机器上获得完全相同的结构。然后备份程序再次运行,我们得到如下内容:

archive/a.bak
archive/b.bak
c.bak
d.bak
e.bak

所以rsync工作运行,我们最终得到类似的东西:

archive/a.bak
archive/b.bak
a.bak
b.bak
c.bak
d.bak
e.bak

显然,我们希望场外机器看起来像现场机器一样,以避免混乱并节省存储空间。有什么方法可以rsync反映现场发生的动作,还是我们必须解决一些问题rsync

4

3 回答 3

3

我不知道有什么方法可以让它智能地检测到文件只是“移动”了。但是,您可以使用该--delete标志,以便它从目标中删除源中不再存在的文件。缺点是您将在文件移动时重新复制文件,但至少您不会再为目标上的旧位置浪费空间。

于 2009-08-05T10:26:06.127 回答
2

这个问题有一个非常聪明的解决方案。它需要额外的空间,但它可以为您节省大量浪费的流量。我在https://lincolnloop.com/blog/detecting-file-moves-renames-rsync/中找到了它

查看那里的详细信息,但基本上,您在进行任何更改之前制作一个硬链接备份树,然后修改原始树。rsync 时,您使用一个额外的选项来保留硬链接,这足以让 rsync 检测到重复文件并避免再次复制它们。

于 2014-04-14T05:31:11.917 回答
0

If you use the --times switch and make sure both ends have clock syncing and then you can use --update and --delete options to only transfer newer files and prune away files that shouldn't be there.

See the rsync man page for full options.

于 2009-08-05T10:26:39.433 回答