rsync 远程文件同步+实验

Posted kiroct

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync 远程文件同步+实验相关的知识,希望对你有一定的参考价值。

rsync理论部分

一款快速增量备份工具

Remote Sync,远程同步

支持本地复制,或者与其他SSH、rsync主机同步

rsync远程同步

rsync (Remote Sync, 远程同步)

是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

实验 配置rsync 下行同步

(就是客户端从服务器下载东西同步)
主机服务器:192.168.206.102
客户端:192.168.206.103
默认全部关闭firewalld、配置好yum了
```html/xml
首先是对服务器配置
yum -y install httpd rsync

vim /etc/rsyncd.conf #修改rsync的配置文件

uid = nobody
gid = nobody
use chroot = yes
address = 192.168.206.102 #监听服务器地址
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.206.0/24 #允许访问的网段
[wwwroot]
path = /var/www/html
comment = Document Root of www.lic.com
read only = yes
dont comperss = .gz .bz2 .tgz .zip .rar .z
auth users = kiki
secrets file = /etc/rsyncd_users.db


![1.png](https://s2.51cto.com/images/20220228/1646004076412340.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![2.png](https://s2.51cto.com/images/20220228/1646004078137743.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![3.png](https://s2.51cto.com/images/20220228/1646004081999834.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

```html/xml
然后访问用户账号文件
vim /etc/rsyncd_users.db   
kgc:123456

chmod 600 /etc/rsyncd_users.db

rsync --daemon    #开启rsync服务器
netstat -natp | grep rsync

cd /var/www/html
touch aaa.html bbb.html
ls

```html/xml
下面是给客户端的操作
yum -y install rsync

cd /opt
mkdir test_rsync
chmod 777 test_rsync


![6.png](https://s2.51cto.com/images/20220228/1646004126526045.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

```html/xml
下面是给客户端的操作
vim /etc/server.pass   #创建一个免交互的文件
123456                 #文本中输入的密码

chmod 600 /etc/server.pass   #只允许属主读写

rsync -az --delete --password-file=/etc/server.pass kgc@192.168.206.102::wwwroot /opt/test_rsync    #特别注意,此处的填写和服务端vim /etc/rsyncd.conf配置文件中的内容相关,不一致就会出错!!!

ls test_rsync

rsync+inotify实时同步(上行同步)

本环节是以上面的下行同步为基准的
(客户端装上inotify,客户端上传服务器端实现同步)
```html/xml
首先是配置服务器端口
vim /etc/rsyncd.conf
read only = no #得先关闭只读模式

kill cat /var/run/rsyncd.pid #杀掉进程
netstat -natp | grep rsync #查看进程是否被杀掉

rsync --daemon #重启进程
netstat -natp | grep rsync #查看进程是否被重启

chmod 777 /var/www/html #给共享的目录赋权


![1.png](https://s2.51cto.com/images/20220228/1646004318643368.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![1.1.png](https://s2.51cto.com/images/20220228/1646004320465812.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![2.png](https://s2.51cto.com/images/20220228/1646004325993405.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

```html/xml
下面是给客户端配置
#查看inotify 内核参数的值
cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 
#进去优化下inotify 内核参数
vim /etc/sysctl.conf 
............................
#参数的值大小根据查看到的来填写
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
............................
sysctl -p    #重载让配置文件生效

```html/xml
yum -y install gcc gcc-c++ #yum安装编译工具

#opt目录下使用winscp传入inotify-tools-3.14.tar.gz包
tar zxvf inotify-tools-3.14.tar.gz -C /opt

cd /opt/inotify-tools-3.14/

./configure #编译模块
make && make install #编译安装

![5.png](https://s2.51cto.com/images/20220228/1646004343801737.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![5.1.png](https://s2.51cto.com/images/20220228/1646004346770032.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![5.2.png](https://s2.51cto.com/images/20220228/1646004352864512.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
```html/xml
编辑自动监控同步脚本
vim /opt/inotify.sh

.....................................
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/test_rsync/"
#监控INOTIFY_CMD /opt/test_rsync/目录下持续的读写删操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/test_rsync/ kgc@192.168.206.102::wwwroot" 
#使用kgc用户,/etc/server.pass下的秘钥对。把/opt/test_rsync/目录下的内容同步压缩,传给服务器端206.102下的/var/www/html 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
        fi
done

..................................

cd /opt/
chmod +x inotify.sh 
./inotify.sh  &   **#给脚本赋权后运行,一定要后台运行!!!**

#去/opt/test/rsync那边,创建一个123.html的空白文件,删除原来的1.html文件
cd /opt/test_rsync
touch 123.html
rm  1.html

``html/xml<br/>验证,去服务器那边/var/www/html验证<br/>vim /etc/rsyncd.conf #首先改成root用户身份登录<br/>.....................<br/>uid = root<br/>gid = root<br/>................<br/>#修改完配置文件后重启下服务<br/>killcat /var/run/rsyncd.pid` #杀掉进程
rsync --daemon #开启rsync服务器
netstat -natp | grep rsync

![8.png](https://s2.51cto.com/images/20220228/1646004394339709.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![8.1.png](https://s2.51cto.com/images/20220228/1646004396832231.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

**验证结果:**
```html/xml
服务器:
cd /opt
ls
可以看到之前创建的123.html

然后我们在服务器端/var/www/html 创建一个abc.jsp 然后去客户端的/opt/test_rsync查看

以上是关于rsync 远程文件同步+实验的主要内容,如果未能解决你的问题,请参考以下文章

rsync远程同步一起来了解一下吧!

[sersync+rsync] 文件同步部署实战

rsync远程同步+inotify监控

rsync远程同步+inotify监控

rsync远程同步+inotify监控

rsync远程同步与inotify监控