欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rsync远程同步(实例!!!)

程序员文章站 2024-03-21 17:37:16
...

rsync 同步概述:

Remote Sync ----- 远程同步,支持本地复制,或者与其他SSH 、rsync主机同步,功能类似于scp,但是要比scp丰富。
官方网站:http://rsync.samba.org

rsync 同步特点:

1、可以镜像保存整个目录树和文件系统。

2、可以很容易做到保持原来文件的权限、时间、软硬链接等等,无须特殊权限即可安装。

3、快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

4、安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
5、支持匿名传输,以方便进行网站镜像。

rsync远程同步(实例!!!)


实例演示

第一步:配置rsync源服务器

rsync 是系统内核自带的,rpm - q rsync查看包 ,无需额外安装.如果是最小化安装的话,使用 yum安装一下即可

1.修改rsyncd.conf配置文件

[aaa@qq.com ~]# vim /etc/rsyncd.conf 
#7、8、9行,
uid = nobody
gid = nobody
use chroot = yes

#11行,
pid file = /var/run/rsyncd.pid

#16行,
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

#追加端口号
port 873

#追加日志文件路径
log file = /var/log/rsyncd.log

#追加授权访问地址段
hosts allow = 192.168.142.0/24

#添加共享模块
#模块名称
[wwwroot]

#源共享目录路径
path = /var/www/html

#网站说明
comment = www.bdqn.cn

#是否只读
read only = yes

#认证用户名
auth users = backuper

#认证用户密码文件路径
secrets file = /etc/rsyncd_users.db

2.创建认证用户密码文件

[aaa@qq.com ~]# vim /etc/rsyncd_users.db
#写入认证用户名与密码
backuper:abc123

3.授权仅属主的最大权限

[aaa@qq.com ~]# chmod 600 /etc/rsyncd_users.db

4.安装HTTP的服务

[aaa@qq.com ~]# yum install httpd -y

5.创建共享内容

[aaa@qq.com ~]# cd /var/www/html
[aaa@qq.com html]# echo "this is test web" > index.html

6.开启服务

[aaa@qq.com html]# rsync --daemon

7.查看服务状态

[aaa@qq.com html]# netstat -ntap | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      60268/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      60268/rsync         

8.关闭防火墙及安全功能

[aaa@qq.com html]# systemctl stop firewalld.service 
[aaa@qq.com html]# setenforce 0

第二步:配置客户发起端

1.关闭防火墙及安全功能

[aaa@qq.com ~]# systemctl stop firewalld.service 
[aaa@qq.com ~]# setenforce 0

2.安装http服务

[aaa@qq.com ~]# yum install httpd -y

3.客户发起端配置方式

#配置源方式一,用户名@主机地址::共享模块名
[aaa@qq.com ~]# rsync -avz aaa@qq.com::wwwroot /var/www/html
Password: #输入用户密码
receiving incremental file list
./
index.html

sent 83 bytes  received 172 bytes  72.86 bytes/sec
total size is 17  speedup is 0.07

#查看共享到的内容
[aaa@qq.com ~]# cat /var/www/html/index.html 
this is test web
#配置源方式二,rsync://用户名@主机地址/共享模块名
[aaa@qq.com ~]# rsync -avz rsync://aaa@qq.com/wwwroot /var/www/html
Password: 
receiving incremental file list
./
index.html

sent 83 bytes  received 172 bytes  56.67 bytes/sec
total size is 17  speedup is 0.07

#查看共享到的内容
[aaa@qq.com ~]# cat /var/www/html/index.html 
this is test web

4.创建免交互密码文件

[aaa@qq.com ~]# vim /etc/server.pass
abc123

[aaa@qq.com ~]# chmod 600 /etc/server.pass

#免交互配置源方式
[aaa@qq.com ~]# rsync -avz --delete --password-file=/etc/server.pass aaa@qq.com::wwwroot /var/www/html
receiving incremental file list
./
index.html

sent 83 bytes  received 172 bytes  510.00 bytes/sec
total size is 17  speedup is 0.07

#查看共享到的内容
[aaa@qq.com ~]# cat /var/www/html/index.html 
this is test web

配合inotify工具使用,实现rsync实时同步

配置rsync实时同步:

1.定期同步的不足:

执行备份的时间固定,延迟明细,实时性差;
当同步源长期不变化时,密集的定期任务是不必要的

2.实时同步的优点:

一旦同步源出现变化,立即启用备份;
只要同步源不变化,则不执行备份

关于 inotify:

Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。

从版本 2.6.13 开始提供;
可以监控文件系统的变化情况,并作出通知响应;
辅助软件:inotify-tools

rsync远程同步(实例!!!)

第一步: 配置rsync+inotify实时同步

1.配置rsync源服务器,修改rsyncd.conf配置文件

[aaa@qq.com ~]# vim /etc/rsyncd.conf 
#关闭只读
read only = no

2.调整客户端的inotify内核参数

[aaa@qq.com ~]# vim /etc/sysctl.conf
#监控队列大小
fs.inotify.max_queued_events = 16384

#最多监控实例数
fs.inotify.max_user_instances = 1024

#每个实例最多监控文件数
fs.inotify.max_user_watches = 1048576

3.生效内核参数

[aaa@qq.com ~]# sysctl -p
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

4.安装编译环境

[aaa@qq.com ~]# yum install -y gcc gcc-c++ make

5.远程获取资源包

[aaa@qq.com ~]# mount.cifs //192.168.142.1/inotify /mnt
[aaa@qq.com ~]# cd /mnt
[aaa@qq.com mnt]# ls
inotify-tools-3.14.tar.gz

6.解压资源包

[aaa@qq.com mnt]# tar zxvf inotify-tools-3.14.tar.gz -C /opt

7.配置inotify

[aaa@qq.com mnt]# cd /opt/inotify-tools-3.14/
[aaa@qq.com inotify-tools-3.14]# ./configure

8.编译安装

[aaa@qq.com inotify-tools-3.14]# make && make install

9.安装inotify-tools辅助工具

[aaa@qq.com inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/

#-m表示持续进行监控,-r表示递归监控所有子对象,-q表示简化输出信息,-e表示要监控哪些时间类型

**10.重开一个终端登录,增删文件 **

#创建文件
[aaa@qq.com html]# touch abc
[aaa@qq.com html]# ls
abc  index.html

#删除文件
[aaa@qq.com html]# rm -rf abc
[aaa@qq.com html]# ls
index.html

11.返回监控端,验证同步效果

[aaa@qq.com inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/
/var/www/html/ CREATE abc		#创建记录
/var/www/html/ DELETE abc		#删除记录

12.通过inotifywait触发rsync同步操作脚本

vim inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNCLCMD="rsyne -azH --delete --password-file=/etc/server.pass /var/www/htm1/ aaa@qq.com::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
#读取输出的监控记录
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
#若rsync为执行,则立即启动
$RSYNC_CMD
fi
done

13.源端于客户端都需要html目录最高授权

[aaa@qq.com www]# chmod 777 html/
[aaa@qq.com www]# chmod 777 html/

14.执行脚本

[aaa@qq.com opt]# source inotify.sh

15.重开终端,并切入共享目录

[aaa@qq.com opt]# cd /var/www/html/

16.写入新的内容

[aaa@qq.com html]# echo "this is my update" > test.txt

第二步:验证实时同步

**1.回到源端查看同步数据包**
[aaa@qq.com html]# ls
index.html  test.txt

2.查看同步数据

[aaa@qq.com html]# cat test.txt 
this is my update

谢谢阅读!!!

相关标签: rsync远程同步