RSYNC服务搭建

本文详细介绍了在Linux CentOS7环境下,如何配置和使用RSYNC服务进行文件同步,包括基于SSH的同步、基于RSYNC守护进程的同步,以及通过inotify实现的实时文件同步。此外,还涵盖了如何设置免密码登陆和使用Unison进行双向备份。实验环境为两台CentOS7虚拟机,分别作为服务器和客户端。
摘要由CSDN通过智能技术生成

RSYNC服务配置(linux centos 7)

文章目录

一、基于ssh的同步

二、基于rsync的同步

2.1服务器配置:

2.2客户端配置并测试同步:

三、免密码登陆

四、inotify实现实时同步

4.1、inotify+rsync

4.1.1、基于ssh的实时同步

4.2、inotify+unsion双向备份

4.2.1、服务器配置:

4.2.2、客户端配置与服务器同理:

五、安装配置完成后编写脚本并测试

5.1服务器写脚本:vim 2.sh

5.2客户端写脚本:vim 2.sh


 

实验环境

centso 7 

关闭防火墙与selinux

两台虚拟机,一台作为服务器,一台作为客户端(也可理解成同步备份服务器)

 

一、基于ssh的同步

yum -y install rsync       #服务器与客户端都需要安装rsync服务

rsync 命令使用

基本格式:rsync [选项] 原始位置 目标位置

-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
–delete:删除目标位置有而原始位置没有的文件
-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-p:保留文件的权限标记-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件

 

 

rsync -avz 同步源的一个账户@同步源IP:同步源目录 发起端目录   #下行同步

 

rsync -acz dal@192.168.154.187:/server /client

#同步服务器的/server目录里的文件到本地/client目录

 

rsync -avz 发起端目录 同步源的一个账户@同步源IP:同步源目录  #上行同步

rsync -avz /client/rsync dal@192.168.154.187:/server

#同步本地/client目录中的文件到服务器的/server目录

 

二、基于rsync的同步

2.1服务器配置:

vim /etc/rsync.conf         #生成配置文件

服务器编辑文件内容如下:

address = IP地址            #服务器配置IP地址
port = 873                       #监听端口号,可自定义
pid file = /var/run/rsyncd.pid    #指定pid文件写入位置
log file = /var/log/rsyncd.log    #指定log日志写入位置
#共享配置部分
[share]                           #共享名称
comment = soft            #描述信息显示给客户
path = /server/rsync    #共享目录位置
read only = yes            #yes是允许客户读文件,no是可读可写
dont compress = *.gz *.bz2 *.zip         #指定传输时不压缩的文件类型
auth users = dal       #指定的虚拟用户可连接,多个用户使用  , 逗号分开
secrets file = /etc/rsyncd_users.db     #指定rsync虚拟用户认证的文件,只有被auth users定义后可生效fake super = yes #无需rsync以root身份运行,允许接受数据

创建/etc/rsyncd_users.db文件

vin /etc/rsyncd_user.db

进入文件,格式:虚拟用户:密码

权限必须设置为600,否则报错:@ERROR: auth failed on module share
rsync error: error starting client-server protocol (code 5) at main.c(1649) [Receiver=3.1.2]

dal:123

rsync --daemon   #启动服务

kill rsync              #杀进程来停止服务

mkdir -p /server/rsync   #创建共享目录

2.2客户端配置并测试同步:

mkdir /client/rsync        #客户端配置创建/client/rsync目录

rsync -avz dal@192.168.154.187::share /client/rsync  #同步目录中的文件到本地,下行同步

touch /client/rsync/1.txt  #客户端创建测试文件

 

修改服务器的/etc/rsyncd.conf配置文件的上传权限,

read -noly = no

 

修改目录的上传权限

setfacl -m u:nobody:rwx /server/rsync

nobody 是rsync虚拟用户的映射用户

rsync -avz /client/rsync/ dal@192.168.154.187::share  #同步本地目录里文件到服务器share名称指定的共享目录

 

 

三、免密码登陆

基于ssh的免密码同步

ssh-keygen -t rsa #生成密钥对

ssh-copy-id server@服务器IP #公钥上传到服务器


此时同步不需要密码了

基于rsync的免密码同步,系统为rsync准备了变量
RSYNC_PASSWORD
我们只需要为这个变量赋值


