当前位置: > CentOS > CentOS服务器 > 文件同步 >

rsync文件同步配置一例

时间:2014-09-05 23:28来源:linux.it.net.cn 作者:it
rsync文件同步配置,实现实时同步将A服务器的/home/test/目录下面的所有文件同步到B服务器的/tmp/data/目录下面,并且修改A的文件之后实时同步到B下面,删除B下面的文件A并不受到影响。

要求:
实现实时同步将A服务器的/home/test/目录下面的所有文件同步到B服务器的/tmp/data/目录下面
并且修改A的文件之后实时同步到B下面
删除B下面的文件A并不受到影响

首先,在A服务器检查系统是否支持inotify
[root@htdb ~]# ll /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Nov  2 16:25 max_queued_events
-rw-r--r-- 1 root root 0 Nov  2 16:25 max_user_instances
-rw-r--r-- 1 root root 0 Nov  2 16:25 max_user_watches
上面表示支持
下载和安装inotify-tools:
http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz(右键--目标另存为)

下面对两个脚本的编写
[root@htdb ~]# vi inotify_init.sh
 

复制代码代码如下:
#!/bin/sh
SRC=/home/test/  #记得在最后面加/不然RYNC会自动增加一层目录
 
DES=bbsatt
IP=192.168.55.34
USER=root
#DST=/tmp/data/ #远程rsync模块下的目录
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
 
$RSYNC -zahqt --password-file=/root/rsync.pwd $SRC $USER@$IP::$DES
 

之后chmod +x inotify_init.sh
接下来的是编辑 inotify_monitor.sh 脚本
[root@htdb ~]# vi inotify_monitor.sh
 

复制代码代码如下:
#!/bin/bash
 
###########################
sync[0]='/home/test/,192.168.55.34,bbsatt,root'
 
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
PASS=/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 event
do
#echo $event'-'$file
case $event in
MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)
if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; then
cmd="$RSYNC -zahqzt --password-file=$PASS --include=$file $dir $user@$host::$module"
echo $cmd >> a.log
$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"
echo $cmd >>a.log
$cmd
fi
;;
esac
done &
done

设置rsync自动登陆密码验证
vi /root/rsync.pwd
chmod 600 /root/rsync.pwd

之后在B服务器端
要安装rsync
http://www.samba.org/ftp/rsync/src-previews/rsync-3.0.6pre1.tar.gz (右键,目标另存为)

修改配置文件
vi /etc/rsyncd.conf
 

复制代码代码如下:
[root@htdb data]#more /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 400
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
 
[bbsatt]
path = /tmp/data/
ignore errors
read only = no
list = false
hosts allow = 192.168.55.15
auth users = root
secrets file = /etc/rsync.pas

vi /etc/rsync.pas
 

复制代码代码如下:
root:xxxx
chmod 600 /etc/rsync.pas
 

启动RSYNCD
rsync --daemon

回到主服务器A
vi /etc/rc.local
 

复制代码代码如下:
/root/inotify_init.sh
/root/inotify_monitor.sh
(责任编辑:IT)
------分隔线----------------------------