仓酷云
标题:
带来一篇inotify-tools+rsync及时同步文件的设置办法
[打印本页]
作者:
老尸
时间:
2015-1-16 14:54
标题:
带来一篇inotify-tools+rsync及时同步文件的设置办法
对于开发环境的选择尽量要轻量级和高度可定制,航空母舰级别的工具往往会让你迷惑不解;
服务器A:
论坛的主服务器,运转DZX2论坛程序;服务器B:论坛从服务器,必要把X2的图片附件和MySQL数据及时从A主服务器及时同步到B服务器.MySQL同步设置会鄙人一编中说到.以下是用于及时同步两台服务器的图片。
由于一样平常的RSYNC必要CRON来按期运转SH剧本来完成同步,如许会带来一些成绩.好比用户从主服务器上传上一个图片,必要起码一分钟才干从从服务器显现出来.自从Linux2.6内核后,撑持了inotify机制,当某些文件或文件夹有改动时,收回响应的事务,如许,第三方程序只需定阅这些事务,就能够处置响应的操纵了.这时候,只需有文件被修正,就实行一次RSNYN,把修正的文件自动地上传到另外一台服务器上就能够了。
我利用的是google的inotify-tools,对照复杂.国际有功效很壮大的相似的程序,可是好庞大.别的必要注重的是:假如利用inotify-tools来完成及时同步,我们的主服务器--源文件服务器(也就是服务器A)完成是RSYNC的从服务器,我们的从服务器--方针同步的服务器(服务器B)才是RSYNC的主服务器.不要弄混了哦.
起首从主服务器A入手下手,必要断定你的体系是不是撑持inotify:
.
代码以下:
ll/proc/sys/fs/inotify
total0
-rw-r--r--1rootroot0Jan417:56max_queued_events
-rw-r--r--1rootroot0Jan417:56max_user_instances
-rw-r--r--1rootroot0Jan417:56max_user_watches
能输入如许的了局暗示撑持。
下载并安装inotify-tools:
.
代码以下:
wget--no-check-certificatehttp://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tarxzvfinotify-tools-3.14.tar.gz
cdinotify-tools-3.14
./configure--prefix=/usr
make
makeinstall
完成inotify-tools的安装。
接上去必要写两个SH剧本,inotify_init.sh和inotify_monitor.sh:
inotify_init.sh用于第一次初始化,也就是运转一次完全的RSYNC同步.
vi/root/inotify_init.sh
.
代码以下:
#!/bin/sh
SRC=/主服务器A必要同步的目次/#记得在最初面加/否则RYNC会主动增添一层目次
DES=bbsatt
IP=从服务器B的IP
USER=rsync
#DST=/etc/rsyncd远程rsync模块下的目次
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
$RSYNC-zahqt--password-file=/root/rsync.pwd$SRC$USER@$IP::$DES
保留加入.
设置可实行权限:
chmod+x/root/inotify_init.sh
接下是inotify_monitor.sh,用于定阅文件修正事务.注重,由于出格缘故原由,我在这里做的是增量备份+及时同步,也就是说,当主服务器A上的图片被删除是,从服务器B是不会删除图片的.
vi/root/inotify_monitor.sh
.
代码以下:
#!/bin/bash
##---------------------
sync[0]=/主服务器必要同步的目次/,从服务器B的IP,bbsatt,rsync#localdir,host,rsync_module,auth_user
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
PASS=/root/rsync.pwd
##---------------------
foritemin${sync[@]};do
dir=`echo$item|awk-F","{print$1}`
host=`echo$item|awk-F","{print$2}`
module=`echo$item|awk-F","{print$3}`
user=`echo$item|awk-F","{print$4}`
$INWT-mrq--timefmt%d/%m/%y%H:%M--format%T%w%f%e
--eventCLOSE_WRITE,create,move$dir|whilereaddatetimefileevent
do
#echo$event-$file
case$eventin
MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)
if["${file:-4}"!=4913]&&["${file:-1}"!=~];then
cmd="$RSYNC-zahqzt--exclude=*--password-file=$PASS
--include=$file$dir$user@$host::$module>/dev/null2>1&"
echo$cmd
$cmd
fi
MOVED_FROM|MOVED_FROM,ISDIR|DELETE,ISDIR)
if["${file:-4}"!=4913]&&["${file:-1}"!=~];then
cmd="$RSYNC-zahqzt--password-file=$PASS--exclude=$file
$dir$user@$host::$module>/dev/null2>1&"
echo$cmd
$cmd
fi
esac
done&
done
chmod+x/root/inotify_monitor.sh
设置RSYNC主动登录考证暗码
vi/root/rsync.pwd
xxxxxx
保留,加入
设置只要ROOT才能够检察的权限.
chmod0600/root/rsync.pwd
以下是备从务器B的设置:
安装RSYNC
yumrsync-y
#----设置RSNYD服务
vi/etc/rsyncd.conf
内容以下,必要把Apache修正成你运转网站的用户名,我的是由于本来利用apache,固然如今用Nginx,也一向没改用户名:
.
代码以下:
uid=apache
gid=apache
usechroot=no
maxconnections=4
pidfile=/var/run/rsyncd.pid
lockfile=/var/run/rsync.lock
logfile=/var/log/rsyncd.log
[bbsatt]
path=/从服务器B当地用于寄存备份的目次
ignoreerrors
readonly=no
list=false
hostsallow=主服务器A的IP
authusers=rsync
secretsfile=/etc/rsync.pas
vi/etc/rsync.pas
rsync:xxxxxx
chmod0600/etc/rsync.pas
启动RSYNCD
rsync--daemon
增加开机主动启动服务:
vi/etc/rc.local
rsync--daemon
回到主服务器A,
vi/etc/rc.local
增加以下内容,及时开机主动同步:
.
代码以下:
/root/inotify_init.sh
/root/inotify_monitor.sh
保留加入
运转:
.
代码以下:
/root/inotify_init.sh
/root/inotify_monitor.sh
如许就可以完成及时同步图片文件了,在主服务器A的同步目次下新建一个文件测试下吧。
使用gcc或g++进行编译,使用gdb进行调试;
作者:
山那边是海
时间:
2015-1-18 15:35
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
作者:
老尸
时间:
2015-1-25 15:19
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
作者:
金色的骷髅
时间:
2015-2-2 22:39
我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
作者:
若天明
时间:
2015-2-25 23:36
虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。
作者:
爱飞
时间:
2015-3-8 10:29
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
作者:
分手快乐
时间:
2015-3-15 22:23
我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
作者:
因胸联盟
时间:
2015-3-22 17:08
对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2