如何使用rsnapshot设置备份服务器

时间:2020-03-21 11:47:02  来源:igfitidea点击:

rsnapshot是基于rsync for Unix的操作系统的文件系统快照实用程序。
它允许我们轻松创建本地机器的定期快照和SSH上的远程机器。
关于RSNAPShot的好处是它在可能的情况下大量使用硬链接,大大减少所需的磁盘空间。

由于rsnapshot仅保留固定数量的快照,因此使用的磁盘空间量不会持续增长。
Rnapshot完全是免费的,开源实用程序提供增量备份。
它完全在Perl中写入,它应该在大多数UNIX的系统上工作。
此步骤教程将解释如何在Linux中使用rsnapshot设置备份服务器。
本教程将明确介绍CentOS 7的安装说明,但这些指令应在任何其他基于RPM的Linux发行版工作。

使用Linux中使用rsnapshot的安装备份服务器

出于本教程的目的,我将使用两个测试系统。
一个是使用CentOS 7运行的备份服务器,另一个是客户端系统。
客户端与Arch Linux一起运行。
备份服务器和客户端的详细信息如下。

备份服务器:

  • OS:CentOS 7 64位最小系统
  • IP地址:192.168.43.150/24

客户 :

  • OS:Arch Linux
  • IP地址:192.168.43.192/24

安装

rsnapshot在CentOS的默认存储库中不可用。
我们需要启用epel存储库以便安装rsnapshot。

$sudo yum install epel-release

然后,使用命令安装rsnapshot:

$sudo yum install rsnapshot rsync

在ARCH Linux及其衍生产品中,它可以在默认的存储库中使用。
因此,我们可以使用默认包管理器Pacman安装,如下所示。

$sudo pacman -S rsnapshot rsync

就在以防情况下,我们要使用像Ubuntu这样基于Deb的系统,我们可以安装RSNAPSHOT,如下所示。

$sudo apt-get install rsnapshot rsync

下载 - 免费电子书:"Ubuntu文档:Ubuntu Server Guide 2014"

备份服务器配置

我们需要创建根备份目录以保存服务器和客户端系统的所有备份。

其中我将使用/rsnapbackup /作为根备份目录。
它是我要将所有备份存放的位置。

我们可以定义自己的选择位置以存储备份。
让我们在备份服务器中创建根备份目录。

$sudo mkdir /rsnapbackup/

要备份远程客户端系统的SSH文件,我们需要为远程客户端系统安装更少的密码SSH身份验证,因此RSNAPSHOT将自动连接到服务器系统并保存备份。

首先,让我们创建SSH密钥对。

$ssh-keygen -t rsa

不要输入任何密码,因为我们希望这些系统能够相互连接而无需输入密码:

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:
ef:27:2a:3d:39:37:af:5e:36:05:10:b2:86:38:7f:e5 Hyman@theitroad
The key's randomart image is:
+--[ RSA 2048]----+
| . o. |
| . . o . |
| o . o . . |
| o . o . |
| . S E . |
| . . . |
| . .. + |
| . =.+o.. |
| ..*+*. |
+-----------------+

接下来,将SSH公钥复制到所有远程客户端系统。

$ssh-copy-id -i /root/.ssh/id_rsa.pub Hyman@theitroad

示例输出:

/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
Hyman@theitroad's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'Hyman@theitroad'"
and check to make sure that only the key(s) you wanted were added.

其中192.168.43.192是我远程客户端系统的IP地址。
我们需要重复上述命令将SSH公钥复制到所有客户端系统以设置密码验证。

现在,我们需要配置备份服务器。

请注意,我们应该在/etc/rsnapshot.conf文件中的目录名结束时指定 tail随斜杠。
例如,我们应该将目录名称指定为/rsnapbackup /,但不是/rsnapbackup。
此外,我们需要元素/字段之间的选项卡(不是空格)。

rsnapshot默认配置是/etc/rsnapshot.conf。
如果需要再次重新配置RSNAPShot,始终建议备份默认配置文件。

$sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak

现在,使用命令编辑rsnapshot config文件:

$sudo nano /etc/rsnapshot.conf

默认配置应该正常工作。
所有我们需要定义备份目录和备份间隔。

首先,让我们设置根备份目录:我们需要选择要存储文件系统备份的目录。
在我们的情况下,我将存储备份UPS/RSNAPBACKUP /目录。

# All snapshots will be stored under this root directory.
#snapshot_root   /rsnapbackup/

同样,我们应该在Snapshot_root元素和备份目录之间使用Tab键。

向下滚动一点,并确保以下行(以粗体标记)取消注释:

[...]# 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 Jan also want to check the
# "du_args" parameter below.
#cmd_du /usr/bin/du
[...]

接下来,我们需要定义备份间隔:

# 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

其中保留alpha 6意味着每次Rsnapshot alpha运行,它将制作一个新的快照,旋转旧的快照,并保留最近的六个(alpha.0 alpha.5)。
我们可以定义自己的间隔。
有关更多详细信息,请参阅RSNAPShot Man页面。

接下来,我们需要定义备份目录。
在rsnapshot配置文件中查找以下指令并设置备份目录位置。

backup /root/theitroad/server/

其中我将备份/root/onitad /目录的内容,并将其保存在/rsnapbackup/server /目录中。
请注意,我没有在上述配置中指定完整路径(/rsnapbackup/server /)。
因为,我们之前已经提到了根备份目录。

同样,定义远程客户端系统备份位置。

# REMOTEHOST
backup Hyman@theitroad:/home/sk/test/client/

其中我将要备份远程客户端系统/home/sk/test /目录的内容,并将其保存在备份服务器中/rsnapbackup/client /目录中。
请注意,我没有在上述配置中指定完整路径(/rsnapbackup/client /)。
因为,我们之前已经提到了根备份目录。

保存并关闭/应关闭/rsnapshot.conf文件。

完成所有更改后,请运行以下命令以验证配置文件是否在语法上有效。

rsnapshot configtest

如果一切顺利,我们将看到以下输出。

Syntax OK

测试备份

运行以下命令以测试备份。

rsnapshot alpha

这需要几分钟,取决于备份的大小。

验证备份

检查备份是否真的存储在备份服务器中的根备份目录中。

ls /rsnapbackup/

我们将看到以下输出:

alpha.0

检查Alpha.0目录:

ls /rsnapbackup/alpha.0/

我们将看到有两个目录自动创建,一个用于本地备份(服务器),另一个用于远程系统(客户端)。

client/server/

检查客户端系统备份:

ls /rsnapbackup/alpha.0/client

检查服务器系统(本地系统)备份:

ls /rsnapbackup/alpha.0/server

自动化备份

我们没有/无法运行rsnapshot命令,以每次备份。
定义CRON作业并自动执行备份作业。

sudo vi /etc/cron.d/rsnapshot

添加以下行:

0 */4 * * *     /usr/bin/rsnapshot alpha
50 23 * * *     /usr/bin/rsnapshot beta
00 22 1 * *     /usr/bin/rsnapshot delta

第一行表明每天服用六个alpha快照(0,4,8,12,16和20小时),每天晚上11:50每晚服用Beta快照,并在晚上10点开始达到Delta快照每个月的第一天。
我们可以根据愿望调整时间。
保存并关闭文件。

完毕! rsnapshot将自动返回Cron作业中的定义时间。
有关更多详细信息,请参阅man页面。

man rsnapshot