Rsnapshot
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-keygen 和 ssh-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 的内容
/etc/periodic/daily/rsnapshot 的内容
/etc/periodic/weekly/rsnapshot 的内容
/etc/periodic/monthly/rsnapshot 的内容
记住使脚本可执行
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 设置为在启动时启动(默认),您的系统现在应该会自动进行备份。