您的位置:首页 > 运维架构 > Linux

Centos6.5下的rsync+inotify远程实时文件同步服务搭建

2015-11-22 01:28 766 查看
以下为本人的安装过程

一、服务器端的安装
1.系统环境
服务端:centos6.5出厂环境(系统安装时为默认设置),IP:192.168.10.185
客户端:远程登录终端xshell5或securecrt(具体安装和使用方法,请自行查询),
IP:192.168.10.186

2.安装Rsync
通过终端(此处是xshell)登录系统192.168.10.185
rpm -qa|grep rsync* //查看当前是否已安装此服务,若有并感觉版本低的话,可以执行
rpm -e rsync* //卸载该软件

安装方式一:
执行yum -y install rsync
rpm -qa|grep rsync* //执行此语句查看已安装软件的信息
rsync.x86_64 0:3.0.6-12.el6
安装方式二:
到rsync官网下载源码包: http://rsync.samba.org/ 包名:rsync-3.1.1.tar.gz
yum -y install lrzsz //在命令行输入rz:上传刚刚下载的源码包到服务端
tar zxf rsync-3.1.1.tar.gz

cd rsync-3.1.1

./configure --prefix=/app

make

make install

启动文件位置:/app/bin/rsync

3.创建rsync 配置文件(默认是没有的)
在/etc/下分别创建
rsyncd.conf(服务配置文件)
rsyncd.passwd(存放客户端登录rsync服务的账号和密码)
rsyncd.motd(登录服务时的欢迎或说明信息,自由指定,可选)
##########################################################################################
vim /etc/rsyncd.conf //创建服务配置文件
uid = root
gid = root
port = 873 //指定访问的端口,默认是873,也可自己指定
hosts allow = 客户端IP地址 //允许访问的客户端IP
#hosts deny =
user chroot = yes
#max connections =
#timeout =
[backup]
path = /bak //注意,此目录如果没有,不要忘记创建哦!
comment = rsync files
ignore erros
read only = no
list = yes
auth usres = rsync //同步验证时用的账号,若没有则是匿名同步,client同步时没有用户名也能同步。
secrets file = /etc/rsync.passwd //认证文件存放的地方
#########################################################################
vim /etc/rsync.passwd //创建认证文件
rsync:rsync2015 //必须是这种格式,rsync账号为服务配置文件中的auth users,它俩一致就行,密码自定。
chmod 600 /etc/rsyncd.passwd //更改文件权限为所有者只读
chown root.root /etc/rsync.passwd //修改文件属性

4.防火墙设置(此部分根据实际情况而定)
(1)centos 6下的防火墙端口开放
iptables -A INPUT -p tcp --dport 873 -j ACCEPT //服务器本地可以访问,可用来先测试
iptables -I INPUT -p tcp --dport 873 -j ACCEPT //客户端可以访问
(2)centos7下的防火墙端口开放

添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

5.启动rsync服务
/usr/bin/rsync --daemon
注意将服务添加到启动服务文件中,使其随系统启动而启动,方法:
echo '/usr/bin/rsync --daemon' >>/etc/rc.local

6.查看服务是否启动
[root@localhost ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 28055 root 3u IPv4 81353 0t0 TCP *:rsync (LISTEN)
rsync 28055 root 5u IPv6 81354 0t0 TCP *:rsync (LISTEN)
此情况为服务已开启

二、客户端的安装
和服务端安装一样,执行yum -y install rsync
创建认证密码文件:vim /etc/secret.passwd(此项可选,路径随便,用法请见第三大部分2中的蓝色部分)

安装inotify-tools-3.14.tar监控文件变化工具
tar zxf inotify-tools-3.14.tar

cd inotify-tools-3.14

./configure --prefix=/app/inotify/bin/inotifywait
make && make install




三、实例(本实验服务端IP:192.168.10.185,客户端IP:192.168.10.186)
1.登录客户端,把服务器上的/bak文件夹中的内容备份到客户端的/imagefile中:
/app/bin/rsync -rvlHpogDtS --delete --progress \ rsync@192.168.10.185::bak /imagefile

2.登录客户端,把客户端/imagefile文件夹中的内容备份到服务器/bak中:

/app/bin/rsync -rvlHpogDtS --delete --progress /imagefile rsync@192.168.10.185::backup --password-file=/etc/secret.passwd
[b](可以自动提供密码验证)[/b]
chmod 600 /etc/rsyncd.passwd //更改文件权限为所有者只读chown root.root /etc/rsyncd.passwd //修改文件属性[b][b]* 客户端的password-file文件secret.passwd里只写对应服务端的“密码”[/b][/b]

[b]vim rsync+inotify.sh[/b]
#!/bin/bash
#首次运行此脚本,先执行上述命令语句相当于手动把现有的文件同步
/usr/bin/rsync -rvlHpogDtS --delete --progress /imagefile rsync@192.168..10.185::backup --password-file=/etc/rsyncd.passwd

#下述命令语句为监视到文件或目录有变化时执行同步操作

src=/imagefile
/app/inotify/bin/inotifywait -rmq -e create,modify,move,delete,attrib $src|while read event
do
/usr/bin/rsync -rvlHpogDtS --delete --progress /imagefile rsync@192.168.10.185::backup --password-file=/etc/rsyncd.passwd
done

* --delete 视情况谨慎使用!加上--delete选项则保持两边文件一致,
不加--delete则目标文件目录只"接收"源文件目录的文件而不随着源文件目录文件删除而删除

* 客户端的password-file文件secret.passwd里只写对应服务端的“密码”
*执行inotify+rsync.sh脚本,nohup /bin/bash /app/inotify+rsync.sh >/tmp/rsyncd.log &
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息