参考博文:
参考1:
参考2:
对 rsync命令解释的很详细
参考1比较详细,但是有点问题,参考2主服务器端比较详细 但是有小问题 把二者结合培正成功
注意:从主服务器拷贝到从服务器,千万别搞混了。
1、首先从主服务器A开始
需要确定你的系统是否支持inotify:
在安装inotify-tools前请先确认你的linux内核是否达到了2.6.13,并且在编译时开启了CONFIG_INOTIFY选项,也可以通过以下命令检测,如果出现以下输出,说明支持:
[root@localhost ~]# ls /proc/sys/fs/inotify/max_queued_events max_user_instances max_user_watches
下载并安装inotify-tools:
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz tar xvf inotify-tools-3.14.tar.gz cd inotify-tools-3.14 ./configure make;make install
接下来需要写两个SH脚本,inotify_init.sh和inotify_monitor.sh:
inotify_init.sh 用于第一次初始化,也就是运行一次完整的RSYNC同步.
vim /root/inotify_init.sh
内容如下:
#!/bin/shSRC=/主服务器A需要同步的目录/ #记得在最后面加/不然RYNC会自动增加一层目录 DES=backupIP=从服务器B的IPUSER=rsync#DST=/etc/rsyncd 远程rsync模块下的目录INWT=/usr/bin/inotifywait #注意路径 我的路径为:/usr/local/bin/inotifywait
RSYNC=/usr/bin/rsync $RSYNC -zahqt --password-file=/root/rsync.pwd $SRC $USER@$IP::$DES
保存退出.
设置可执行权限:
vi /root/inotify_monitor.sh
内容如下:
#!/bin/bash ###########################sync[0]='/主服务器需要同步的目录/,从服务器B的IP,backup,rsync' # localdir,host,rsync_module,auth_user INWT=/usr/bin/inotifywait #注意路径 我的路径为:/usr/local/bin/inotifywaitRSYNC=/usr/bin/rsyncPASS=/root/rsync.pwd###########################
for item in ${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' \--event CLOSE_WRITE,create,move $dir | while read date time file eventdo#echo $event'-'$filecase $event inMODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; thencmd="$RSYNC -zahqzt --exclude='*' --password-file=$PASS \--include=$file $dir $user@$host::$module "echo $cmd >> /var/log/rsyncd.log #写入日志文件$cmdfi;;MOVED_FROM|MOVED_FROM,ISDIR|DELETE,ISDIR)if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; thencmd="$RSYNC -zahqzt --password-file=$PASS --exclude=$file \$dir $user@$host::$module "echo $cmd >> /var/log/rsyncd.log$cmdfi;;esacdone &done加 执行权限:
chmod
+x
/root/inotify_monitor
.sh
设置RSYNC自动登录验证密码,认证文件只用加入密码即可
保存,退出
设置只有ROOT才可以查看的权限.
chmod
600
/root/rsync
.
pwd
2、以下是备从务器B的配置:
yum
install
rsync
-y
#安装rsync服务
配置RSNYD服务:
vi
/etc/rsyncd
.conf
uid = rootgid = rootuse chroot = nomax connections = 0 #没有连接限制pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.log [backup]path = /从服务器B本地用于存放备份的目录ignore errorsread only = nolist = falsehosts allow = 主服务器A的IPauth users = rsyncsecrets file = /etc/rsync.pwd
设置密码文件:
vim
/etc/rsync
.
pwd
#添加以下内容
rsync
:123456
chmod
600
/etc/rsync
.
pwd
#修改密码文件权限为600
注:当配置文件中参数strict modes为true时,rsync认证口令文件的权限一定是600,否则客户端将不能连接服务器。rsync认证口令文件中每一行指定一个 用户名:口令 对,格式为:username:passwd。
启动RSYNCD
vi
/etc/rc
.
local
添加以下内容,实时开机自动同步: /root/inotify_init.sh/root/inotify_monitor.sh
保存退出
运行
/root/inotify_init.sh/root/inotify_monitor.sh