本指南解释了什么是Rsnapshot,如何在Linux中安装Rsnapshot,以及如何在Linux中使用Rsnapshot设置备份服务器。
1.简介
Rsnapshot是一个基于rsync的文件系统快照实用程序,适用于Linux和类Unix操作系统,它允许您通过ssh轻松创建本地机器和远程机器的定期快照。
rsnapshot的好处是它尽可能广泛地使用硬链接,以大大减少所需的磁盘空间。
由于rsnapshot只保留固定数量的快照,因此使用的磁盘空间量不会持续增长。
Rnapshot是一个免费的开源备份应用程序,支持增量备份,它完全用perl编写,应该可以在大多数类Unix系统上运行。
事不宜迟,让我们继续看看如何在Linux中使用Rsnapshot安装、配置和设置备份服务器。
2.在Linux中安装Rsnapshot
Rsnapshot被打包用于许多Linux发行版。
在Alpine Linux中安装Rsnaphot:
$sudo apk add rsnapshot rsync
安装Rsnapshot是Arch Linux、EndeavourOS和Manjaro Linux:
$sudo pacman-S rsnapshot rsync
在Debian、Ubuntu、Linux Mint、Pop_OS中安装Rsnapshot!:
$sudo apt install rsnapshot rsync
在CentOS、Fedora、RHEL、AlmaLinux、Rocky Linux中安装Rsnapshot:
Rsnapshot在CentOS、RHEL、AlmaLinux和Rocky Linux等企业操作系统的默认存储库中不可用,您需要启用[EPEL]存储库才能安装Rsnapshot。
$sudo dnf install epel-release
然后,使用命令安装Rsnapshot:
$sudo dnf install rsnapshot rsync
在openSUSE中安装Rsnapshot:
$sudo zypper install rsnapshot rsync
3.在Linux中使用Rsnapshot设置备份服务器
出于本指南的目的,我将使用两个测试系统。
一个是运行AlmaLinux 8的备份服务器,另一个充当客户端系统,客户端运行Fedora 34桌面。
备份服务器和客户端的详细信息如下。
备份服务器:
操作系统:AlmaLinux 8 64位最小系统
IP地址:192.168.122.25/24
Rsnapshot根目录:/rsnapbackup
备份目录:/home/ostechnix/data/
客户端:
操作系统:Fedora工作站34
IP地址:192.168.225.37/24
备份目录:/home/sk/data/
3.1.在备份服务器中设置无密码SSH身份验证
要通过SSH备份远程客户端系统的文件,您需要为远程客户端系统设置无密码SSH身份验证,因此备份将自动连接到客户端系统而无需密码并备份客户端数据。
以用户身份登录root并在我们的备份服务器系统中创建SSH密钥对。
#ssh-keygen
不要输入任何密码,因为我们希望这些系统能够在没有任何用户干预的情况下相互连接:
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:k/yIpwuk2lqEVxW4O0/6evTjquxCcGffQU0Kgm1ZvPk root alma8
The key’s randomart image is:
+—[RSA 3072]—-+
|o.==.o.|
|.=o…..|
|…+.|
|….+o…|
|.ooo.o oS.|
|o.oo+.E+|
|.o.*..o.|
|+….ooo|
|o..o===+..|
+—-[SHA256]—–+
Linux运维工程师必知的服务器备份工具:Rsnapshot
设置无密码SSH身份验证
接下来,将SSH公钥复制到所有远程客户端系统。
#ssh-copy-id sk 192.168.225.37
将上述命令中的skand替换为远程系统的用户名和IP地址,192.168.225.37输入您的客户端系统用户密码以复制公钥文件:
/usr/bin/ssh-copy-id:INFO:Source of key(s)to be installed:”/root/.ssh/id_rsa.pub”
/usr/bin/ssh-copy-id:INFO:attempting to log in with the new key(s),to filter out any that are already installed
/usr/bin/ssh-copy-id:INFO:1 key(s)remain to be installed–if you are prompted now it is to install the new keys
sk 192.168.225.37’s password:
Number of key(s)added:1
Now try logging into the machine,with:”ssh’sk 192.168.225.37′”
and check to make sure that only the key(s)you wanted were added.
这里,192.168.225.37是我的远程客户端系统(即Fedora Desktop)的IP地址。
现在您可以在没有任何密码的情况下通过ssh进入客户端系统。
重复上述命令,将ssh公钥复制到所有客户端系统,以设置无密码身份验证。
接下来,我们需要配置备份服务器。
3.2.Rsnapshot备份服务器配置
创建根备份目录以保存服务器和客户端系统的所有备份。
出于本指南的目的,我将/rsnapbackup/其用作根备份目录。这是我要存储所有备份的目录。
您可以定义自己选择的位置来存储备份。
让我们使用以下命令在备份服务器中创建Root备份目录:
#mkdir/rsnapbackup
接下来我们需要在Rsnapshot默认配置文件中编辑更新Root备份目录、要备份的目录、备份间隔/etc/rsnapshot.conf。
在编辑配置之前,始终建议备份默认配置文件,以防您需要再次重新配置rsnapshot。
#cp/etc/rsnapshot.conf/etc/rsnapshot.conf.bak
现在,使用命令编辑rsnapshot配置文件:
#nano/etc/rsnapshot.conf
默认配置应该可以正常工作。您需要做的只是定义备份目录和备份间隔。
“
注意:请注意,您应该在文件中的目录名称末尾指定一个斜杠。/etc/rsnapshot.conf例如,您必须将目录名称指定为/rsnapbackup/,而不是/rsnapbackup。此外,您需要在元素/字段之间使用制表符(而不是空格)。
”
首先,让我们设置根备份目录,即定义我们要存储文件系统备份的目录,在我们的例子中,我会将备份存储在/rsnapbackup/目录中。
#All snapshots will be stored under this root directory.
#
snapshot_root/rsnapbackup/
Linux运维工程师必知的服务器备份工具:Rsnapshot
定义Rsnapshot根目录
同样,您应该在snapshot_root元素和备份目录之间使用TAB键。
“
注意:Rsnapshot不支持通过SSH的远程快照根。
”
向下滚动一点,并确保以下行(以粗体标记)未注释:
[…]
#################################
#EXTERNAL PROGRAM DEPENDENCIES#
#################################
#LINUX USERS:Be sure to uncomment”cmd_cp”.This gives you extra features.
#EVERYONE ELSE:Leave”cmd_cp”commented out for compatibility.
#
#See the README file or the man page for more details.
#
cmd_cp/usr/bin/cp
#uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm/usr/bin/rm
#rsync must be enabled for anything to work.This is the only command that
#must be enabled.
#
cmd_rsync/usr/bin/rsync
#Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh/usr/bin/ssh
#Comment this out to disable syslog support.
#
cmd_logger/usr/bin/logger
#Uncomment this to specify the path to”du”for disk usage checks.
#If you have an older version of”du”,you may also want to check the
#”du_args”parameter below.
#
cmd_du/usr/bin/du
[…]
Linux运维工程师必知的服务器备份工具:Rsnapshot
取消注释外部程序依赖项
接下来,我们需要定义备份间隔:
#########################################
#BACKUP LEVELS/INTERVALS#
#Must be unique and in ascending order#
#e.g.alpha,beta,gamma,etc.#
#########################################
retain alpha 6
retain beta 7
retain gamma 4
#retain delta 3
Linux运维工程师必知的服务器备份工具:Rsnapshot
定义备份级别
在这里,retain alpha 6意味着每次运行rsnapshot alpha时,都会创建一个新快照,轮换旧快照,并在Rsnapshot根目录中名为alpha.0,alpha.1,…的目录中保留最近的六个备份,alpha.5然后下次运行该命令时,该alpha.5目录将被删除。
同样,当我们rsnapshot beta每次调用时,它都会创建新快照,轮换旧快照并保留最近的7个备份(delta.0-delta.6)
请注意,alpha、beta、gamma和delta只是定义备份间隔的名称,您还可以定义自己的间隔。
例如,您可以将默认备份级别替换为您选择的一些有意义的名称,如下所示:
retain hourly 24
retain daily 7
retain weekly 4
retain monthly 12
当我们调用时,它会在目录rnsapshot hourly中创建一个新的备份。<rsnapshot-root>/hourly.0/每次运行此命令时,它将不断创建新目录,最多<rsnapshot-root>/hourly.23/.
这对于每日、每周和每月备份都是相同的。
接下来,如果要为Rsnapshot设置日志文件,请取消注释以下行:
logfile/var/log/rsnapshot
如果您更改了SSH默认端口,则需要取消注释此行并在此处提及有效端口号:
ssh_args-p 2222
最后,您需要定义要备份的目录,在您的rsnapshot配置文件中找到以下指令并设置备份目录位置。
###############################
###BACKUP POINTS/SCRIPTS###
###############################
#LOCALHOST
backup/home/ostechnix/data/myserverbackup/
在这里,我将备份/home/ostechnix/data/目录的内容并将它们保存在/rsnapbackup/myserverbackup/目录中。
“
注意:请注意,我没有/rsnapbackup/myserverbackup/在上述配置中指定完整路径(即),因为,我们之前已经提到了Root备份目录,所以我们这里不需要指定Rsnapshot根目录。
”
同样,定义您的远程客户端系统备份位置。
#REMOTEHOST
backup sk 192.168.225.37:/home/sk/data/myclientbackup/
在这里,我将备份我的远程客户端系统/home/sk/data/目录的内容并将它们保存/rsnapbackup/myclientbackup/在我的备份服务器的目录中。
再次请注意,我没有/rsnapbackup/myclientbackup/在上述配置中指定完整路径(),因为,我们已经定义了Root备份目录。
Linux运维工程师必知的服务器备份工具:Rsnapshot
在Rsnapshot中定义要备份的目录
保存并关闭/etc/rsnapshot.conf文件。
完成所有更改后,运行以下命令以验证配置文件在语法上是否有效。
$rsnapshot configtest
如果一切顺利,您将看到以下输出。
Syntax OK
3.3.开始备份
运行以下命令以使用Rsnapshot手动启动备份。
#rsnapshot alpha
次备份将需要几分钟到几个小时,具体取决于备份的大小,后续备份会快很多,因为Rsnapshot只会备份差异。
同样,您可以启动其他备份级别:
#rsnapshot beta
#rsnapshot gamma
#rsnapshot daily
3.4.验证和查看备份
让我们检查备份是否真的存储在备份服务器的根备份目录中。
#ls/rsnapbackup/
您将看到以下输出:
alpha.0
检查alpha.0目录内容:
#ls/rsnapbackup/alpha.0/
您将看到自动创建了两个目录,一个用于本地备份(myserverbackup),另一个用于远程系统(myclientbackup)。
myclientbackup myserverbackup
要检查客户端系统备份,请运行:
#ls/rsnapbackup/alpha.0/myclientbackup/
检查服务器系统(本地系统)备份:
#ls/rsnapbackup/alpha.0/myserverbackup/
Linux运维工程师必知的服务器备份工具:Rsnapshot
查看Rsnapshot备份
当您每次运行Rnaspshot时,它将根据您配置的保留级别的数量创建新的目录,例如alpha.0,alpha.1等等。
#ls/rsnapbackup/
alpha.0 alpha.1
该alpha.0目录将包含的备份。
3.5.计划备份
您无需每次都运行rsnapshot命令来创建备份,只需定义一个cron作业以定期自动执行备份作业。
为此,请为rsnapshot创建一个新的cron作业文件:
#nano/etc/cron.d/rsnapshot
添加以下行:
0*/4***/usr/bin/rsnapshot alpha
50 23***/usr/bin/rsnapshot beta
00 22 1**/usr/bin/rsnapshot delta
行表示每天(0、4、8、12、16和20小时)拍摄6个alpha快照,每晚11:50拍摄Beta快照,晚上10点拍摄delta快照每个月的天,您可以根据自己的意愿调整时间,保存并关闭文件。
完毕!从现在开始,Rsnapshot将在定义的时间自动备份您的数据。
有关更多详细信息,请参阅手册页。
#man rsnapshot
4.恢复文件
恢复文件很容易!如果您拥有sudo或root访问备份服务器,您可以简单地从Rsnapshot根目录复制文件,即/rsnapbackup/.
5.结论
在Linux中使用Rsnapshot设置备份服务器并不难,初始配置可能看起来很难并且需要一点时间,但是,一旦您正确设置了Rsnapshot备份服务器,它将永远开箱即用,无需任何用户干预。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/115540.html<