案例列举:
某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份。要求如下:
每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到
备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利
用rsync推送到备份服务器上)。NFS存储服务器同Web服务器,实际工作中就是全部的
服务器。
案例要求:
NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup
要备份的系统配置文件包括但不限于:
定时任务服务的配置文件(/var/spool/cron/root)
开机自启动的配置文件(/etc/rc.local)
日常脚本的目录(/server/scripts)
防火墙iptables的配置文件(/etc/sysconfig/iptables)
自己思考下还有什么需要备份呢
Web服务器站点目录假定为(/var/html/www)
Web服务器A访问日志路径假定为(/app/logs)
Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
备份服务器上,保留每周一的所有数据副本,其它只保留6个月的数据副本
备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中。
解决思路:
1)搭建backup服务器。
a.搭建rsync服务
2)搭建web服务器。
1.验证rsync服务能否推送成功。
2.开发脚本,实现打包,备份,推送,校验,删除。
3.配置定时任务定时推送,每天0点定时推送。
3)搭建backup服务器。
1.实现校验,删除,报警。
2.配置定时任务每天6点定时执行。
4)搭建nfs服务器。
1.验证rsync服务能否推送成功。
2.开发脚本,实现打包,备份,推送,校验,删除。
3.配置定时任务定时推送,每天0点定时推送。
项目实施:
创建四台虚拟机,分别命名web1、web2、nfs_sever、backup
![](https://i-blog.csdnimg.cn/blog_migrate/cd531716a922e224c28695508e3fdee0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e5015887c69ddb3381719f6a02da67da.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d185fc6613becee684fc422fd422d2e8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f2dce94e040160a7a0b2baf3748e5810.png)
给nfs_server和backup分别安装网络源和inotify并配置
![](https://i-blog.csdnimg.cn/blog_migrate/f990b50a117fabd828f97897b3dfceac.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4e1d7b163c01b019425111fa9cd09ea1.png)
查看nfs_server安装NFS安装包并安装
yum -y install nfs-utils rpcbind
启动NFS相关服务
mkdir -p /nfsbackup
chmod 777 /nfsbackup
vim /etc/exports
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
netstat -anpt | grep 111
exportfs -rv 发布内容
showmount -e 查看发布内容
systemctl stop firewalld
在web客户端上安装nfs-utils 创建/var/html并挂载到服务端下
![](https://i-blog.csdnimg.cn/blog_migrate/d2d594ec1b3701e5482e94842d475755.png)
挂载完后返回nfs服务端 修改rsyncd.conf的配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/03c1e4ab63045d11dcd9c19f798032b5.png)
创建共享目录及添加rsync程序用户
useradd -M -s /sbin/nologin rsync
cat /etc/passwd | grep rsync
mkdir /nfsbackup
启动服务并检查
rsync --daemon
netstat -antup | grep rsync
更改属主
chown -R rsync /nfsbackup
创建rsync虚拟账户和密码
echo "rsync_backup:111111" >/etc/rsync.password1
将账户密码文件的权限设置为600
chmod 600 /etc/rsync.password1
加入开机自启
echo "rsync --daemon" >> /etc/rc.local
返回web1客户端创建一个密码文件和备份目录
rpm -qa rsync
echo "111111" > /etc/rsync.password1
mkdir /backup1
将密码文件权限设置为600
chmod 600 /etc/rsync.password1
ls -ld /etc/rsync.password
Rsync同步测试
rsync -avzP /backup1/ rsync_backup@192.168.47140::nfsbackup --password-file=/etc/rsync.password1
![](https://i-blog.csdnimg.cn/blog_migrate/0930699279ff075a41c3d3b85c50fdeb.png)
测试成功后以backup为服务端 nfs、web1、web2为客户端操作同上进行测试
![](https://i-blog.csdnimg.cn/blog_migrate/fbe6d81f1f14d395e681a213ff859225.png)
通过脚本实现rsync功能
![](https://i-blog.csdnimg.cn/blog_migrate/3485de5a01904d56a12cc85a45c13255.png)
inotify实时监控脚本配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/1394454c42cee52babb0b48a185867d7.png)
做定时任务,每天上午6点发送邮箱
[root@backup ]# crontab -l
* * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
* * * * * /bin/bash /server/scripts/checkbak.sh >/dev/null 2>&1
项目总结:
环境搭建是一定关闭防火墙和selinux服务
对rsync的文件一定要注意权限问题