rsync文件同步配置一例

发布时间:2020-09-12编辑:脚本学堂
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 | linuxjishu/13830.html target=_blank class=infotextkey>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

您可能感兴趣的文章:
rsync与inotify实现数据同步的实例分享
linux rsync同步备份的安装与配置
Linux下架设rsync服务器的案例分享
rsync同步排除多个文件的方法
linux下rsync服务配置一例
使用rsync备份文件的方法浅析
有关rsync安装与配置的实例教程
有关rsync服务器端配置及客户端的使用
学习rsync服务端与客户端的配置
使用rsync的exclude选项
文件同步工具rsync配置
linux rsync同步设置指南