如何使用rsnapshot设置备份服务器
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