文件同步技术总结

文件同步技术:
Linux->Linux: rsync+inotify
Window –> Linux: cwRsync + 定时任务
linux 使用NSF 映射远程磁盘目录
分布式中经常需要文件同步,综合来说性能是rsync更好,将文件同步到本地,NSF挂载安装和维护都比较简单

一.Linux
一.安装rsync
一、分别在两台在目标服务器安装Rsync服务端
1、关闭SELINUX
vi /etc/selinux/config #编辑防火墙配置文件
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
wq! #保存,退出
setenforce 0 #立即生效

2、开启防火墙tcp 873端口(Rsync默认端口)
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
:wq! #保存退出
/etc/init.d/iptables restart #最后重启防火墙使配置生效

3、安装Rsync服务端软件
yum install rsync xinetd #安装
vi /etc/xinetd.d/rsync #编辑配置文件,设置开机启动rsync
disable = no #修改为no
:wq! #保存退出
/etc/init.d/xinetd start #启动(CentOS中是以xinetd来管理Rsync服务的)

4、创建rsyncd.conf配置文件
vi /etc/rsyncd.conf #创建配置文件,添加以下代码
logfile = /etc/rsyncd.log
pidfile = /etc/rsyncd.pid
lock file = /etc/rsync.lock
secrets file = /etc/rsync.pass
motd file = /etc/rsyncd.Motd
[test]
path = /tmp/test
comment = test
uid = root
gid = root
port=873
use chroot = no
read only = no
list = no
max connections = 200
timeout = 600
auth users = root
hosts allow = 192.20.34.122


:wq!  #保存,退出
5、创建用户认证文件
注意目标端是  用户名:密码,源端是只用 密码,权限必须600
vi /etc/rsync.pass #配置文件,添加以下内容
root:123456
设置文件权限:
chmod 600 /etc/rsyncd.conf
启动rsync
/etc/init.d/xinetd start #启动
service xinetd stop #停止
service xinetd restart #重新启动
在源端:
vi /etc/passwd.txt  写入
123456
:wq!  保存退出
chmod 600 /etc/passwd.txt  #设置文件权限,只设置文件所有者具有读取、写入权限


6.运行指令:
rsync -avH /tmp/test [email protected]::test  --password-file=/etc/passwd.txt


二、安装配置inotify 服务
1、下载安装
# wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
# tar xzvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.13
# ./configure  --prefix=/usr/local/inotify
# make
# make install
2、创建inotify_rsync.sh脚本
# vi inotify_rsync.sh
#!/bin/sh
if [ ! -f /etc/ passwd.txt];then
        echo "123456">/etc/passwd.txt
        /bin/chmod 600 /etc/passwd.txt
fi
log=/usr/local/inotify/logs/rsync.log
src="/tmp/test"
host="目标IP"
module="test"

/usr/local/inotify/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $src |  while read DATE TIME DIR FILE; do
 
       FILECHANGE=${DIR}${FILE}
 
/usr/bin/rsync -avH --delete  --progress --password-file=/etc/ passwd.txt $src  rsyncuser@$host::$module &
echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log
done


赋予脚本可执行权限
#chmod +x   inotify_rsync.sh
运行
#./ inotify_rsync.sh &



/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e close_write,modify,delete,create,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件

/usr/bin/rsync -avH --delete  --progress --password-file
-a 存档模式
-H 保存硬连接
-delete 删除于多余文件
--password-file 密码文件

二.  Windows

window 底下需要安装cwrsync。

1. 下载cwRsync_5.5.0_x86_Free.zip。
2. 配置环境变量到 E:\cwRsync_5.5.0_x86_Free\bin
3. 创建配置文件配置rsync.conf 以及rsync.pass, 和linux的相同
4. 运行
Rsync -avP /cygdrive/e/cwRsync_5.5.0_x86_Free/etc/tmp/test      [email protected]::test/  --password-file=/cygdrive/e/cwRsync_5.5.0_x86_Free/etc/rsync.pass

5. 通过定时任务配置,多久运行

三.NSF映射远程磁盘目录
1、在两台机器上安装nsf 、 portmap

yum  install  nfs-utils  portmap

2. 修改源机器exports文件

目录 IP(rw,sync,no_root_squash) 如:
/usr/local/platform/file 192.20.34.144(rw,sync,no_root_squash)

.
service rpcbind start 
service nfs start

3.修改目标机器

service rpcbind start 
service nfs start

运行mount指令
mount -t nfs 192.20.34.122: /usr/local/platform/file  /usr/local/platform/file

猜你喜欢

转载自iamh.iteye.com/blog/2287046