Top

Linux-sync

使用inotify和rsync实现数据实时同步

我的环境是Centos7.4!2台服务器:Server、Server-2

192.168.5.10-server|192.168.5.11-server-2
↓简介
inotify,它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改、新增、删除等,并可以将相应的事件通知给应用程序. rsync,Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.

↓原文出自

inotify简介:https://www.cnblogs.com/mywebnumber/p/5826767.html
inotify+rsync同步:http://www.cnblogs.com/george-guo/p/7718515.html

服务端

1. 下载软件包.

[root@server-1 data]# yum install inotify-tools rsync -y

2. 创建用于同步的密码文件.

[root@server-1 data]# vim /etc/rsync.password
1
123456					#填写客户端的密码用于认证.

3. 编辑实时同步脚本并运行.

[root@server-1 data]# mkdir scripts/ && cd scripts/
[root@server-1 scripts]# vim rsync.sh
1
2
3
4
5
6
7
8
#!/bin/bash
#↓-m 监控,-r 递归,-q 安静模式,--format 格式 %w 目录名 %f 文件名,-e 事件 :创建、删除、移动、以可写方式打开的文件被关闭.
inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data/test/|
while read line;
do
#↓ -a 递归模式,-z 压缩,--password-file= 指定密码文件.
rsync -az --delete /data/test/ root@192.168.5.11::backup --password-file=/etc/rsync.password
done
[root@server-1 scripts]# bash rsync.sh &

客户端

1. 下载软件包.

[root@server-1 data]# yum install rsync -y

2. 编辑rsync配置文件.

↓创建一个模块(backup)用于服务端引用.
[root@server-2 test]# vim /etc/rsyncd.conf
1
2
3
4
5
[backup]
uid = root
gid = root
path = /data/test
read only = false

测试

↓服务端/data/test/下创建一个文件.
[root@server-1 scripts]# cd /data/test/ [root@server-1 test]# touch test && ls -l total 0 -rw-r--r-- 1 root root 0 May 7 06:58 test
↓客户端同步成功.
[root@server-2 test]# ls -l total 0 -rw-r--r-- 1 root root 0 May 7 06:58 test