Rsnapshot

来自 阿尔派 Linux

rsnapshot 是一个基于 rsync 的文件系统备份实用程序。使用 rsnapshot,可以对文件系统在不同时间点进行快照。通过使用硬链接,rsnapshot 创建了多个完整备份的假象,但只占用一个完整备份加上差异的空间。当与 ssh 结合使用时,也可以对远程文件系统进行快照。本文档是关于 rsnapshot 的安装和配置的教程。

安装

要安装 rsnapshot

apk add rsnapshot

配置

要配置 rsnapshot,请将示例配置文件 /etc/rsnapshot.conf.default 复制到 /etc/rsnapshot.conf,并根据注释和 官方文档 的说明进行编辑。请注意,rsnapshot 要求在 rsnapshot.conf 中的选项和值之间使用制表符。这样做是为了在文件名中包含空格,而无需额外的转义或引号。

最需要修改的部分是备份的存储位置

snapshot_root	/mnt/backup

保留多少备份

这些设置在旧版本的 rsnapshot 中曾被称为 “hourly、daily、weekly、monthly”,但已更改为 “alpha、beta、gamma、delta”,因为备份之间的时间间隔是任意的。

这样设置意味着我最终得到 6 个最近完成的备份,然后其中一个会被分离出来成为 beta 备份,保留 7 个 beta 备份,其中一个会被分离出来作为 gamma 备份,依此类推。这意味着您有多个相当新的 alpha 备份,多个较旧的 beta 备份代表天,gamma 代表周,delta 备份可以追溯到几个月前。根据您想要拥有的备份数量进行设置。

retain	alpha	6
retain	beta	7
retain	gamma	4
retain	delta	3

以及要备份的内容

# Local
backup	/home/			local/
backup	/etc/			local/

# Remote
backup	user@remote:/home/user/	remote/		exclude=/home/user/Downloads

在本例中,每第 7 个 daily 备份被保存为 weekly 备份,每第 4 个 weekly 备份被保留为 monthly 备份,每第 12 个 monthly 备份被删除。本地机器上的文件夹 /home/etc 被备份到 /mnt/backup/local/,同时使用 ssh 将机器 remote 上的文件夹 /home/user 备份到 /mnt/backup/remote/。确保 root 具有对您想要通过互联网备份的机器的无密码 ssh 访问权限(即以 root 身份运行 ssh-keygenssh-copy-id)。
最后一行还展示了如何从备份中排除位置的某些部分。

测试

要测试您的配置文件是否具有正确的语法

rsnapshot configtest

要检查系统在运行备份时会做什么,而不执行命令,即模拟运行

rsnapshot -t alpha
rsnapshot -t beta
rsnapshot -t gamma
rsnapshot -t delta

最后,执行首次备份

rsnapshot alpha

最后一部分可能需要一段时间。后续备份应该会快得多,因为它只需要复制自上次备份以来已更改的文件。

自动化

在如上所述设置和测试 rsnapshot 之后,下一步是让 cron 在固定时间间隔自动运行 rsnapshot。实现此目的的最简单方法是在 crond 监控的文件夹 /etc/periodic/* 中创建一些脚本

/etc/periodic/hourly/rsnapshot 的内容

#!/bin/sh exec /usr/bin/rsnapshot alpha


/etc/periodic/daily/rsnapshot 的内容

#!/bin/sh exec /usr/bin/rsnapshot beta


/etc/periodic/weekly/rsnapshot 的内容

#!/bin/sh exec /usr/bin/rsnapshot gamma


/etc/periodic/monthly/rsnapshot 的内容

#!/bin/sh exec /usr/bin/rsnapshot delta


记住使脚本可执行

chmod +x /etc/periodic/*/rsnapshot

之后,测试脚本是否按预期工作

run-parts /etc/periodic/hourly
run-parts /etc/periodic/daily
run-parts /etc/periodic/weekly
run-parts /etc/periodic/monthly

假设 crond 设置为在启动时启动(默认),您的系统现在应该会自动进行备份。