实时同步rsync+inotify

原创博文http://www.cnblogs.com/elvi/p/7658071.html

#linux同步
#实时同步rsync+inotify,双向同步inotify+unison
#centos6 #关闭selinux、防火墙
chkconfig iptables off
chkconfig ip6tables off
/etc/init.d/iptables stop
/etc/init.d/ip6tables stop
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
grep --color=auto '^SELINUX' /etc/selinux/config #查看
setenforce # 使配置立即生效
vim /etc/hosts #添加hostname名称
reboot #最好重启
#更换阿里源
yum -y install wget vim
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#安装epel包
yum -y install http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum makecache #生成缓存 ##安装
yum install -y rsync #server1 IP 172.16.11.31
mkdir -p /bak/sys1
cd /bak/sys1
echo test >$(date +%Y-%m-%d-%H%M%S).txt
#server2 IP 172.16.11.32
mkdir -p /bak/sys2
cd /bak/sys2 #ssh同步源
rsync -avz root@172.16.11.31:/bak/sys1/* /bak/sys2
#rsync -avz /bak/sys2 root@172.16.11.31:/bak/sys1/* #rsync同步源配置
vim /etc/rsyncd.conf
#
uid = nobody
gid = nobody
user chroot = no
max connections = 200
timeout = 600
port = 873
pid file = /var/run/rsyncd.pid
#lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[sys1]
comment= sys1 test
path=/bak/sys1
ignore errors
read only = no
list = no
#hosts allow = 192.168.0.0/24
auth users = test
secrets file = /etc/rsyncd.db
echo test:test>/etc/rsyncd.db
chown root:root /etc/rsyncd.db
chmod 600 /etc/rsyncd.db yum -y install xinetd
vim /etc/xinetd.d/rsync
# disable = yes 改成 disable = no
service xinetd restart #启动独立进程运行
pkill rsync
/usr/bin/rsync --daemon
#client
/usr/bin/rsync -avz test@172.16.11.31::sys1 /bak/sys2
#若需要写入权限,需要设置目录
setfacl -m u:nobody:rwx /bak/sys1/ ###免密码验证
#ssh秘钥
ssh-keygen -t rsa -P ''
ssh-copy-id root@172.16.11.31
ssh 172.16.11.31
rsync -avz root@172.16.11.31:/bak/sys1/* /bak/sys2
#rsync的同步源,设置变量export RSUNC_PASSWORD=test
#设置密码文件
echo test> /etc/rsyncd.password
chmod 600 /etc/rsyncd.password
/usr/bin/rsync -avz test@172.16.11.31::sys1 /bak/sys2 --password-file=/etc/rsyncd.password ###实时同步
#安装inotify-tools
yum install make gcc gcc-c++ #安装编译工具
cd /usr/local/src
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz #解压
cd inotify-tools-3.14 #进入解压目录
./configure && make && make install #编译 #安装
#目录测试
inotifywait -mrq -e create,delete /bak/sys1/ #修改inotify默认参数
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"
vim /etc/sysctl.conf #添加以下代码
fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535 #创建实时监控脚本
vim /bak/inotify_rsync.sh
#!/bin/sh
SRC=/bak/sys1/
DST=root@172.16.11.32:/bak/sys2/
#/bin/su - rsync
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do
/usr/bin/rsync -ahqzt --delete $SRC $DST
done
#
chmod +x /bak/inotify_rsync.sh
/bak/inotify_rsync.sh &
#echo "/bak/inotify_rsync.sh &" >> /etc/rc.local #开机自启动 #双向同步inotify+unison
yum install ocaml ocaml-camlp4-devel ctags ctags-etags -y
wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.4.tar.gz
tar -zxvf unison*
cd src
make UISTYLE=text THREADS=true STATIC=true
make install
cp unison /usr/local/bin
#cp unison /usr/bin
#创建实时监控脚本
vim /bak/unison.sh
#!/bin/sh
SRC=/bak/sys1/
DST=ssh://172.16.11.32//bak/sys2/
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do
/usr/local/bin/unison -batch $SRC $DST
done
#
chmod +x /bak/unison.sh
/bak/unison.sh &
#nohup /bak/unison.sh &
#server2也配置运行
vim /bak/unison.sh
#!/bin/sh
SRC=/bak/sys2/
DST=ssh://172.16.11.31//bak/sys1/
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do
/usr/local/bin/unison -batch $SRC $DST
done
#
mkdir /bak/log
nohup /bak/unison.sh &>>/bak/log/unison.log &
#开机自启动(vim /etc/rc.local无效)
crontab -e
* * * * * /bak/unison.sh >>/bak/log/unison.log 2>&1 &
#这样会造成很多进程
##
echo "nohup /bak/unison.sh >>/bak/log/unison.log 2>&1 &" >> /etc/rc.local
#vim /etc/rc.local 测试无效
chmod +x /etc/rc.d/rc.local
echo $(date) >>11.txt #关闭进程
pkill unison.sh
pkill inotifywait

实时同步rsync+inotify的更多相关文章

  1. 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)

    先配置好epel源 [root@node3 ~]#yum install epel-release -y 关闭防火墙和selinux [root@node3 ~]#iptables -F [root@ ...

  2. 数据文件实时同步(rsync + sersync2)

    因近期项目需求,需要同步云端服务器的数据给**方做大数据分析. 思路: 起初只要数据同步,准备开放数据采集接口.但实时性较差,会有延迟. 故而寻觅各种解决方案,最终确定使用 rsync 进行文件同步, ...

  3. 文件触发式实时同步 Rsync+Sersync Rsync+Inotify-tools

    一.概述 1.Rsync+Sersync 是什么? 1)Sersync使用c++编写基于inotify开发的触发机制: 2)Sersync可以监控所监听的目录发生的变化(包括新建.修改.删除),具体到 ...

  4. rsync+inotify实时同步环境部署记录

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...

  5. rsync+inotify实时同步方案

    rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务 ...

  6. rsync简介与rsync+inotify配置实时同步数据

    rsync简介 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync特性 rsync ...

  7. (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

    Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...

  8. inotify与rsync实现实时同步记录文档

    目录 安装 配置 参考链接 安装 安装rsync yum -y install rsync 安装inotify-tools 这是一个实时监听文件变换的工具 wget -O /etc/yum.repos ...

  9. Rsync+inotify自动同步数据

    一.简介 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足. 首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传 ...

随机推荐

  1. 做多了国际化项目,你怎么处理时区不同的各种blabla...问题

    我们做的的都是国际化大项目,今天发现了个大bug,没错!是时区不同引起的,如果你觉得这还不简单,这样,这样,再这样不就可以了吗?我只能呵呵了. 先来普及一下基础知识 : 1.地球分为24时区,北京位于 ...

  2. EF 数据重复和缺失问题(select 错误 )

    字段有 id,name,password,sex 1.错误举例: var data = db.User.Select(d => d):   2修正 var data = db.User.Sele ...

  3. Java基础总结--多线程总结1

    ----进程和线程-----1.概述:简单理解一个进程就是一个正在运行的程序(程序在内存中的所属空间)程序只有在运行的时候才会被加载进内存2.进程内部的划分进程不会直接执行,只是被当作分配内存资源的基 ...

  4. SimpleDateFormat 常规用法

    public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (d ...

  5. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) K Tournament Wins

    题目链接:http://codeforces.com/gym/101201 /* * @Author: lyucheng * @Date: 2017-10-22 14:38:52 * @Last Mo ...

  6. 获取对象属性(key)组成的数组 Object.keys( obj ).md

    Object.keys() 方法会返回一个由给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in ...

  7. 动态加载js css 插件

    简介 动态加载js,css在现在以及将来肯定是很重要的.目前来看前端代码编写的业务量已经远远超过后端编写的.随着对用户体验度逐渐增强,前端业务复杂,加载速度变得很慢很慢.为了解决这个问题,目前出现的两 ...

  8. .Net 中通用的FormatString格式符整理

    格式化日期和数字的字符串经常要用到这个, 就把帮助里面的东西大概整理了一些列在这里了. 下表描述了用来格式化 DateTime 对象的标准格式说明符.格式说明符 名称 说明 d 短日期模式 显示由与当 ...

  9. C语言系列之printf和%12d的用法(三)

    看C语言程序的时候,往往会遇到printf函数输出,在此,我想总结一下printf的一般用法以及%12d是什么意思 printf函数的一般格式为 printf(格式控制,输出列表): 例如: prin ...

  10. mybatis逆向工程之生成文件解释

    一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...