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 的高效利用,您可以轻松地在本地和远程备份文件。