前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 服务器集群下同步目录文件 - rsync

Linux 服务器集群下同步目录文件 - rsync

作者头像
Parker
发布2020-07-21 14:44:14
2.9K0
发布2020-07-21 14:44:14
举报
文章被收录于专栏:在码圈

rsync 地址: https://www.samba.org/ftp/rsync/rsync.html

简介: remote synchronize是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。 rsync 是用于替代 rcp 的一个工具,rsync 使用所谓的 rsync算法 进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

rsync 基于inotify 开发

image-20191120205854626
image-20191120205854626

一、客户端 - 主动拉取文件(不实时)

1. 安装

两端安装

代码语言:javascript
复制
yum install -y rsync

2. 服务端配置

创建密码文件

代码语言:javascript
复制
vi /etc/rsync.password
或者
echo "hello:123" > /etc/rsync.password
代码语言:javascript
复制
# 账号:密码

hello:123

修改密码文件权限

代码语言:javascript
复制
chmod 600 /etc/rsync.password

修改配置文件

代码语言:javascript
复制
vi /etc/rsyncd.conf
代码语言:javascript
复制
uid = root
gid = root
use chroot = no
max connections = 200
hosts allow = *
timeout = 600
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
ignore errors
read only = false
list = false
host deny = 0.0.0.0/32
# rsyncd 权限用户
auth users = hello
secrets file = /etc/rsync.password
transfer logging = yes
#Module definitions
    
# 映射路径编号 拉取时需要 编号
[www]
path = /usr/local/openresty/nginx/html/

创建监控目录

代码语言:javascript
复制
mkdir -p /data/www

启动服务

代码语言:javascript
复制
rsync --daemon

3. 客户端配置

创建密码文件(客户端只需要密码)

代码语言:javascript
复制
vi /etc/rsync.password
或者
echo "123" > /etc/rsync.password

修改密码文件权限

代码语言:javascript
复制
chmod 600 /etc/rsync.password

客户端同步数据

代码语言:javascript
复制
# hello 为服务端用户名
# 192.0.0.110 为服务端地址
# www 为服务端 文件路径编号

rsync -zvaP --password-file=/etc/rsync.password hello@192.0.0.110::www /usr/local/openresty/nginx/html/

二、主服务器 - 主动推送至客户端(实时同步)

实时同步

rsync + inotify-tools 或 rsync+sersync

1. 安装

两端安装

代码语言:javascript
复制
yum install -y rsync

2. 客户端配置

创建密码文件

代码语言:javascript
复制
vi /etc/rsync.password
或者
echo "hello:123" > /etc/rsync.password
代码语言:javascript
复制
# 账号:密码

hello:123

修改密码文件权限

代码语言:javascript
复制
chmod 600 /etc/rsync.password

修改配置文件

代码语言:javascript
复制
vi /etc/rsyncd.conf
代码语言:javascript
复制
uid = root
gid = root
use chroot = no
max connections = 200
hosts allow = *
timeout = 600
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
ignore errors
read only = false
list = false
host deny = 0.0.0.0/32
# rsyncd 权限用户
auth users = hello
secrets file = /etc/rsync.password
transfer logging = yes
#Module definitions
    
# 映射路径编号 拉取时需要 编号
[www]
path = /usr/local/openresty/nginx/html/

启动服务

代码语言:javascript
复制
rsync --daemon

3. 服务端配置

sersync 的方式监控目录中变化的数据,通过rsync客户端推送给rsync daemon

在数据源创建密码文件

代码语言:javascript
复制
vi /etc/rsync.password 

密码 123

或 echo “123” > /etc/rsync.password

chmod 600  /etc/rsync.password

下载sersync 并解压

代码语言:javascript
复制
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 

cd GNU-Linux-x86/

mkdir -p  /opt/sersync/{logs,conf,bin}
cp sersync2 /opt/sersync/bin
cp confxml.xml /opt/sersync/conf/
cd /opt/sersync/conf/

编辑sersync 配置文件

代码语言:javascript
复制
vi confxml.xml 

xml中:
    <localpath watch="需要监控的目录" >
	<remote ip="IP地址" name=“客户端 路径编号 即 www ” />
   	... 可 remote 多个
    <auth start="true" users="客户端rsync用户名 即 hello" passwordfile="服务端密码文件路径" />

启动sersync

代码语言:javascript
复制
/opt/sersync/bin/sersync2 -d -r -o ./confxml.xml 

测试

代码语言:javascript
复制
cd /需要监控的目录
touch {1,2,3,4,5,6}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、客户端 - 主动拉取文件(不实时)
    • 1. 安装
      • 2. 服务端配置
        • 3. 客户端配置
        • 二、主服务器 - 主动推送至客户端(实时同步)
          • 1. 安装
            • 2. 客户端配置
              • 3. 服务端配置
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档