RSYNC如何执行增量备份


14

如何rsync知道哪些文件已更改,哪些未更改?它是否将数据记录在文件中的任何位置?

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

所以我的主要问题是:是否通过FTP上传初始文件,而不是通过rsync。请问rsync仍然跳过那些已存在的文件,否则将上载在第一次运行的一切。

Answers:


12

Rsync具有许多标志,这些标志控制它将查看的内容以及将其复制到目的地的内容。最经常使用的是“ -a”标志,它是“ Archive”标志,这可能就是您想要的。使用“ -av”标志运行rsync,并使其对要备份的数据进行第一次运行。下次运行时,它将对文件进行块校验和,并且仅复制已在现有文件上修改过的部分,复制新文件,并删除不再存在的文件。检查以下内容的“ -a”选项部分:

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

第一次运行将占用大量带宽,随后的运行很可能会占用大量处理器,但与初始运行相比,其带宽消耗很少。除非您对数据集有很大的混乱。

Rsync不在乎如何在源目录或目标目录中获取文件,除非您添加标志以执行其他操作,否则它仅用于复制两者之间的更改。

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

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

9

rsync不会“递增”,而更像是“差异”。它不会传输更改(假设您对先前的运行有所了解),而是传输差异(通过比较源文件和目标文件)

简化流程:

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

5

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


5

也许我是书呆子,但增量备份意味着您首先要进行完整备份。然后,自备份以来,您已更改了文件备份。然后,您将拥有自上一个备份以来更改的备份的另一个备份,依此类推。因此,您需要完整备份以及自该备份以来的所有增量备份。

因此,仅使用存档模式不是增量备份我认为差异是重要的,因为这意味着您不能及时返回更改文件之前的文件

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


1
+1用于区分增量备份和镜像(这是rsync缺省情况下的功能)。
sleske 2010年

是啊!镜像是我一直想得到的,好话:-)
凯尔·勃兰特

0

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

http://www.dirvish.org/

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

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

由于它使用rsync,因此还可以节省更改很小的网络带宽(从而节省时间)。如果您有很多文件和较慢的链接,则如果首先将本地创建的苦恼图像焦油和sneakernet捕获,它也可以使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.