Linux-rsync+inotify-实时同步

实验环境

数据端      centos8    10.0.0.8      data-server

备份端      centos8    10.0.0.88    backup-server

1、备份服务器  backup-server 配置

安装rsync

[root@backup-server ~]#yum install rsync rsync-daemon -y

创建rsync配置文件

[root@backup-server ~]#touch /etc/rsyncd.conf    #有rsyncd.conf配置文件才能启动rsync服务端
[root@backup-server ~]#rsync --daemon            # --daemon  启动服务端

设置共享目录,编辑配置文件

[root@backup-server ~]#vim /etc/rsyncd.conf 
[root@backup-server ~]#cat /etc/rsyncd.conf 
[www]
path = /data/www/
read only = no  #默认yes只读, no指定可读写    

指定目录给nobody权限,默认用户以nobody访问此目录

[root@backup-server ~]#mkdir /data/www
[root@backup-server ~]#setfacl -m u:nobody:rwx /data/www/

2、数据端查看,配置data-server

监控工具

yum install -y inotify-tools rsync

访问测试

[root@data-server ~]#rsync rsync://10.0.0.88
www                 #查看到共项目了

  [root@data-server ~]#rsync 10.0.0.88::
  www

拷贝文件测试

数据端
[root@data-server ~]#rsync /etc/passwd 10.0.0.88::www
备份端
[root@backup-server ~]#ll /data/www/
total 4
-rw-r--r-- 1 nobody nobody 1320 May 28 23:29 passwd   #用户默认都映射为nobody

以独立服务方式运行rsync并实现验证功能

备份服务器backup-server

编辑 rsync 配置文件

复制代码
[root@backup-server ~]#vim /etc/rsyncd.conf 
[root@backup-server ~]#cat /etc/rsyncd.conf 
uid=root      #指定用户来访问共享目录,将之指定为生成的文件所有者,默认nobody
gid=root      #默认nobody
max connections = 0   #最大连接数不受限制
ignore errors         #错误跳过
exclude = lost+found/  #跳过某些目录
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no    #禁止方向解析

[www]
path = /data/www/
read only = no
auth users = rsyncuser    #默认anonymous可以访问rsync服务器
secrets file = /etc/rsync.pas  #用户密码存放文件
复制代码

 

root@backup-server ~]#echo "rsyncuser:123456" > /etc/rsnc.pas   #设置用户密码存放进文件
[root@backup-server ~]#chmod 600 /etc/rsnc.pas                  #不给其他用户查看 增删改
[root@backup-server ~]#ll /etc/rsnc.pas 
-rw------- 1 root root 17 May 28 23:43 /etc/rsync.pas
[root@backup-server ~]#rsync --daemon                #可加入/etc/rc.d/rc.local 实现开机启动
[root@backup-server ~]#systemctl start rsyncd        #服务来自rsync-daemon包

数据端data-server

  • 客户端配置密码文件 
  • 也可将密码赋值给环境变量RSYNC_PASSWORD变量,但不安全
  • export RSYNC_PASSWORD=123456
[root@data-server ~]#echo "123456" > /etc/rsync.pas
[root@data-server ~]#chmod 600 /etc/rsync.pas 

客户端测试同步数据

数据端
[root@data-server ~]#rsync /etc/sysctl.conf  --password-file=/etc/rsync.pas    rsync://rsyncuser@10.0.0.88/www
备份服务器
[root@backup-server /data/www]#ll
total 8
-rw-r--r-- 1 nobody nobody 1320 May 28 23:29 passwd
-rw-r--r-- 1 root   root    449 May 29 00:26 sysctl.conf

脚本监测目录变化,同步文件

运行脚本

复制代码
#!/bin/bash
#
#
SRC='/data/www/'     #注意最后的/
DEST='rsyncuser@10.0.0.88::www'
rpm -q rsync &> /dev/null || yum -y install rsync
inotifywait  -mrq  --exclude=".*\.swp" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATETIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
       rsync -az --delete  --password-file=/etc/rsync.pas $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done
复制代码

 

创建文件测试

 

 删除文件测试

 

posted @   goodbay说拜拜  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示