仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 357|回复: 7
打印 上一主题 下一主题

[其他Linux] 带来一篇inotify-tools+rsync及时同步文件的设置办法

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:54:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于开发环境的选择尽量要轻量级和高度可定制,航空母舰级别的工具往往会让你迷惑不解;
服务器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:03 | 只看该作者
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
老尸 该用户已被删除
板凳
 楼主| 发表于 2015-1-25 15:19:35 | 只看该作者
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-2 22:39:21 | 只看该作者
我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
若天明 该用户已被删除
5#
发表于 2015-2-25 23:36:20 | 只看该作者
虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。
爱飞 该用户已被删除
6#
发表于 2015-3-8 10:29:12 | 只看该作者
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
分手快乐 该用户已被删除
7#
发表于 2015-3-15 22:23:57 | 只看该作者
我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
因胸联盟 该用户已被删除
8#
发表于 2015-3-22 17:08:29 | 只看该作者
对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 04:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表