利用inotify和rsync服务实现数据实时同步( 三 )

例如:实现密码验证
[root@CentOS8 ~]# yum install rsync-daemon[root@CentOS8 ~]# systemctl enable rsyncd --now[root@CentOS8 ~]# cat /etc/rsyncd.confuid = rootgid = rootmax connections = 0ignore errorsexclude = lost+found/log file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidlock file = /var/run/rsyncd.lockreverse lookup = no[backup]path = /data/backup/comment = backup dirread only = noauth users = tomsecrets file = /etc/rsync.pas[root@CentOS8 ~]# systemctl restart rsyncd.service[root@CentOS8 ~]# mkdir /data/backup/ -p[root@CentOS8 ~]# echo "tom:redhat" > /etc/rsync.pas[root@CentOS8 ~]# chmod 600 /etc/rsync.pas客户端访问:[root@CentOS8 ~]# rsync /etc/fstabtom@10.0.0.12::backupPassword:#交互输入tom的密码或者:[root@CentOS8 ~]# rsync /root/anaconda-ks.cfgrsync://tom@10.0.0.12/backupPassword:注意:不指定用户名默认就是当前系统的用户可以提前建立一个文件 , 将密码放在文件中
#非交互式查看共享目录[root@CentOS8 ~]# echo "redhat" >/etc/rsync.pas #客户端存放rsync的密码信息[root@CentOS8 ~]# chmod 600 /etc/rsync.pas #密码文件权限修改(必须 , 不然会报错)测试:[root@CentOS8 ~]# rsync --password-file=/etc/rsync.pas /root/file111rsync://tom@10.0.0.12/backupinotify+rsync+shell 脚本实现实时数据同步工作原理:

  • 要利用监控服务(inotify) , 监控同步数据服务器目录中信息的变化
  • 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
范例:inotify+rsync+shell 脚本实现实时数据同步
数据服务器:存放数据信息的服务器 10.0.0.11备份服务器:存放备份信息的服务器 10.0.0.12思路:利用inotidy监控事件是否发生变化,
[root@CentOS8 ~]# cat inotify_rsync.sh#!/bin/bashSRC="https://www.huyubaike.com/data/www/"#需要同步的目录文件 #注意最后的/DEST='tom@10.0.0.12::backup' #同步到备份数据器的指定位置rpm -q rsync &> /dev/null || yum -y install rsync #如果不存在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 DATE TIME DIR FILE; doFILEPATH=${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.logdone#通过DATETIME DIR FILE 这四个变量记录发生的变化 日期 事件 目录 文件【利用inotify和rsync服务实现数据实时同步】

推荐阅读