Linux运维工程师必知的服务器备份工具:Rsnapshot

2022-04-19 0 140

 

本指南解释了什么是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备份服务器,它将永远开箱即用,无需任何用户干预。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!88525903@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

发表评论
暂无评论