如何在Red Hat/CentOS Linux上安装rsnapshot远程备份服务器

时间:2020-01-09 10:43:10  来源:igfitidea点击:

我有带有运行RHEL/CentOS Linux 5.x/6.x/7.x的硬件RAID 6的HP服务器。
如何将此框用作所有其他均由Linux/macOS或者类Unix系统提供支持的其他服务器,台式机和便携式计算机的备份服务器。
该服务器必须按小时,每日和每月的格式进行备份。
如何使用rsnapshot将Red Hat Enterprise Linux或者CentOS Linux服务器配置为远程备份或者快照服务器?

rsnapshot是免费的开源文件系统快照软件。
它是一种简单,可靠的灾难恢复备份解决方案。
它是一个远程备份程序,使用rsync来获取文件系统的备份快照。

它使用硬链接来节省磁盘空间,并提供以下功能:

  • 用于本地或者远程系统的"文件系统快照"
  • 数据库备份MySQL/PgSQL备份
  • "安全"始终使用openssh加密远程备份服务器之间的流量
  • "完全备份",以及每日,每小时和每月的增量备份
  • "易于还原"拥有它们的用户可以恢复文件,而无需root用户参与。
  • 自动备份通过cron在后台运行。
  • 带宽友好rsync也可以节省带宽

本教程向您展示如何在基于CentOS或者RHEL的服务器上安装和使用rsnapshot。

设置示例

  • snapshot.example.com配置有Red Hat/CentOS Linux的RAID 6的HP盒用作其他客户端的备份服务器。
  • DNS ns1.example.com Red Hat服务器充当主要名称服务器。
  • DNS ns2.example.com Red Hat服务器充当辅助名称服务器。
  • www.example.com运行Apache Web服务器的Red Hat。
  • mysql.example.com红帽mysql服务器。

在RHEL/CentOS Linux机器上安装rsnapshot

登录到snapshot.example.com服务器。
执行以下yum命令以安装rsnapshot(首先在CentOS/RHEL上启用EPEL存储库)

# yum install rsnapshot

配置rsnapshot

您需要执行以下步骤。

步骤1:配置少密码登录

要执行远程备份,您需要使用openssh设置少密码登录(请参阅如何创建少密码ssh密钥)。
创建您的rsa ssh密钥,然后使用scp或者ssh-copy-id将它们上传到所有服务器。
您需要在snapshot.example.com服务器上执行以下命令:

# ssh-keygen -t rsa

或者

# ssh-keygen -t rsa -b 4096 -C "My rsnapshot backup server key"

我强烈建议您用密码保护将"复制"公钥复制到所有框:

##############################
## WARNING OVERWRITING FILE ##
##############################
# scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2
# scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2
# scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2
# scp .ssh/id_rsa.pub [email protected]:.ssh/authorized_keys2

为了避免使用ssh-copy-id命令覆盖文件,如下所示:

# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

步骤2:配置rsnapshot

缺省配置文件位于/etc/rsnapshot.conf。
使用文本编辑器打开配置文件,执行:

# vi /etc/rsnapshot.conf

配置规则

您必须遵循两个配置规则:

  • rsnapshot配置文件需要元素之间的选项卡。
  • 所有目录都必须在末尾加斜杠。例如,/home /是指定目录的正确方法,但是/home是错误的。

首先,根据您的RAID设置,指定根目录来存储所有快照,例如/snapshots /或者/dynvol/snapshot /,执行:

snapshot_root	/raiddisk/snapshots/

您必须通过[tab]键将snapshot_root和/raiddisk/snapshots /分开,即,执行snapshot_root击中[tab]键一次,然后执行/raiddisk/snapshots /。

定义快照间隔

您需要指定备份间隔,即指定每小时,每天,每周和每月的间隔:

interval	hourly	6
interval	daily	7
interval	weekly	4
interval	monthly	3

线间隔hourlyly6表示一天要进行6个小时的备份。
可以根据您的备份要求和快照频率随意调整配置。
您也可以按年备份选项:

#########################################
#     BACKUP LEVELS / INTERVALS         #
# Must be unique and in ascending order #
#########################################
 
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 12
interval        yearly  5

远程备份目录

要从ns1.example.com和ns2.example.com备份/var/named /和/etc /目录,请追加:

backup	[email protected]:/etc/	ns1.example.com/
backup	[email protected]:/var/named/	ns1.example.com/
backup	[email protected]:/etc/	ns2.example.com/
backup	[email protected]:/var/named/	ns2.example.com/

要从www.example.com备份/var/www /,/var/log/httpd /和/etc /目录,请输入

backup	[email protected]:/var/www/	www.example.com/
backup	[email protected]:/etc/	www.example.com/
backup	[email protected]:/var/log/httpd/	www.example.com/

要备份存储在/var/lib/mysql /中的mysql数据库文件,请执行:

backup	[email protected]:/var/lib/mysql/	mysql.example.com/dbdump/

使用rsnapshot服务器时,也可以使用此bash shell脚本来备份mysql数据库。
保存并关闭文件。
要测试您的配置,请执行:

# rsnapshot configtest

输出示例:

Syntax OK

安排Cron工作

创建一个名为/etc/cron.d/rsnapshot cron文件的新文件。
使用的以下值对应于/etc/rsnapshot.conf中的示例。

0 */4 * * *         /usr/bin/rsnapshot hourly
50 23 * * *         /usr/bin/rsnapshot daily
40 23 * * 6         /usr/bin/rsnapshot weekly
30 23 1 * *         /usr/bin/rsnapshot monthly
# yearly if set
# 0  0  1 1 *         /usr/bin/rsnapshot yearly

保存并关闭文件。
现在,rsnapshot可以按以下方式从远程文件箱备份文件:

  • 每天进行" 6小时一次"备份(每4小时一次,分别为0、4、8、12、16、20)
  • `每天1个每日备份,每天晚上11:50
  • 每周的11:40 PM,每周六(一周的第六天)进行"每周一次备份"
  • 每月的1号,每月的第1天,晚上11:30

我如何查看备份?

要查看备份更改目录到

# cd /raiddisk/snapshots/
# ls -l

如何还原备份?

假设您要恢复www.example.com的备份。
执行以下命令(从ls -l输出中选择日期和日期):

# cd /raiddisk/snapshots/
# ls -l
# cd hourly.0/www.example.com/
# scp -r var/www/ [email protected]:/var/www/
# scp -r etc/httpd/ [email protected]:/etc/httpd/

如何从备份中排除文件?

要从备份中排除文件,请打开rsnapshot.conf文件并添加以下行:

exclude_file	/etc/rsnapshot.exclude.www.example.com

如下创建/etc/rsnapshot.exclude.www.example.com:

/var/www/tmp/
/var/www/*.cache