我们用于备份的专有软件(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之外解决一些问题
发布于 2009-08-05 10:26:06
我不知道有什么方法可以让它智能地检测到文件只是“移动”了。但是,您可以使用--delete标志,以便从目标删除源上不再存在的文件。缺点是,每当文件移动时,您都会重新复制该文件,但至少您不会再为目标上的旧位置浪费空间。
发布于 2014-04-14 13:31:12
对于这个问题有一个非常聪明的解决方案。它占用了额外的空间,但它使您避免了如此多的流量浪费。我在https://lincolnloop.com/blog/detecting-file-moves-renames-rsync/里找到的
请查看此处的详细信息,但基本上,您需要在两端进行任何更改之前创建一个硬链接备份树,然后修改原始树。在rsync时,您使用了一个额外的选项来保留硬链接,这足以让rsync检测到重复的文件并避免再次复制它们。
发布于 2009-08-05 10:26:39
如果您使用--time开关并确保两端都有时钟同步,那么您可以使用--update和--delete选项只传输较新的文件,并删除不应该存在的文件。
有关完整选项,请参阅rsync man page。
https://stackoverflow.com/questions/1232349
复制相似问题