rsync远程传输和inotify实时同步
Rsync概述
1.rsync的作用组要是用来备份,通过rsync传输文件或者目录类似于ftp,其加粗样式rsync监听端口:873
2.rsync其主要特点是 1).支持本地数据备份 2). 支持异地网络数据备份 3).支持增量备份 4).大文件或者小文件都可以使用rsync
3.rsync命令的常见选项
-a归档模式包含-rlptoD
-r递归模式,同步目录使用
-l同步符号连接
-v显示详细信息(过程)
-z传输进行压缩
-p保留权限
-t保持源文件时间标记
-g保留组标识
-o保留用户标识
-H保留硬链接文件
-A保留ACL属性
-D保留设备文件特殊文件使用
–delete:同步数据删除目标源文件数据
–checksum:校验同步数据
Rsync远程同步
源端到发起端同步实验
实验环境centos7
192.168.200.111yuan端
192.168.200.112 fa端
两端都需要关闭防火墙清空规则
systemctl stop firewalld
setenforce 0
查看是否有rsync软件
对主配置文件修改vim /etc/rsyncd.conf
#管理账户
uid = nobody
#管理组
gid = nobody
#是否禁锢在源目录
use chroot = yes
#rsync服务器监听的ip地址
address = 192.168.200.111
#rsync默认端口是873
port 873
#日志位置和服务的id号
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
#网络同步数据仅200段内所有的地址
hosts allow = 192.168.200.0/24
#共享模块的名字是wwwroot
[wwwroot]
#客户端同步/html里的所有数据
path=/var/www/html
#同步目录数据说明
comment = wwwroot
#同步数据是否只有读取权限
read only = no
#文件后缀不需要压缩
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
#同步验证账户haha
auth users = haha
#配置身份验证数据库
secrets file = /etc/rsyncd_users.db
以上就是主配置文件重要部分
下面我们在身份验证数据库添加用户
vim /etc/rsyncd_users.db
编辑用户内容要和配置里的一致
赋予权限
chmod 600 /etc/rsyncd_users.db
启动它+
rsync --daemon
查看是否存在看端口
netstat -lanpt |grep rsync
创建用来同步数据的目录
mkdir -p /var/www/html
cd到该目录下随便创建一个文件
现在到发起端进行同步
创建用来同步数据的文件
mkdir html
若要想免密传输,则需要在fa端设置一环境变量
export RSYNC_PASSWORD=123456
远程同步传输命令
rsync -avz --delete haha@192.168.200.111::wwwroot /root/html
实验结果yuan端创建的文件就到fa端
inotify实时同步
因为rsync需要每次用命令才能同步文件传输,这里需要用到inotify软件进行优化不需要手动同步数据
我们安装 inotify-tools-3.14.tar.gz包需要解压(源码安装方法)
必须到该目录下
cd inotify-tools-3.14/
./configure && make && make install
如果出现和我一样的情况说明环境缺少了c++
我们用yum安装一下就行了
yum -y install gcc-c++
然后配免密
yuan端
ssh-keygen
ssh-copy-id 192.168.200.112
实验下(不需要输入密码则免密OK)
编辑一个shell的脚本vim a.sh
#!/bin/bash
INW=“inotifywait -rmq -e MOVE,DELETE,CREATE,ATTRIB /var/www/html”
RSY=“rsync -azH --delete /var/www/html/ root@192.168.200.112:/root/html”
$INW | while read DIRECTORY EVENT FILE
do
$RSY
done
运行shell脚本后,yuan端在var/www/html里写得东西会全部同步到fa端上且不需要刷新
如果yuan端把东西删掉了,二fa端没有拿取文件的化也会消失的
fa端的任何操作都不会影响yuan端,比如发端删除了1 2 3 yuan端上面还是有1 2 3的。