【Rsync项目实战】备份全网服务器数据
2017-03-14 12:21
363 查看
【Rsync项目实战】备份全网服务器数据
标签(空格分隔): Linux服务搭建-陈思齐---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明。否则将追究法律责任。http://www.cnblogs.com/chensiqiqi/
[TOC]
【企业案例】
某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份。要求如下:每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上)。NFS存储服务器同Web服务器,实际工作中就是全部的服务器。
具体要求如下:
[x] NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup
[x] 要备份的系统配置文件包括但不限于:
定时任务服务的配置文件(/var/spool/cron/root)
开机自启动的配置文件(/etc/rc.local)
日常脚本的目录(/server/scripts)
防火墙iptables的配置文件(/etc/sysconfig/iptables)
自己思考下还有什么需要备份呢
[x] Web服务器站点目录假定为(/var/html/www)
[x] Web服务器A访问日志路径假定为(/app/logs)
[x] Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
[x] 备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本
[x] 备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
[x] 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中。
1.1 环境部署
操作系统[root@backup ~]# cat /etc/redhat-release CentOS release 6.8 (Final)
内核版本
[root@backup ~]# uname -r 2.6.32-642.el6.x86_64
主机网络参数设置:
主机名 | 网卡eth0 | 网卡eth1 | 用途 |
---|---|---|---|
backup | 10.0.0.41 | 172.16.1.41 | rsync服务端 |
nfs01 | 10.0.0.31 | 172.16.1.31 | NFS存储服务器客户端 |
web01 | 10.0.0.8/24 | 172.16.1.8/24 | nginx web服务器 |
1.2 开始部署backup服务器:Rsync服务端过程:
1)确认软件是否安装:[root@backup ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64
2)配置rsyncd.conf配置文件
#rsync_config____start #created by chensiqi 22:00 2017-3-6 #blog:http://www.cnblogs.com/chensiqiqi/ ##rsyncd.conf start## # 用户 uid = rsync # 组 gid = rsync # 程序安全设置 use chroot = no # 客户端连接数 max connections = 200 # 超时时间 timeout = 300 # 进程号文件位置 pid file = /var/run/rsyncd.pid # 进程锁 lock file = /var/run/rsync.lock # 日志文件位置 log file = /var/log/rsyncd.log ################################### [backup] # 使用目录 path = /backup/ # 有错误时忽略 ignore errors # 可读可写(true或false) read only = false # 阻止远程列表(不让通过远程方式看服务端有啥) list = false # 允许IP hosts allow = 172.16.1.0/24 # 禁止IP hosts deny = 0.0.0.0/32 # 虚拟用户 auth users = rsync_backup # 存放用户和密码的文件 secrets file = /etc/rsync.password ##rsync_config____end##
3)创建rsync账户及共享目录并修改目录属主为rsync
[root@backup ~]# useradd -M -s /sbin/nologin rsync [root@backup ~]# mkdir /backup [root@backup ~]# chown -R rsync /backup
4)启动服务:rsync --daemon
[root@backup ~]# rsync --daemon [root@backup ~]# ss -antup | grep rsync tcp LISTEN 0 5 :::873 :::* users:(("rsync",1851,5)) tcp LISTEN 0 5 *:873 *:* users:(("rsync",1851,4))
5)制作服务启动脚本/etc/init.d/rsyncd
#!/bin/bash #author:Mr.chen # chkconfig:35 13 91 # description:This is Rsync service management shell script # Source function library . /etc/rc.d/init.d/functions start(){ rsync --daemon if [ $? -eq 0 -a `ps -ef|grep -v grep|grep rsync|wc -l` -gt 0 ];then action "Starting Rsync:" /bin/true sleep 1 else action "Starting Rsync:" /bin/false sleep 1 fi } stop(){ pkill rsync;sleep 1;pkill rsync if [ `ps -ef|grep -v grep|grep "rsync --daemon"|wc -l` -lt 1 ];then action "Stopping Rsync: " /bin/true sleep 1 else action "Stopping Rsync:" /bin/true sleep 1 fi } case "$1" in start) start; ;; stop) stop; ;; restart|reload) stop; start; ;; *) echo $"Usage: $0 {start|stop|restart|reload}" ;; esac
6)启动脚本放到/etc/init.d目录下,增加x执行权限并添加开机启动
[root@backup ~]# chmod +x /etc/init.d/rsyncd [root@backup ~]# /etc/init.d/rsyncd stop 已终止 [root@backup ~]# /etc/init.d/rsyncd start Starting Rsync: [确定] [root@backup ~]# chkconfig rsyncd on [root@backup ~]# chkconfig --list | grep rsync rsyncd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
7)创建rsync虚拟账户名和密码,并赋予密码文件600权限
[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.password [root@backup ~]# cat /etc/rsync.password rsync_backup:123456 [root@backup ~]# chmod 600 /etc/rsync.password [root@backup ~]# ll /etc/rsync.password -rw-------. 1 root root 20 3月 7 20:54 /etc/rsync.password
8)配置Rsync服务器端检查脚本
#!/bin/bash # 全网服务器备份解决方案_rsync服务器端检查脚本 # author:Mr.chen # 2017-3-8 . /etc/init.d/functions Path=/backup fileName="md5sum.txt" # 一共有几台客户端在推送数据 rsync_ClientNum=2 /etc/init.d/postfix status &>/dev/null || /etc/init.d/postfix start if [ `find $Path/ -type f -name "md5sum*" | wc -l` -eq $rsync_ClientNum ];then for filepath in `find $Path/ -type f -name "md5sum*"` do /usr/bin/md5sum -c $filepath if [ $? -eq 0 ];then action "${filepath}备份正常!" /bin/true rm -rf $filepath else action "${filepath}备份异常!" /bin/false echo "${filepath}备份异常!" | mail -s "$(date +%F)备份检查告警" xxxxxxxx@qq.com fi done else echo “Rsync客户端推送不完整!” echo "Rsync推送不完整" | mail -s "$(date +%F)备份推送告警" xxxxxxxxx@qq.com fi # 找出超过180天的不是周1的备份文件并删除 find $Path/ ! -name "*_2.tar.gz" -mtime +180 -type f | xargs rm -rf
9)将脚本挂定时任务
00 6 * * * /bin/sh /server/scripts/rsync_Server.sh >/dev/null 2>&1
backup服务器Rsync服务端至此配置完毕
1.3 开始部署nfs01服务器:Rsync客户端过程:
1)只需要创建密码文件(只包含密码即可),并赋予密码文件600权限[root@nfs01 ~]# echo "123456" > /etc/rsync.password [root@nfs01 ~]# chmod 600 /etc/rsync.password
2)创建共享目录backup
[root@nfs01 ~]# mkdir /backup
3)在客户端进行推送测试
[root@nfs01 ~]# cd /backup [root@nfs01 backup]# touch {1..5} [root@nfs01 backup]# ls 1 2 3 4 5 [root@nfs01 backup]# rsync -avzP /backup/ rsync_backup@192.168.197.132::backup --password-fil 4000 e=/etc/rsync.password sending incremental file list ./ 1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=4/6) 2 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=3/6) 3 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=2/6) 4 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=1/6) 5 0 100% 0.00kB/s 0:00:00 (xfer#5, to-check=0/6) sent 239 bytes received 106 bytes 230.00 bytes/sec total size is 0 speedup is 0.00
4)nfs01服务器打包脚本实现
#!/bin/bash # 全网服务器备份解决方案_rsync客户端打包脚本 # author:Mr.chen # 2017-3-7 Path=/backup backup_Server=172.16.1.41 local_IP=`/sbin/ifconfig eth1|awk -F"[ :]+" 'NR==2{print $4}'` Dir=${local_IP}_$(date +%F_%w) mkdir -p $Path/$Dir [ -f /var/spool/cron/root ] && cp -rp /var/spool/cron/root $Path/$Dir/ [ -f /etc/rc.d/rc.local ] && cp -rp /etc/rc.d/rc.local $Path/$Dir/ [ -d /server/scripts ] && cp -rp /server/scripts $Path/$Dir/ [ -d /var/html/www ] && cp -rp /var/html/www $Path/$Dir/ [ -d /app/logs ] && cp -rp /app/logs $Path/$Dir/ [ -f /etc/sysconfig/iptables ] && cp -rp /etc/sysconfig/iptables $Path/$Dir/ cd $Path tar -zcf $Path/${Dir}.tar.gz $Dir rm -rf $Path/$Dir # 创建md5sum验证信息 /usr/bin/md5sum $Path/${Dir}.tar.gz > $Path/md5sum_$(local_IP).txt # 推送打包的文件到备份服务器 rsync -az $Path/ rsync_backup@${backupServer}::backup --password-file=/etc/rsync.password # 找出超过7天的备份并删除 find $Path/ -name "${local_IP}*" -type f -mtime +7 | xargs rm -rf
5)将脚本挂定时任务
00 0 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1
NFS服务器Rsync客户端至此配置完毕
相关文章推荐
- 【Rsync项目实战】备份全网服务器数据
- 【Rsync项目实战】备份全网服务器数据
- 【Rsync项目实战一】备份全网服务器数据
- 【Rsync项目实战】备份全网服务器数据
- 【Rsync项目实战】备份全网服务器数据
- 【Rsync项目实战】备份全网服务器数据
- Linux-Rsync项目实战(详细) 备份全网服务器数据生产架构方案
- 【Rsync项目实战】备份全网服务器数据
- 【Rsync项目实战】备份全网服务器数据
- 通过rsync+inotify实现服务器之间数据的实时备份
- Linux下使用rsync实现数据在不同服务器之前增量自动备份
- CentOS下rsync服务器安装与配置-数据同步-文件增量备份
- rsync服务器架设(数据同步|文件增量备份)
- 用rsync备份一台linux服务器上的数据
- rsync同步远程服务器数据(实战)
- Linux系统crond、rsync、打包备份数据操作实战
- rsync服务器架设(数据同步|文件增量备份)
- 使用rsync实现数据实时同步备份--实战
- rsync服务器架设(数据同步|文件增量备份)
- Linux系统crond、rsync、打包备份数据操作实战