Rsnapshot 是一款用 Perl 编写的开源本地/远程文件系统备份工具,它利用 Rsync 和 SSH 的强大功能来创建 Linux/Unix 文件系统的计划增量备份。

Rsnapshot 仅占用单次完整备份加上差异数据的空间,允许您将备份存储在本地驱动器、外部 USB 闪存盘、NFS 挂载的驱动器上,或者通过 SSH 通过网络存储到另一台机器。

在本文中,我们将引导您完成安装、设置和使用 Rsnapshot 以创建每小时、每天、每周和每月本地备份以及远程备份的过程。

在 Linux 中安装 Rsnapshot 备份

首先,您需要安装并启用 EPEL(Enterprise Linux 额外软件包)仓库,因为基于 RHEL 的发行版默认不包含 Rsnapshot。

sudo dnf install epel-release
sudo dnf install rsnapshot

在基于 Ubuntu 的发行版中,rsnapshot 可在默认仓库中获得,因此您可以使用 apt 包管理器进行安装:

sudo apt install rsnapshot

安装完成后,您可以通过检查版本来验证安装。

rsnapshot -v

设置 SSH 免密登录

要备份远程 Linux 服务器,您需要配置备份服务器与远程机器之间的 SSH 免密登录。

按照以下命令生成 SSH 公钥/私钥对:

ssh-keygen -t rsa

接下来,将公钥复制到远程服务器:

ssh-copy-id user@remote-server

在 Linux 中配置 Rsnapshot

rsnapshot 配置文件位于 /etc/rsnapshot.conf,请使用 nano 或 vim 等文本编辑器打开此配置文件:

sudo nano /etc/rsnapshot.conf
OR
sudo vi /etc/rsnapshot.conf

您需要配置的一些重要设置包括:

快照备份目录

要设置备份存储目录,您需要编辑配置文件中的 snapshot_root 行。

snapshot_root   /data/backup/

设置备份间隔

Rsnapshot 支持多种备份间隔,如每日、每周和每月。您可以通过取消注释以下行来设置备份频率:

interval    hourly    6
interval    daily     7
interval    weekly    4
interval    monthly   3

设置备份目录

要备份本地目录,请添加目录路径。

backup    /home/     localhost/
backup    /etc/      localhost/

对于远程备份,请指定要备份的远程服务器和目录,如下所示:

backup    root@remote-server:/home/     /data/backup/

启用远程备份

要通过 SSH 启用远程备份,请取消注释 cmd_ssh 行:

cmd_ssh    /usr/bin/ssh

如果您更改了默认的 SSH 端口,请更新 ssh_args 行以反映自定义端口(例如,端口 7851):

ssh_args    -p 7851

排除文件和目录

您可以通过创建排除文件来排除某些文件和目录不被备份。

sudo nano /data/backup/exclude.txt

按以下格式添加排除项:

- /var/cache
- /tmp
+ /etc
+ /home

在您的 rsnapshot.conf 文件中,引用排除文件:

exclude_file    /data/backup/exclude.txt

配置 Rsnapshot 后,运行以下命令以验证设置是否正确:

sudo rsnapshot configtest

您应该会看到消息“Syntax OK”。如果有任何错误,请在继续之前修复它们。

最后,您可以使用对应间隔的命令手动运行 Rsnapshot:

sudo rsnapshot hourly

使用 Cron 自动化 Rsnapshot

要自动化备份过程,请将以下内容添加到您的 /etc/cron.d/rsnapshot 文件中,以配置 cron 作业在特定间隔运行 Rsnapshot:

0 */4 * * *    root    /usr/bin/rsnapshot hourly
30 3 * * *     root    /usr/bin/rsnapshot daily
0 3 * * 1      root    /usr/bin/rsnapshot weekly
30 2 1 * *     root    /usr/bin/rsnapshot monthly

设置 Rsnapshot 报告

Rsnapshot 包含一个脚本,用于通过电子邮件发送备份报告。要进行设置,请复制该脚本并使其可执行:

sudo cp /usr/share/doc/rsnapshot/utils/rsnapreport.pl /usr/local/bin/
sudo chmod +x /usr/local/bin/rsnapreport.pl

现在,编辑您的 rsnapshot.conf 文件,并在 rsync_long_args 部分添加 --stats 标志:

rsync_long_args --stats --delete --numeric-ids --delete-excluded

然后,将报告添加到您的 cron 作业中以通过电子邮件发送报告:

0 */4 * * * root /usr/bin/rsnapshot hourly 2>&1 | /usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup Report" [email protected]

监控 Rsnapshot 备份

您可以通过检查日志文件来监控备份。默认情况下,Rsnapshot 将备份活动记录在 /var/log/rsnapshot.log 中。

cat /var/log/rsnapshot.log
结论

Rsnapshot 是管理 Linux 系统备份的绝佳选择。凭借其对 rsync 的高效利用,您可以轻松地在本地和远程备份文件。