【Rsync项目实战一】备份全网服务器数据
【Rsync项目实战】备份全网服务器数据
标签(空格分隔): Linux服务搭建-陈思齐
---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明。否则将追究法律责任。http://www.cnblogs.com/chensiqiqi/
【企业案例】
某公司里有一台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-file=/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项目实战]备份全网服务器数据 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转 ...
- 【NFS项目实战二】NFS共享数据的时时同步推送备份
[NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...
- rsync 系统用户/虚拟用户 备份web服务器数据及无交互定时推送备份
一.服务环境 (1),WEBserver(192.168.10.130) : BACKserver(192.168.10.129) (2),BACKserver服务器部署,安装所需软件,并启动 (3) ...
- NetCore项目实战篇03---HTTP Patch 更新数据
一.什么是HTPP Patch HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 ...
- rsync+inotify实现全网自动化数据备份
第1章 环境配置 实例1-1 服务器及IP主机名规划 已知 4 台服务器主机名主机对应信息见下表: 服务器说明 外网 IP(NAT) 内网 IP(NAT) 主机名 web服务器 10.0.0.7/2 ...
- Android项目实战--手机卫士开发系列教程
<ignore_js_op> banner131010.jpg (71.4 KB, 下载次数: 0) 下载附件 保存到相册 2 分钟前 上传 Android项目实战--手机卫士01- ...
- GraphQL + React Apollo + React Hook 大型项目实战(32 个视频)
GraphQL + React Apollo + React Hook 大型项目实战(32 个视频) GraphQL + React Apollo + React Hook 大型项目实战 #1 介绍「 ...
- rsync数据定时增量备份知识管理服务器数据
为了保证公司知识管理服务器数据的安全性,所以计划每天同步confluence服务器上面数据 一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 2.添加配置文 ...
- rsync+sersync自动同步备份数据
一.为什么要用Rsync+sersync架构?1.sersync是基于Inotify开发的,类似于Inotify-tools的工具2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修 ...
随机推荐
- Request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的Cookie等。
1.主要属性 ApplicationPath 获取服务器上asp.net应用程序的虚拟应用程序根路径 Browser 获取有关正在请求的客户端的浏览器功能的信息,该属性值为:HttpBrows ...
- nginx 使用ctx实现数据共享,修改上下文
环境: init_worker_by_lua, set_by_lua, rewrite_by_lua, access_by_lua, content_by_lua, header_filter_by_ ...
- lapis 数据库配置
备注: 目前支持 postgresql .mysql (实际使用大家可以尝试用下tidb.CockroachDB) 1. pg数据库配置 // config.lua local config = ...
- Gixy Nginx 配置分析工具
项目简介 Gixy 是一款用来分析 Nginx 配置的工具. Gixy 的主要目标是防止安全配置错误,并自动进行缺陷检测. 目前支持的 Python 版本是 2.7 和 3.5+ . 免责声明:Gix ...
- iPhone 和 Galaxy高速拍照原理具体分析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zoosenpin/article/details/30027263 1 原理分析 首先我们看一下An ...
- Linux下定时执行任务(crontab命令)
1.循环执行的计划任务 linux下面有atd和crond两种计划任务,其中,atd服务使用的at命令只能执行一次,而crond服务使用的crontab定义的命令,是循环作用的,所以crond才符合我 ...
- mysql binlog_format row and Statement 比较
两种模式的对比: Statement 优点 历史悠久,技术成熟: 产生的 binlog 文件较小: binlog 中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况: binlog 可以用于 ...
- windows10 vs2015编译 带nginx-rtmp-module 模块的32位nginx
1 下载必要软件 从 http://xhmikosr.1f0.de/tools/msys/下载msys:http://xhmikosr.1f0.de/tools/msys/MSYS_MinGW-w6 ...
- appium+python自动化40-adb offline(5037端口被占)
前言 adb连手机的时候经常会出现offline的情况,一般杀掉adb,然后重启adb可以解决. 如果发现不管怎么重启adb都连不上,一直出现offlie的情况,这个时候很大可能就是adb的5037端 ...
- 05:Sysbench压测-innodb_deadlock_detect参数对性能的影响
目录 sysbench压测-innodb_deadlock_detect参数对性能的影响 一.OLTP测试前准备 二.进行OLTP测试 三.测试结果解读: 四.关于测试后的结论: 五.关于测试后的性能 ...