首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rsync镜像文件移动

使用rsync镜像文件移动
EN

Stack Overflow用户
提问于 2009-08-05 10:20:01
回答 3查看 3.4K关注 0票数 4

我们用于备份的专有软件(sadface)生成一系列映像,我们使用rsync将这些映像同步到异地位置。生成的文件类似于:

代码语言:javascript
复制
a.bak
b.bak
c.bak

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

代码语言:javascript
复制
archive/a.bak
archive/b.bak
c.bak
d.bak
e.bak

因此,rsync作业运行,我们最终得到如下结果:

代码语言:javascript
复制
archive/a.bak
archive/b.bak
a.bak
b.bak
c.bak
d.bak
e.bak

显然,我们更喜欢非现场机器看起来像现场机器,以避免混乱并节省存储空间。有没有办法让rsync反映现场发生的移动,或者我们必须在rsync之外解决一些问题

EN

回答 3

Stack Overflow用户

发布于 2009-08-05 10:26:06

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

票数 3
EN

Stack Overflow用户

发布于 2014-04-14 13:31:12

对于这个问题有一个非常聪明的解决方案。它占用了额外的空间,但它使您避免了如此多的流量浪费。我在https://lincolnloop.com/blog/detecting-file-moves-renames-rsync/里找到的

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

票数 2
EN

Stack Overflow用户

发布于 2009-08-05 10:26:39

如果您使用--time开关并确保两端都有时钟同步,那么您可以使用--update和--delete选项只传输较新的文件,并删除不应该存在的文件。

有关完整选项,请参阅rsync man page

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1232349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档