echo $RSYNC_PASSWORD
查看这个变量,此时为空

export RSYNC_PASSWORD=123456 #给他赋值,为我们刚开始设置的rsync的密码
这样下行同步就不需要密码了

 

四、inotify实现实时同步

链接:https://pan.baidu.com/s/1bcHNEYwCoIiT1EwHSnUI-g 提取码:sync 
 

yum -y install gcc   #安装gcc

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  #安装inotifu-tools

tar -zxf inotify-tools-3.14.tar.gz   #解压缩包

./configure && make && make install*    #进入解压后目录bing'y

inotifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再出结果

选项:
-m:表示持续监控
-r:表示递归监控
-q:表示输出数据简化
-e:指定你要监控的哪些数据 例:create(创建),delete(删除),modify(修改),move(移动),多个命令用逗号隔开ctrl+c    #退出

 inotifywait -mrq -e modify,create,move,delete /server/rsync    #实时监控,输出结果

 inotifywatch -mrq -e modify,create,move,delete /server/rsync    #短期监控,任务完成后出结果

4.1、inotify+rsync
 

4.1.1、基于ssh的实时同步


利用inotify有输出这一特性可以进行与脚本的配合,实时监控数据的增删,进行同步
**先进行免密认证
然后在服务器端写脚本
vim 1.sh

#!/bin/bash
a="/usr/local/bin/inotifywait -mrq -e create /var/www/html/"
b="/usr/bin/rsync -avz /server/rsync* 192.168.154.187:/client/rsync"
$a | while read directory event file
do 
	$b
done

 

4.2、inotify+unsion双向备份

4.2.1、服务器配置:

mkdri server1                         #服务器创建目录

yum -y install gcc*                  #安装gcc

ssh-keygen -t rsa                   #生成密钥对

ssh-copy-id 客户端IP             #服务器传给客户端

wget http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.1.tar.gz        #下载ocaml-3.10.3.tar.gz包

tar -zxf ocaml-3.10.3.tar.gz    #解压安装包

cd ocaml-3.10.3                     #进入ocaml-3.10.3

 

make world opt

make install

#编译安装

wget https://www.seas.upenn.edu/~bcpierce/unison/download/releases/unison-2.13.16/unison-2.13.16.tar.gz

#下载unison-2.13.16.tar.gz包

tar -zxf unison-2.13.16.tar.gz   #解压unison-2.13.16.tar.gz包

make UISTYLE=text THREADS=true STATIC=true

#编译安装

cp unison /usr/local/bin/         #拷贝启动路径

4.2.2、客户端配置与服务器同理:

mkdir server2                         #客户端创建目录

yum -y install gcc*                 #安装gcc

ssh-keygen -t rsa                   #生成密钥对

ssh-copy-id 客户端IP             #服务器传给客户端

wget http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.1.tar.gz        #下载ocaml-3.10.3.tar.gz包

tar -zxf ocaml-3.10.3.tar.gz    #解压安装包

cd ocaml-3.10.3                     #进入ocaml-3.10.3

 

make world opt

make install

#编译安装

wget https://www.seas.upenn.edu/~bcpierce/unison/download/releases/unison-2.13.16/unison-2.13.16.tar.gz

#下载unison-2.13.16.tar.gz包

tar -zxf unison-2.13.16.tar.gz   #解压unison-2.13.16.tar.gz包

make UISTYLE=text THREADS=true STATIC=true

#编译安装

cp unison /usr/local/bin/         #拷贝启动路径

 

五、安装配置完成后编写脚本并测试

5.1服务器写脚本:vim 2.sh
 

#!/bin/bash
a=“/usr/local/bin/inotifywait -mrq -e create,delete /server1”
b=“/usr/local/bin/unison -batch /server1 ssh://客户端IP//server2”
$a | while read directory event file
do
	$b
done

 

5.2客户端写脚本:vim 2.sh

#!/bin/bash
a="/usr/local/bin/inotifywait -mrq -e create,delete /server2/rsync"
b="/usr/local/bin/unison -batch /server2/rsync ssh://服务器IP//server1/rsync"

$a | while read directory event file
do
        $b
done

 

bash 2.sh &       #分别把两端的脚本放到后台执行

在指定目录里创建文件,就可以看到服务器或者客户端的变化了

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值