我发现 rsnapshot 是为本地文件系统备份我的东西的好工具。现在我需要做 rsnapshot_push.conf 文件,我将参数提供给 rsync 服务器。这样做的正确方法是什么?我可以使用 rsync 到 /rsnapshot-backups/localhost/ 将其同步到 rsync 服务器吗?
我发现 rsnapshot 是为本地文件系统备份我的东西的好工具。现在我需要做 rsnapshot_push.conf 文件,我将参数提供给 rsync 服务器。这样做的正确方法是什么?我可以使用 rsync 到 /rsnapshot-backups/localhost/ 将其同步到 rsync 服务器吗?
Rsnapshot 在设计上是基于拉的。Rsnapshot 的强大之处在于使用硬链接,并且仅适用于本地文件系统。(可以使用 nfs,因为它支持硬链接,但不支持例如 sshfs)。
在推送场景中,最好的解决方案是简单地使用 rsync 推送到服务器上的备份目录,然后允许 rsnapshot 处理该目录中的快照,就像它设计的那样。Rsnapshot 不关心更改是由 rsync 引入还是通过保存文件引入的。
在 rsnapshot 常见问题解答中,有一个奇特的解决方案可以在 rsync 之后触发 rsnapshot,但这可能是矫枉过正。仅从其常规 cron 作业运行 rsnapshot 也可以。
另一种解决方案是rdiff-backup,但是这不会提供每个快照的良好目录视图,并且需要运行命令来恢复文件,这可能会使快速恢复变得复杂。
另一种选择是使用反向 ssh 隧道,然后从接收方进行“远程”拉取:
其中
pull-from-sender-rsnapshot.conf
可能包含如下行:这可以由发送方的 cron 调用,在本地触发远程 rsnapshot。
我专门开发了rsnappush来解决您遇到的相同问题,并且实际上遇到了您的帖子,因为我正在寻找一个预先构建的解决方案(尚不存在)。
概要
rsnappush [-h] [-r RSYNC_OPT] [-q] SOURCE_PATH [ACCOUNT:]DEST_PATH
描述
rsnappush是 rsync(1) 的包装器,用于协助推送到目标的文件级增量快照。未更改的文件是硬链接的。每个快照的文件都清楚地放置在一个目录中:DEST_PATH / backup-YYYYmmdd-HHMM / 以便于访问和恢复。
SOURCE_PATH是任何本地路径。
DEST_PATH是本地或远程路径。如果是远程的,则ACCOUNT指定与 ssh(1) 兼容的帐户描述,例如USER @ HOST。
此外,在DEST_PATH下创建了一个权限/目录,其中包含来自 getfacl(1) 的压缩输出。解压缩后,setfacl(1) 可用于从该文件恢复权限。
例子