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/>kill
cat /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 远程文件同步+实验的主要内容,如果未能解决你的问题,请参考以下文章