RSYNC 如何做增量备份

15 backup rsync sftp

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

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

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

小智 13

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
Run Code Online (Sandbox Code Playgroud)


Jav*_*ier 9

rsync 不做“增量”,它更像是“差异”。它不传输更改(假设有一些先前运行的知识),它传输差异(通过将源文件与目标文件进行比较)

流程的简化:

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


Kyl*_*ndt 6

也许我很迂腐,但增量备份意味着您首先要进行完整备份。然后您备份了自该备份以来更改的文件。然后你有另一个备份的备份,自上一个备份以来发生了变化,等等。所以你需要完整备份,以及自那一次以来的所有增量备份。

因此,仅使用归档模式不是增量备份我认为差异很重要,因为这意味着您无法在文件更改之前及时返回获取文件

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


pQd*_*pQd 5

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