我在用rdiff-备份将文件从我的服务器备份到备份服务器。我使用类似以下命令运行备份:
rdiff-backup [email protected]::/home/user/data/complete complete
此备份运行良好。但是,Rdiff-backup 的功能页面显示:
带宽高效:rdiff-backup 依赖于 librsync,因此使用与 rsync 相同的差异算法(严格来说,rsync 和 rdiff-backup 不共享任何代码)。[...] 例如,假设你稍微改变大文件 A 制作大文件 A', 和A 仍在远程系统上。当 rdiff-backup 运行时,它将仅发送差异 A->A'[...]
远程文件是使用 生成的数据库转储,mysqldump
每小时创建一次。数据每小时变化不大。每个文件名的格式为YYYYMMDDHHMM.sql
。
根据我对上述“功能”的解释,rdiff-backup 应该发送一个小的 diff 来根据目录中的其他文件创建文件 - 换句话说,如果A prime
是最新备份并且A
是 T-1 备份,它应该发送一个小的 diff 来从A
到A prime
。
但是,很明显它不是这样工作的。它正在发送整个新文件,即使新文件只有一点点不同。我预计数据传输只有几兆字节,但它传输的是几百兆字节。
同样来自手册页:
rdiff-备份 能 还可以通过管道以带宽高效的方式运行,如 rsync(1)。因此,您可以使用 ssh 和 rdiff-backup 将硬盘安全地备份到远程位置,并且只会传输差异部分。使用默认设置,rdiff-backup 要求远程系统接受 ssh 连接,并且 rdiff-backup 安装在远程系统上的用户 PATH 中。有关其他选项的信息,请参阅远程操作部分。
我的问题是:
- 我对这个功能的解读正确吗?
- 如果是的话,我该如何使用 rdiff-backup 以这种方式运行?
答案1
根据您的帖子,您每小时都会生成唯一的 sql 转储 YYYYMMDDHHMM.sql,
这是每次都有唯一文件名的新文件。
如果您正在更改源上的文件(而不是生成新文件),那么此功能将适用。
否则,它会查看源,发现全新的文件 YYYYMMDD时空+1MM.sql,它不知道目标文件 YYYYMMDDHHMM.sql 非常接近,因此它将开始同步文件 YYYYMMDD时空+1MM.sql 到目标。
如果您想使用此功能 - 那么当新文件 YYYYMMDD时空+1MM.sql 在源上生成 - 您需要启动一些脚本来连接到目标并复制文件 YYYYMMDDHHMM.sql
cp YYYYMMDDHHMM.sql YYYYMMDDHH+1MM.sql<br>
之后启动同步。
这样,它会发现目标有同名文件,并希望尝试使用此部分同步算法。