RSYNC 如何进行增量备份

RSYNC 如何进行增量备份

如何rsync知道哪些文件已更改,哪些未更改?它会将数据记录在文件的任何地方吗?

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

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

答案1

Rsync 有许多标志,用于控制它将查看什么以及它将复制到目标的内容。最常用的是“-a”标志,即“存档”标志,这可能是您想要的。使用“-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

答案2

rsync 不做“增量”操作,它更像是“差异”操作。它不传输变化(假设对之前的运行有所了解),它会传输差异(通过比较源文件和目标文件)

简化流程:

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

答案3

也许我有点吹毛求疵,但增量备份意味着您首先要进行完整备份。然后,您要备份自该备份以来更改的文件。然后,您要备份自上一次备份以来更改的备份,等等。因此,您需要完整备份,以及自那次备份以来的所有增量备份。

所以,仅使用存档模式不是增量备份我认为这种差异很重要,因为这意味着你无法回到过去获取文件更改之前的内容

如果要进行真正的增量备份,可以使用以下选项--backup-dir。以下是示例这里

答案4

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

http://www.dirvish.org/

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

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

由于它使用 rsync,因此在更改很小的情况下,它还可以节省网络带宽(从而节省时间)。如果您柏油如果您有很多文件并且链接速度很慢,请先使用 sneakernet 本地创建的 dirvish 图像。

相关内容