rsync+inotify实时同步+双向同步

准备主机

192.168.1.247 (源) /home/appdata
192.168.1.248 (目的) /home/appdata
实现效果:
1.用rsync手动将192.168.1.247 的/home/appdata同步到192.168.1.248的/home/appdata目录。
2.用inotify组件实现文件的实时同步
3.实现两个服务器的双向实时同步

手动单向同步

目的主机操作(192.168.1.248

安装 rsync
yum -y install rsync
修改 rsync 配置文件
vim /etc/rsyncd.conf
transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
uid = nobody
gid = nobody
use chroot = yes
ignore errors
read only = no
[data]
comment = web content
path = /home   #配置data所指向的path
auth users = root    #允许的操作用户
secrets file = /etc/rsyncd.secrets   #配置客户端的用户密码
host allow = 192.168.1.247/255.255.255.255   #允许访问的主机
list = false
fake super = yes
修改用户密码文件
vim /etc/rsyncd.secrets
root:123456
修改密码文件权限
chmod 600 /etc/rsyncd.secret
创建备份文件夹修改权限和属组
mkdir /home/appdata
chmod -R 777 /home/appdata
chown -R nobody:nobody /home/appdata
启动后台 rsync 进程
rsync --daemon

源主机操作(192.168.1.247

安装 rsync
yum -y install rsync
添加rsync用户密码文件 ,与备份服务器的相对应,这个文件只需要写入密码,修改权限为600
echo "abcd@1234" >> /etc/rsync.pass && chmod 600 /etc/rsync.pass
命令同步 ,如果添加--delete参数可以删除多余得文件
/usr/bin/rsync -avz --delete --password-file=/etc/rsync.pass /home/appdata [email protected]::data
rsync 参数详解
-a 参数,相当于 -rlptgoD -r 是递归 -l 是链接文件,意思是拷贝链接文件; -p 表示保持文件原有权限;-t 保持文件原有时间; -g 保持文件原有用户组; -o 保持文件原有属主; -D 相当于块设备文件);
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息;
--delete 删除操作
--exclude 忽略文件或目录

inotify自动同步

在上面的基础上我们需要对源主机增加以下操作来完成自动同步
安装下载工具

yum -y install wget
yum -y install gcc gcc-c++

下载inotify安装包

wget --no-check-certificate https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

解压安装包并进入解压文件夹

tar -zxf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13/

安装inotify
./configure
make
make install
检查是否安装成功
inotifywait
No files specified to watch!表示成功了
编写inotify脚本调用rsync
#!/bin/bash
src=/home/xiongan
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file;
do
/usr/bin/rsync -avz --delete --password-file=/etc/rsync.pass /home/appdata [email protected]::data > /dev/null 2>&1
echo "${file} was rsynced" >>/var/log/rsync.log 2>&1
done
后台执行脚本
nohup bash inotify_back.sh &

双向同步

双向同步其实很简单,我们只需要逻辑上把他们角色上互相反转,重复上面的操作就可以啦

你可能感兴趣的:(MIS系统,linux,运维,服务器)