rsync服务搭建

提示:如有侵权,请联系删除


提示:以下是本篇文章正文内容,下面案例可供参考

一、rsync是什么?

rsync是类unix系统下的数据镜像备份工具。一款支持快速完全备份和增量备份的工具,支持本地复制,远程同步等,类似于scp命令;rsync 命令在同步文件之前要先登录目标主机进行用户身份认证,认证过后才能进行数据同步,身份认证方式取决于所使用的协议类型,rsync一般使用两种协议进行数据同步:ssh协议和rsync协议。

二、rsync基础实验演示

2.1ssh协议数据同步

实验环境:一台NFS服务器,一台rsync服务器
在两台服务器上分别创建目录(/filesrc、/filedst)

下行同步(下载)
格式:rsync -avz 服务器地址:/服务器目录/* /本地目录

rsync -avz root@192.168.88.10:/filesrc/* /filedst
	-a:归档模式,递归并保留对象属性
	-v:显示同步过程
	-z:在传输文件时进行压缩

上行同步(上传)
格式:rsync -avz /本地目录/* 服务器地址:/服务器目录

rsync -avz /filedst/*  root@192.168.88.10:/filesrc

注意:使用root用户进行实验可以,但生产环境中尽量使用单独创建的普通用户,减少权限溢出
创建用来做数据同步的用户,并给予用户对目录的相应权限,一般使用ACL设置权限

useradd zhangsan
passwd zhangsan
setfacl -m u:zhangsan:rwx /filesrc

拓展:若要实现免密码数据同步,只需要做好ssh密钥对登录即可

2.2rsync协议数据同步

实验环境:一台服务器,一台客户端
1.在两台服务器上分别创建目录(/filesrc、/filedst)
2.搭建rsync服务(仅需要在NFS服务器上搭建即可)
a.创建主配置文件(/etc/rsyncd.conf)

address = 192.168.88.10						#rsync服务绑定IP
	port 873								#默认服务端口873
	log file = /var/log/rsyncd.log			#日志文件位置
	pid file = /var/run/rsyncd.pid			#进程号文件位置
	[web]
		#共享名:用来连接是写在url上的,切记
		comment = web directory backup
		#共享描述话语
		path = /filesrc
		#实际共享目录
		read only = no	
		#是否仅允许读取
		dont compress = *.gz *.bz2	
		#哪些文件类型不进行压缩
		auth users = user1
		#登录用户名(非系统用户,需要自行创建,写入文件即可,不用useradd创建)
		secrets file = /etc/rsyncd_users.db
		#认证所需账户密码文件(需自行创建-同上)

b.创建认证所需账户密码文件

vim /etc/rsyncd_users.db
user1:123456
chmod 600 /etc/rsyncd_users.db	#必须修改权限,否则登录报错

c.启动服务

rsync --daemon
netstat -antp | grep :873 #查看是否启动成功

d.设置映射用户对共享目录有权限(r)

setfacl -m u:nobody:rwx /filesrc 

注意:关闭服务可使用kill命令,但偶尔会造成服务被结束,但进程号配置文件不被删除的问题,若遇到此类问题可自己手动删除,再启动则正常(建议自己写一个rsync的服务管理脚本)

下行同步(下载
格式:rsync -avz rsync://用户名@服务器地址/共享模块名 /本地目录

rsync -avz rsync://user1@192.168.88.10/web /filedst

拓展:–delete:删除本地比服务器多出来的文件(源地址没有,目标地址有的删掉)

rsync -avz --delete rsync://user1@192.168.88.10/web /filedst

上行同步(上传)
格式:rsync -avz /本地目录/* rsync://用户名@服务器地址/共享模块名

rsync -avz /filedst/* rsync://user1@192.168.88.10/web

拓展:rsync协议的免密码可以借助一个环境变量实现(/etc/profile)

export RSYNC_PASSWORD=123456

三、配置rsync+inotify实时同步

1.inotify部署安装

#yum -y install gcc*
#tar -xf inotify-tools-3.14.tar.gz
#cd inotify-tools-3.14
#./configure && make && make install 

2.利用rsync+inotifywait结合脚本实现单向实时同步

#!/bin/bash
a="inotifywait -mrq -e modify,attrib,create,move,delete /filesrc"
b="rsync -avz /filesrc/* root@192.168.88.20:/filedst"
$a | while read directory event file		#while判断是否接收到监控记录
do
	$b
done

注:用户登录时要求免密码验证,可以在 2.2rsync协议数据同步的基础上借助环境变量实现

3.实验结果验证

在服务器端创建,删除文件,查看备份端是否正常

四、配置unison+inotify实现双向实时同步

1.环境要求

1)准备好同步所需的两个目录
2)如若用root来实现登录的话,生成密钥对,以便于免密码验证
3)准备好inotify和unison的软件包

2.安装步骤

1)先安装inotify

tar -xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure && make && make install

2)再安装ocaml

tar -xf ocaml-3.10.1.tar.gz
cd ocaml-3.10.1
./configure
make world opt
make install

3)安装unison

tar -xf unison-2.13.16.tar.gz
cd unison-2.13.16
make UISTYLE=text THREADS=true STATIC=true	
cp unison /usr/local/bin/

注意:同样的操作在服务器端也做一遍。

3.配置脚本

注:双向自动同步,监控目录和数据同步时,源目录不能使用*通配符传输,否则会变成死循环。

filesrc端:

#!/bin/bash
a="inotifywait -mrq -e modify,attrib,create,move,delete /filesrc"
b="/usr/local/bin/unison -batch /filesrc/ ssh://192.168.88.20//filedst/" 
$a | while read directory event file
do
	$b
done

filedst端:

#!/bin/bash
a="inotifywait -mrq -e modify,attrib,create,move,delete /filedst"
b="/usr/local/bin/unison -batch /filedst/ ssh://192.168.88.10//filesrc/"
$a | while read directory event file
do
	$b
done

4.测试

将两个脚本放入后台执行
分别在两个主机上创建文件查看是否可以实现双向实时同步(可能会有延迟)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值