题 RSYNC如何进行增量备份


如何 rsync 知道哪些文件被更改,哪些文件没有?它是否在文件中的任何位置记录其数据?

因为我想进行增量备份,但首先它会传输所有文件。

所以我的主要问题是:如果我通过FTP上传初始文件但不是 rsync。 将 rsync 仍会跳过那些现有文件,否则它会在第一次运行时上传所有文件。


13
2018-05-04 06:57






答案:


Rsync有许多标志,用于控制它将查看的内容以及它将复制到目标的内容。通常使用“-a”标志,这是“存档”标志,这可能是你想要的。使用“-av”标志运行rsync并让它首先针对您要备份的数据运行。下次运行时,它将执行文件的块校验和,并仅复制已在现有文件上修改的部分,复制新文件,并删除不再存在的文件。检查“-a”选项部分:

http://linux.die.net/man/1/rsync

第一次运行将是BandWidth密集型,以下运行很可能是处理器密集型的,但与初始运行相比使用的带宽很小。除非你的数据集有很多流失。

Rsync并不关心如何获取源文件或目标目录中的文件,它只会复制两者之间的更改,除非您添加标记以执行不同的操作。

如果要记录更改的内容,可以使用“--log-file”选项。总而言之,这听起来像你想要的:

rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups

11
2018-05-04 07:15





rsync不做'增量',它更像'差异'。它没有转移 变化 (它假定先前运行的一些知识),它转移 分歧 (通过比较源与目标文件)

简化过程:

  • 首先检查文件大小,创建/修改日期,标志......如果它们全部相同,则跳过该文件。
  • 如果目标上没有该名称的文件,只需复制整个文件即可。
  • 如果目标上有文件,它会计算每个2KB文件的校验和,并传输给发件人。
  • 发送者比较原始文件的内容并与目标进行比较,并传输任何尚未存在的数据,以及对任何匹配数据的引用。这样,目标可以使用旧目标和新块的片段重建整个文件。

7
2018-05-04 15:00





rsync不记录任何数据,它会检查文件修改时间戳,然后检查内容。如果您先通过ftp上传它会没问题 - rsync不会重新传输所有数据,但可能会查看所有内容并修复时间戳。但是不会再有巨大的转移。


5
2018-05-04 07:01





也许我是迂腐但增量备份意味着你先备份完整备份。然后,您可以备份自该备份以来更改的文件。然后,您可以备份自上一个备份以来更改的备份,等等。因此,您需要完整备份以及自该备份以来的所有增量备份。

所以, 仅使用存档模式不是增量备份我认为差异很重要,因为这意味着你不能及时回过头来获取文件

如果要进行真正的增量备份,可以使用诸如的选项 --backup-dir。有一个例子 这里


5
2018-05-04 13:28



+1用于区分增量备份和镜像(默认情况下rsync执行此操作)。 - sleske
没错!镜像是我抓住的词,好的电话:-) - Kyle Brandt♦


如果真正的问题是“我想通过rsync进行增量备份”,那么有几个选项可用。我用Dirvish:

http://www.dirvish.org/

恢复非常简单,因为它可以为您提供快照:它使用硬链接为您提供完整的快照,同时节省文件相同的空间。在内部,它使用rsync的--link-dest选项:

--link-dest=DIR         hardlink to files in DIR when unchanged

由于它使用rsync,因此它还可以节省变化非常小的网络带宽(以及时间)。它也适用于你 柏油 如果你有很多文件和慢速链接,那么首先在本地创建的dirvish图像和sneakernet。


0
2018-05-05 10:54