Linux文件实时同步,可实现一对多
说明:该功能服务端安装sersync2,客户端安装rsync,原理就是服务端主动推送设定目录下的所有更新的文件到各个客户端rsync接收。
rsync大家都知道,是Linux自带的数据同步工具,而sersync2是google大神的开源项目http://code.google.com/p/sersync/
下面给出具体的实现步骤,实现的详细原理大家可以去上面的开源网址,上面说的很详细
- 客户端配置,首先系统安装rsync工具,
[root@yo57 ~]# vi /etc/rsyncd.conf uid=www
gid=www
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock [yowebtongbu]
path=/Data/code/adserver
comment = yo web files
ignore errors = yes
read only = no
hosts allow = 192.168.0.0/24
hosts deny = *
[root@yo57 ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
[root@yo57 ~]# ps -ef|grep rsyn
root 1070 29923 0 17:04 pts/4 00:00:00 grep rsyn
root 32069 1 0 16:54 ? 00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf - 写入开机启动项
[root@yo57 ~]# vi /etc/rc.local #!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local ulimit -SHn 51200
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
/usr/local/nginx/sbin/nginx
/etc/init.d/php_fpm start
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf - 服务器端
[root@10
local
]
# tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz[root@10
local
]
# cd sersync2.5.4_64[root@10 sersync2.5.4_64]
# lsconfxml.xml sersync2[root@10 sersync2.5.4_64]
# vi confxml.xml修改这一段即可
<localpath
watch
=
"/Data/code/adserver"
>
<remote ip=
"192.168.0.27"
name=
"yowebtongbu"
/>
<!--<remote ip=
"192.168.8.39"
name=
"tongbu"
/>-->
<!--<remote ip=
"192.168.8.40"
name=
"tongbu"
/>-->
<
/localpath
>进行一次完整同步
[root@10 sersync2.5.4_64]# ./sersync2 -r写入脚本并放入开机启动项
[root@10 sersync2.5.4_64]
# cat /usr/local/sbin/sersync.sh#!/bin/bashPATH=
/bin
:
/sbin
:
/usr/bin
:
/usr/sbin
:
/usr/local/bin
:
/usr/local/sbin
:~
/binexport
PATHSDATH=
"/usr/local/sersync2.5.4_64"SSTART=
"./sersync2 -r -d"SPID=`
ps
-ef|
grep
'sersync2'
|
grep
-
v
'grep'
|
awk
'{print $2}'
`function_start(){
echo
-en
"\033[32;49;1mStarting sersync2......\n"
echo
-en
"\033[39;49;0m"
if
[ -t ${SPID} ];
then
cd
${SDATH}
${SSTART} >
/dev/null
2>&1
printf
"Serync2 is the successful start!\n"
else
printf
"Sersync2 is runing!\n"
exit
1
fi}function_stop(){
echo
-en
"\033[32;49;1mStoping sersync2......\n"
echo
-en
"\033[39;49;0m"
if
[ -t ${SPID} ];
then
printf
"Sersync2 program is not runing!\n"
else
kill
${SPID}
printf
"Sersync2 program is stoped\n"
fi}function_restart(){
echo
-en
"\033[32;49;1mRestart sersync2......\n"
echo
-en
"\033[39;49;0m"
if
[ -t ${SPID} ];
then
cd
${SDATH}
${SSTART} >
/dev/null
2>&1
else
kill
${SPID}
sleep
1
cd
${SDATH}
${SSTART} >
/dev/null
2>&1
fi
printf
"Sersync2 is the successful restart!\n"}function_kill(){
killall sersync2}function_status(){
if
!
ps
-ef|
grep
'sersync2'
|
grep
-
v
'grep'
>
/dev/null
2>&1
then
printf
"Sersync2 is down!!!\n"
else
printf
"Sersync2 is running now!\n"
fi}if
[
"$1"
=
"start"
];
then
function_startelif
[
"$1"
=
"stop"
];
then
function_stopelif
[
"$1"
=
"restart"
];
then
function_restartelif
[
"$1"
=
"kill"
];
then
function_killelif
[
"$1"
=
"status"
];
then
function_statuselse
echo
-en
"\033[32;49;1m Usage: sersync2 {start|stop|restart|kill|status}\n"
echo
-en
"\033[39;49;0m"fi
[root@10 sersync2.5.4_64]
# vi /etc/rc.local#!/bin/sh## This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you don't# want to do the full Sys V style init stuff.touch
/var/lock/subsys/local#/etc/init.d/lemp start/usr/local/nginx/sbin/nginx/etc/init
.d
/php_fpm
start/usr/local/zabbix/sbin/zabbix_agentd/usr/local/sbin/sersync
.sh start
整个实现就这么简单,以后主服务器上面/Data/code/adserver目录下有新建、删除、修改文件或文件夹(包括下层递归)的的数据会自动推送到下面的各个服务端对应目录下,如果临时不需要该功能,kill掉服务端即可,操作完以后在手动开启服务端(此时客户端不用动)
Linux文件实时同步,可实现一对多的更多相关文章
- linux文件实时同步
参考博客:https://www.cnblogs.com/MacoLee/p/5633650.html 一.文件同步很简单 服务端:被动的接收传输过来的数据 客户端:主动提供数据给服务端 安装思路:服 ...
- linux下两台服务器文件实时同步方案设计和实现
inux下两台服务器文件实时同步方案设计和实现 假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器 有目录 /opt/test/ 192.168.0.2 目标服务器 有目录 /o ...
- Linux服务器间文件实时同步的实现
使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...
- (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步
Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...
- rsync+inotify 实现服务器之间目录文件实时同步(转)
软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...
- rsync+inotify-tools文件实时同步
rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
- eclipse 远程文件实时同步,eclipse远程部署插件
[转自] http://zhwj184.iteye.com/blog/1842730 eclipse 远程文件实时同步,eclipse远程部署插件 github地址:https://github.co ...
- Centos 6.5 rsync+inotify 两台服务器文件实时同步
rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...
随机推荐
- eclipse中运行 main 方法报错,找不到类
eclipse (maven 项目)中运行 main 方法报错,找不到类 ** 发现:在 eclipse中的 "Marker" 控制面板中 ,发现问题所在 只要删除 maven 仓 ...
- [leetcode sort]147. Insertion Sort List
Sort a linked list using insertion sort. 利用插入排序对一个链表进行排序 思路和数组中的插入排序一样,不过每次都要从链表头部找一个合适的位置,而不是像数组一样可 ...
- Highmaps网页图表教程之Highmaps第一个实例与图表构成
Highmaps网页图表教程之Highmaps第一个实例与图表构成 Highmaps第一个实例 下面我们来实现本教程的第一个Highmaps实例. [实例1-1:hellomap]下面来制作一个中国地 ...
- map赋值前要先初始化:assignment to entry in nil map
注意这种map的嵌套的形式,make只初始化了map[string]T部分(T为map[int]int),所以下面的赋值会出现错误: test := make(map[string]map[int]i ...
- leetcode 算法 Excel表列序号 python实现
这道题给我感觉就像一个26进制数一样. A 就是1 B是2 .... Z 是26 如果AB 两位,那就是 1 * 26 + 2 就是A 的数值*26 + B的数值 如果是MNP 三位数 那就 ...
- 什么是DHTML?
DHTML是近年来网络发展进程中最振奋人心也最具实用性的创新之一.它是一种通过各种技术的综合发展而得以实现的概念(当然,不同的浏览器,实现的程度也不同),这些技术包括Javascript, VBScr ...
- 最大子段和问题Java实现
最大子段和问题 一.问题描述 给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大. 例如(-2,11,-4,13,-5,2)的最大子段和为 ...
- jsoncpp 0.5 ARM移植
1.下载jsonapp 0.5 https://github.com/open-source-parsers/jsoncpp 2.编译 platform 没有包含 arm 平台,需要把源码提取出来,独 ...
- Git_多人协作
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin. 要查看远程库的信息,用git remote: $ git r ...
- [Linux] Ubuntu 18 LTS netplan 网络配置
Ubuntu 18 LTS netplan 网络配置 今天装完 Ubuntu 18 LTS,配置网络时发现Ubuntu 18LTS ifupdown has been replaced by netp ...