使用rsync实现数据实时同步备份--实战
实战3:
配置rsync 服务器及需要备份的目录,不使用系统用户需要自己创建自己的配置文件: /etc/rsyncd.conf ; 创建备份帐户,最后把rsync 以daemon方式运行。
配置文件:/etc/rsyncd.conf 整体分两部分:
全局参数 :对于rsync 生效。如果模块参数和全局参数冲突,针对冲突模块的模块参数生效
模块参数: 定义rsync 输出的目录的参数。
无交互备份数据
编辑配置文件
[root@xuegod-63 ~]# vim /etc/rsyncd.conf
uid=nobody
gid=nobody
address = 192.168.1.63
port=873
hosts allow= 192.168.1.64
#hosts deny=0.0.0.0/32
use chroot=yes
max connections=5
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
motd file=/etc/rsyncd.motd
[wwwroot]
path=/var/www/html
comment=rsync wwwroot of www.xuegod.cn
read only=yes
list=yes
auth users=backuper
secrets file=/etc/rsync.passwd
此配置文件,参数 说明:
全局参数
uid=nobody #运行进程的身份
gid=nobody # 运行进程的组
address = 192.168.1.63 #监听IP地址
port=873 #端口
hosts allow= 192.168.1.64 192.168.0.25 #允许同步的客户端IP地址
单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,
整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0
“*”则表示所有,默认是允许所有主机连接。
#hosts deny=0.0.0.0/32
use chroot=yes #锁定家目录。rsync被黑了,***无法在rsync运行的家目录之外创建文件,该选项设置为yes。
max connections=5 #最大链接数
pid file=/var/run/rsyncd.pid # pid文件。存放进程ID。自动生成
lock file=/var/run/rsync.lock #指定支持max connections参数的锁文件。
log file=/var/log/rsyncd.log #日志
motd file=/etc/rsyncd.motd #客户端登录后的弹出的信息。需要创建。子配置
模块参数:
[wwwroot] #共享模块名
path=/var/www/html #供备份的路径
comment=rsync wwwroot of www.xuegod.cn # 描述,
read only=yes # 以只读的方式 提供备份
list=yes #允许查看模块信息
auth users=backuper #指定备份的用户,和系统用户 无关
secrets file=/etc/rsync.passwd #指点存放用户 和密码文件。格式: 用户名:密码
过滤子配置文件并追加信息到子配置文件
[root@xuegod-63 ~]# grep motd /etc/rsyncd.conf
motd file=/etc/rsyncd.motd
#过滤是为了查找到各“子配置”文件在rsyncd.conf这个“总配置”文件中默认叫啥名,是怕“子配置”文件名创建错了才这么弄的。由此我们可以看到,子配置文件motd在/etc/rsyncd.motd/下
[root@xuegod-63 ~]# echo "welconme to backup server" > /etc/rsyncd.motd #将 "welconme to backup server"的欢迎信息写入到子配置文件中去
过滤passwd子配置文件并设置密码和修改权限
[root@xuegod-63 ~]# grep passwd /etc/rsyncd.conf
secrets file=/etc/rsync.passwd
[root@xuegod-63 ~]# vim /etc/rsync.passwd
backuper:123456
[root@xuegod-63 ~]# chmod 600 /etc/rsync.passwd
#设置rsyncd_users.db文件的权限为700或600,权限设置不对的话身份验证会失败
会弹以下出错信息,当然,输错密码后,也会弹这个信息:
重启xinetd服务:
[root@xuegod-63 ~]# /etc/init.d/xinetd restart
清空/web-back/目录下的文件
[root@xuegod-64 ~]# rm -rf /web-back/* #清空以后,在wen-back下什么都没有了
无交互备份
[root@xuegod-64 ~]# rsync -azv backuper@192.168.1.63::wwwroot /web-back/ #将1.63下的用户backuper的文件备份到本机1.64的/web-back/下
welconme to backup server
Password:
grub/
grub/device.map
grub/e2fs_stage1_5
再次查看目录
[root@xuegod-64 ~]# ls /web-back/ #现在此目录下 又有了grub目录了
grub
#这样就可以备份了
无交互不输密码进行备份
删除备份到的目标目录下文件
[root@xuegod-64 ~]# rm -rf /web-back/*
[root@xuegod-64 ~]# ls /web-back/
定义变量,export环境变量,免密码rsync
[root@xuegod-64 ~]# export RSYNC_PASSWORD=123456
无交互备份
[root@xuegod-64 ~]# rsync -azv backuper@192.168.1.63::wwwroot /web-back/
rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录
#将1.63下的用户backuper的文件备份到本机1.64的/web-back/下
welconme to backup server
grub/
grub/device.map
查看备份的目标目录
[root@xuegod-64 ~]# ls /web-back/
Grub # 这时所需要被备份的目录被备份过来了
再次删除备份到的目标目录下文件
[root@xuegod-64 ~]# rm -rf /web-back/*
[root@xuegod-64 ~]# ls /web-back/
编写脚本
[root@xuegod-64 ~]# vim backup.sh
#!/bin/bash
export RSYNC_PASSWORD=123456
rsync -azv backuper@192.168.1.63::wwwroot /web-back/
增加权限并备份
[root@xuegod-64 ~]# chmod +x backup.sh
[root@xuegod-64 ~]# ./backup.sh
welconme to backup server
grub/device.map
grub/e2fs_stage1_5
#这个时候我们可以看到,备份文件不再需要输入密码了
[root@xuegod-64 ~]# ls /web-back/
grub
#文件已被备份过来了
编写计划任务
[root@xuegod-64 ~]# crontab -e
01 3 * /root/backup.sh &
#任务在每天的3点1分进行数据备份
添加防火墙规则:
[root@xuegod63 ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT #让防火墙对873端口进行放行
[root@xuegod63 ~]# /etc/init.d/iptables save #保存防火墙规则
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
实战4:
目标:
配置rsync+inotify实时同步
把xuegod63.cn服务器上的/var/www/html目录时实同步到xuegod64.cn主机上的/web-back目录中。
概述
Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。
环境
inotify-tools服务端:xuegod-63 IP:192.168.1.63
客户端:xuegod-64 IP:192.168.1.64
查看是否支持inotify,从kernel 2.6.13开始正式并入内核。
[root@xuegod-63 ~]# uname -r
2.6.32-220.el6.x86_64
[root@xuegod-63 ~]# ls /proc/sys/fs/inotify/
max_queued_events max_user_instances max_user_watches
注:
在linux内核中,默认的inotify机制提供了三个调控参数:
max_queued_events #表示监控事件队列
max_user_instances #表示最多监控实例数
max_user_watches #表示每个实例最多监控文件数
查看具体参数值:
[root@xuegod-63 ~]# cat /proc/sys/fs/inotify/max_queued_events
16384
[root@xuegod-63 ~]# cat /proc/sys/fs/inotify/max_user_instances
128
[root@xuegod-63 ~]# cat /proc/sys/fs/inotify/max_user_watches
8192
注:当要监控的目录、文件数量较多或者变化较频繁时,要加大这三个参数的值。
例如:可直接修改/etc/sysctl.conf配置文件,将管理队列设为32768,实例数设为1024,监控数设为9000000(建议大于监控目标的总文件数)
自改配置文件
[root@xuegod-63 ~]# vim /etc/sysycrl.conf #以文件最后,添加以下内容
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 90000000
[root@xuegod-63 ~]# sysctl -p #使修改后的sysctl.conf文件生效
安装inotify-tools-3.13.tar:将拥有inotifywait、inotifywatch辅助工具程序,从而来监控、汇总文件系统改动情况。
[root@xuegod-63 ~]# tar -zxvf inotify-tools-3.13.tar.gz #进行都文件的解压
[[root@xuegod-63 ~]# cd inotify-tools-3.13
[root@xuegod-63 inotify-tools-3.13]# ./configure
[root@xuegod-63 inotify-tools-3.13]# make -j 4
[root@xuegod-63 inotify-tools-3.13]# make install
测试:
使用inotifywait命令监控网站目录/var/www/html发生的变化。然后在另一个终端向/var/www/html目录下添加文件、移动文件,查看屏幕输出结果。
[root@xuegod63 ~]# inotifywait -h
常用参数:
-e 用来指定要监控哪些事件。
这些事件包括: create创建,move移动,delete删除,modify修改文件内容,attrib属性更改。
-m 表示持续监控
-r 表示递归整个目录
-q 表示简化输出信息。
1.63上打开两个终端
1终端上开启监控
[root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/
#开启的监控具有创建,移动,删除和修改功能,监控到/var/www/html/下的数据变化‘
2终端上进行创建,移动,删除等命令
[root@xuegod-63 ~]# echo aaa > /var/www/html/a.htal
[root@xuegod-63 ~]# mkdir /var/www/html/test
[root@xuegod-63 ~]# cp /etc/passwd /var/www/html/test/
[root@xuegod-63 ~]# rm -rf /var/www/html/test/passwd
查看1终端上的数据信息变化
[root@xuegod-63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/
/var/www/html/test/ CREATE passwd
/var/www/html/test/ MODIFY passwd
/var/www/html/test/ DELETE passwd
#我们可以看到,刚才在2终端上的命令意义在2终端上一一呈现出来了,这样就成功的监视了/var/www/html/的数据变化情况!使用inotifywait输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。
编写触发式同步脚本
第一步,
同步时不需要输入密码:
xuegod63发生变化后,直接将发生变化的数据同步到xuegod64,同步时不需要输入密码
同步秘钥
[root@xuegod-63 ~]# ssh-keygen #生成主机1.63的公私钥匙
[root@xuegod-63 ~]# ssh-copy-id root@192.168.1.64拷贝自己的公钥到要登录的服务器1.64上。
测试
[root@xuegod-63 ~]# ssh 192.168.1.64
Last login: Sun Aug 23 14:13:38 2015 from 192.168.1.63
[root@xuegod-64 ~]# exit
#已经成功无需密码登陆远程客户端了
第二步:
编写触发式同步脚本
[root@xuegod-63 ~]# vim a.sh
#!/bin/bash
inotifywait -mrq -e create,move,delete,modify /var/www/html/ | while read a b c
do
rsync -azP --delete /var/www/html/ root@192.168.1.64:/web-back
done
给脚本添加课执行权限
[root@xuegod-63 ~]# chmod +x a.sh
清空一下/var/www/html/下的所有内容
[root@xuegod-63 ~]# rm -rf /var/www/html/*
1终端上执行脚本
[root@xuegod-63 ~]# ./a.sh
2终端上测试—拷贝文件及创建目录
[root@xuegod-63 ~]# cp -r /boot/grub/ /var/www/html/
[root@xuegod-63 ~]# mkdir /var/www/html/test
[root@xuegod-63 ~]# mkdir /var/www/html/111
1终端上查看执行脚本
[root@xuegod-63 ~]# ./a.sh
看到
1.64上查看目录
[root@xuegod-64 ~]# ls /web-back/
111 grub test
开机启动监控
[root@xuegod-63 ~]# echo '/root/a.sh &' >> /etc/rc.local
优化此脚本:
[root@xuegod63 ~]# vim a.sh
#!/bin/sh
SRC=/var/www/html
DST=root@192.168.1.64:/web-back
inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do/usr/bin/rsync -ahqzt --delete $SRC $DSTdone
[root@xuegod63 ~]# cp /root/a.sh /opt/inotify_rsync.sh
[root@xuegod63 ~]# echo '/opt/inotify_rsync.sh &' >> /etc/rc.local
实战5:
防止网页被篡改
修改配置文件
[root@xuegod-63 ~]# vim a.sh
#!/bin/bash
inotifywait -mrq -e create,move,delete,modify /var/www/html/ | while read a b c
do
rsync -azP --delete root@192.168.1.64:/web-back/ /var/www/html/
#rsync -azP --delete /var/www/html/ root@192.168.1.64:/web-back
done
#脚本的意义是只要一有人修改页面,脚本就会自动运行,网页就会自动恢复到原来的页面状态,因此是修改不了网页页面的
测试:
[root@xuegod-63 ~]# /root/a.sh #执行这个命令
[root@xuegod-63 html]# echo aaa > a.html
查看:
[root@xuegod-63 ~]# /root/a.sh #弹出的信息
receiving incremental file list
deleting a.html
sent 17 bytes received 410 bytes 854.00 bytes/sec
total size is 255156 speedup is 597.56
receiving incremental file list
sent 14 bytes received 407 bytes 280.67 bytes/sec
total size is 255156 speedup is 606.07
receiving incremental file list
sent 14 bytes received 407 bytes 842.00 bytes/sec
total size is 255156 speedup is 606.07
#这个时候脚本就会自动监视着页面,出现变更,就会弹出此信息和恢复到原来的页面!
文章转自:http://www.linuxidc.com/Linux/2017-05/143462.htm
转载于:https://blog.51cto.com/rescue/2046441
使用rsync实现数据实时同步备份--实战相关推荐
- rsync + inotify 数据实时同步
一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...
- inotify介绍及rsync + inotify 实时同步备份
1.前言 rsync (remote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计 ...
- linux云计算架构师:Rsync+sersync实现数据实时同步
全套学习资料移步至公众号[学神来啦]更多学习资料添加扣扣资源群:661308959 本节所讲内容: 2.1 Rsync概述 2.2 Rsync服务安装 2.3 Rsync+sersy ...
- Linux下Rsync+Inotify-tools实现数据实时同步
说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.osyun ...
- Linux下Rsync+sersync实现数据实时同步
一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除 ...
- Centos rsync + notify 实现数据实时同步
目录 rsync + notify 实现数据实时同步 一.简介 二.原理 三.实验环境 四.实验预期 五.准备工作 六.服务配置 目标服务器配置 源服务器配置 七.实现inodify实时触发rsync ...
- 手把手教你达梦数据实时同步软件 (DMHS)的安装和使用(附实战详细记录:本地模拟实现达梦数据库双活、灾备)
系列文章目录 文章目录 系列文章目录 前言 环境 一.DMHS的安装 (命令行) 1.安装文件准备 2.修改可执行文件后执行安装程序 二.DM8数据库准备工作 1.开启归档日志 2.开启逻辑日志 3. ...
- rsync与inotify实现数据实时同步
Rsync与Inotify 单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rs ...
- oracle和mysql数据实时同步_异构数据源的CDC实时同步系统——最终选型实战
引言: <异构数据源的CDC实时同步系统> 系列第一篇 (已完成) <零编码打造异构数据实时同步系统--异构数据源CDC之2> 系列第二篇(已完成) <零编码打造异构数据 ...
最新文章
- 深度学习与机器学习的思考
- gradle编译很慢解决方法
- MATLAB 数值数组和字符串转换
- BestCoder-Round#33
- 前端翻译:Activating Browser Modes with Doctype
- 不改变原数组的一些方法
- Tensorflow 循环神经网络03 LSTM长短时记忆神经网络
- 用友服务器ip地址在哪里修改密码,用友服务器ip地址在哪里修改密码
- 基于Qt的抽奖小程序
- Linux 网易云 deb 包下载 安装
- [整理]WebUploader + SpringMVC 实现多文件断点续传之一 多文件上传
- Neo4j的下载与安装
- 虚拟环境中用Anaconda安装显卡CUDA驱动与CUDA运行版本匹配
- android隐藏顶部导航栏,Android去除顶部导航条
- php 画布源代码,PHP中的画布详解
- mac 不显示 外接屏幕_Mac连接投影仪 Mac外接显示器设置教程
- 怎么把wav转换成mp3格式,5种方法值得收藏
- 浅谈服务器托管至IDC数据中心的优势
- 互联网技术部门该如何管理
- 利用网盘 给本地磁盘秒加8T空间