Rsnapshot是一款基于Linux的备份工具,可用于大多数Linux发行版,可以通过包管理器轻松安装。Rsnapshot用Perl编写,无额外依赖,支持本地备份和远程备份。使用Rsnapshot,你可以备份本地目录,对于远程备份,Rsnapshot利用SSH和rsync协议实现。本教程将指导你在Rocky Linux 9服务器上安装和配置Rsnapshot,并通过Cron设置自动备份。
前提条件
在开始之前,请确保你已经具备以下条件:
• 一台Rocky Linux 9服务器
• 一个具有管理员权限的非root用户
安装Rsnapshot
Rsnapshot是一款适用于Unix类操作系统的备份工具。在基于RedHat的发行版上,可以通过EPEL(Extra Packages for Enterprise Linux)仓库安装Rsnapshot。因此需要先将EPEL仓库添加到系统中,然后安装Rsnapshot。
首先,运行以下命令将EPEL仓库添加到Rocky Linux服务器。输入"Y"确认并添加EPEL仓库。
sudo dnf install epel-release

添加EPEL后,运行以下dnf命令安装rsnapshot包。输入"Y"确认安装。
sudo dnf install rsnapshot nano firewalls

安装完成后,使用以下命令检查二进制文件位置和Rsnapshot版本。
which rsnapshot
rsnapshot --version
在以下输出中,可以看到Rsnapshot 1.4.5已安装在/usr/bin/rsnapshot。

配置SSH用于远程备份
要通过SSH使用Rsnapshot进行远程备份,必须配置基于密钥的身份验证。确保可以从Rsnapshot服务器通过SSH密钥登录到目标服务器。在这一步中,你将在Rsnapshot服务器上生成SSH密钥,然后将公钥上传到目标备份服务器。
在Rocky Linux服务器上,运行以下ssh-keygen命令生成新的SSH密钥。
ssh-keygen -t ed25519
• 按ENTER键将密钥保存在默认位置~/.ssh目录
• 当提示输入密码时,按两次ENTER键跳过

现在运行以下ssh-copy-id命令将SSH密钥上传到目标机器。在本例中,我们将把服务器192.168.10.50上的一些数据备份到Rocky Linux服务器。
ssh-copy-id root@192.168.10.50
提示时输入密码。上传完成后,可以无密码登录到目标服务器,并准备好设置Rsnapshot。

配置Rsnapshot本地和远程备份
现在已经配置了SSH密钥身份验证,可以开始配置Rsnapshot。在本例中,你将设置备份目录、备份保留策略、本地文件备份,然后通过SSH创建远程备份。
备份默认配置文件/etc/rsnapshot.conf,然后使用nano编辑器进行修改。
sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.orig
sudo nano /etc/rsnapshot.conf
将备份目标路径添加到snapshot_root选项。在本例中,所有备份将存储在/data/backup目录中。
snapshot_root /data/backup/
取消注释cmd_rsync、cmd_ssh、cmd_du和cmd_rsnapshot_diff选项。确保每个命令的路径正确。
cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_du /usr/bin/du cmd_rsnapshot_diff /usr/bin/rsnapshot_diff
将默认的retain配置修改为以下内容。命名是可选的,可以根据需要进行更改。在本例中,retain daily 6将创建新的备份目录daily.0到daily.5。
retain daily 6 retain weekly 7 retain monthly 4
取消注释logfile选项以启用Rsnapshot的日志记录。
logfile /var/log/rsnapshot.log
取消注释ssh_args以传递额外的SSH命令。尤其是当你使用非标准端口运行SSH时。
ssh_args -p 22
现在修改backup配置以备份本地目录/home/arvdl。
backup /home/arvdl/ local
对于通过SSH的远程备份,使用以下配置。在本例中,我们将从192.168.10.50服务器备份/etc和/var/www目录到Rsnapshot服务器。同时,确保使用正确的SSH用户并配置了基于密钥的身份验证。
backup root@192.168.10.50:/etc/ rocky9 backup root@192.168.10.50:/var/www rocky9
完成后,保存文件并退出编辑器。
最后,运行以下rsnapshot命令验证配置。如果配置正确,你将看到输出"Syntax is OK"。
rsnapshot configtest

测试Rsnapshot备份
此时,你已经配置了Rsnapshot并创建了本地和远程服务器的备份。现在将通过rsnapshot命令行手动执行备份。你还将检查备份大小并查看Rsnapshot日志文件。
要手动执行备份,运行rsnapshot命令后跟保留名称,例如daily。这将在snapshot_root目录中创建新的备份。
rsnapshot daily
检查snapshot_root目录以确认备份已创建。在本例中,snapshot_root目录为/data/backup。
ls /data/backup
现在运行以下rsnapshot命令检查备份大小。在以下示例中,文件备份大小为3MB。
rsnapshot du

最后,还可以查看Rsnapshot日志文件/var/log/rsnapshot以获取有关Rsnapshot操作的信息。
cat /var/log/rsnapshot

使用Rsnapshot和Cron设置自动备份
在最后这一部分,你将学习如何使用Rsnapshot和Cron设置自动备份。这样rsnapshot命令将通过Cron定期自动执行。
使用nano编辑器创建新的cron配置文件/etc/cron.d/rsnapshot。
sudo nano /etc/cron.d/rsnapshot
插入以下配置为Rsnapshot设置定时任务。在以下示例中,将分别运行rsnapshot daily、rsnapshot weekly和rsnapshot monthly。
# Backup on daily 0 0 * * * root rsnapshot daily # Backup on weekly 0 0 * * 0 root rsnapshot weekly # backup monthly 0 0 1 * * root rsnapshot monthly
完成后,保存文件并退出编辑器。
总结
恭喜!你已经完成了在Rocky Linux 9服务器上安装和配置Rsnapshot。你还学习了基本rsnapshot命令、如何设置多个Rsnapshot保留策略、如何通过SSH进行远程备份,以及如何使用Rsnapshot和Cron设置自动备份。