安装部署Rsync同步服务器


一、rsync原理

rsync是linux下同步文件的一个高效算法,用于同步两处计算机的文件和目录,并适当利用查询文件中的不同快以减少数据传输。rsync主要特点就是增量传输:
假如我们现在需要同步两个文件保持一致,并且只想传送不同的部分,那么我们就需要对比两边的文件做diff,但是这是在两个不同的机器上,无法做diff。如果我们做diff,就要把一个文件传到另外一台机器上,但是这样以来,我们就传了整个文件,这就我们的初衷相背了。于是我们就像一个办法,让它们两边的文件见不到面,但还能知道它们有什么不同。这就是rsync的算法

二、安装步骤

准备环境:
rsync服务端:192.168.242.176
rsync客户端:192.168.242.177

1.服务端操作

  • 检查是否安装xinetd、rsync:

在这里插入图片描述

  • 修改xinetd配置文件 vim /etc/xinetd.d/rsync(centos7默认没有)
    在这里插入图片描述
service rsync
{
        disable              = no 
        flags                  = IPv6
        socket_type      = stream
        wait                   = no
        user                   = root
        server                = /usr/bin/rsync
        server_args       = --daemon
        log_on_failure  += USERID
}
  • 修改配置文件(vim /etc/rsyncd.conf)

在这里插入图片描述

[test]
        path = /test                 --本地共享目录
        auth user = user1            --指定用户同步
        secrets file = /etc/rsyncd.secrets      --指定保存用户密码文件

  • 启动服务
systemctl restart xinetd
  • 创建用户密码文件(与模块中路径一样)
vim /etc/rsyncd.secrets

在这里插入图片描述

  • 设置安全用户文件的权限,不能被其他人查看
chmod 600 /etc/rsyncd.secrets
  • 创建共享目录(与模块中定义的路径一样!!!)
mkdir /test
touch /test/file{1..10}

在这里插入图片描述

2.客户机

  • 测试检验文件是否存在
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、inotify+rsync架构实现实时同步

环境说明:
要求node1主机上面的/node1目录发生新的创建,移动,以及文件属性信息发生改变,自动同步到node2主机的/node2目录

node1主机:客户机–>192.168.242.177
node2主机:服务端–>192.168.242.176

在这里插入图片描述

  • 解压
    在这里插入图片描述
  • 编译
./configure    
make&&make install

在这里插入图片描述

  • 编写脚本vim /tmp/1.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,create,move,delete,attrib /node1 |while read events
        do
        rsync -a --delete /node1 192.168.242.176::test
        echo "`date +'%F %T'` 出现事件 $events" >>/tmp/rsync.log 2>&1
        done

在这里插入图片描述

  • 新建node1目录并创建5个文件
    在这里插入图片描述
    在这里插入图片描述
  • 对服务端修改配置文件vim /etc/rsync.conf
[test]
        path = /node2/
        comment=rsync

在这里插入图片描述

  • 新建node2目录(没有东西)
    在这里插入图片描述
  • 测试(在客户机[node1]端执行脚本并且放在后台执行,并且创建文件,再看tmp下面是否有创建文件后脚本执行报的日志信息)
    在这里插入图片描述
  • 在服务端(node2)检查验证(客户机创建的文件实时同步过来到服务端上面)
    在这里插入图片描述

三、inotify+sersync实现多台服务器实时同步

inotify+rsync在同步的时候只同步发生变化的文件和目录(对目录数量不大),但是对于数据量大的而言,某些文件会被遗落。
环境部署:
sersync服务端–>192.168.242.178
rsync服务端–>192.168.242.176
rsync客户机–>192.168.242.177

  • 部署rsync服务(两端都需要) vim /etc/rsyncd.conf
    在这里插入图片描述
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.Motd
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
uid = root
gid = root
read only = false 
secrets file = /etc/rsyncd.secrets 
auth user = wlx 
transfer logging=no 
list=no    
use chroot = no
read only=no

---同步模块 
[bbs]
comment = bbs by www 
path = /var/www/html/bbs                       
[blog]
comment = blog by www 
path = /var/www/html/blog
  • 创建待同步的目录
mkdir -p /var/www/html/bbs /var/www/html/blog
tree /var/www/html

在这里插入图片描述

  • 查询相关权限认证(若没有权限需配置!!!)
cat /etc/rsyncd.password
ll /etc/rsyncd.password

在这里插入图片描述

  • 启动raync进程
rsync --daemon
ps -ef|grep rsync
netstat -tunpl|grep :873

在这里插入图片描述

  • 配置开机自启动
echo "/usr/bin/rsync --daemon">>/etc/rc.local
grep demoan /etc/rc.local
  • sersync服务端配置rsync权限—>192.168.242.178
    在这里插入图片描述
  • 分别创建待同步数据
touch /var/www/html/bbs/bbs.log /var/www/html/blog/blog.log
tree /var/www/html/

在这里插入图片描述

  • 执行同步命令(需要关闭防火墙)
rsync -avz /var/www/html/bbs/ wlx@192.168.242.176::bbs/ --password-file=/etc/rsyncd.secrets
rsync -avz /var/www/html/bbs/ wlx@192.168.242.177::bbs/ --password-file=/etc/rsyncd.secrets

rsync -avz /var/www/html/blog/ wlx@192.168.242.176::blog/ --password-file=/etc/rsyncd.secrets
rsync -avz /var/www/html/blog/ wlx@192.168.242.177::blog/ --password-file=/etc/rsyncd.secrets

在这里插入图片描述
在这里插入图片描述

  • 同步完去两台rsync检验是否同步文件
    在这里插入图片描述
    在这里插入图片描述
  • 安装sersync软件
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 /usr/local/sersync

在这里插入图片描述

tree /usr/local/sersync/ 
├── confxml.xml
└── sersync2

规范sersync目录结构(非必须)

cd /usr/local/sersync/ && mkdir conf bin logs
mv confxml.xml ./conf/. && mv sersync2 ./bin/sersync

在这里插入图片描述

tree /usr/local/sersync
├── bin
│   └── sersync
├── conf
│   └── confxml.xml
└── logs
  • 备份配置文件
/bin/cp conf/confxml.xml conf/confxml.xml.luo.$(date +%F)   
  • 编辑配置文件
vim /usr/local/sersync/conf/confxml.xml

在这里插入图片描述

  • 开启sersync守护进程同步数据
echo 'export PATH=/usr/local/sersync/bin:$PATH'>>/etc/profile
tail -1 /etc/profile
source /etc/profile
which sersync

在这里插入图片描述

  • 启动sersync
sersync -r -d -o /usr/local/sersync/conf/confxml.xml

在这里插入图片描述
实验发现在多模块下只同步第一模块,其他模块路径不同步。解决办法就是将config文件中的模块分开放置

cp confxml.xml blog_confxml.xml
cp confxml.xml bbs_confxml.xml
mv confxml.xml ~

在这里插入图片描述

  • 测试
sersync –d –o /usr/local/serysnc/conf/confxml_bbs.xml
sersync –d –o /usr/local/serysnc/conf/confxml_blog.xml

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
设置自启 vim /etc/rc.local
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值