rsync+inotify实时同步

该博客介绍了Linux主机文件同步的方法,包括手动单向同步,涉及目的主机和源主机的操作,以及inotify自动同步。详细说明了inotify自动同步的步骤,如安装下载工具、下载安装包、解压安装、检查安装情况、编写脚本调用rsync并后台执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备主机

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 root@192.168.1.248::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 root@192.168.1.248::data > /dev/null 2>&1
echo "${file} was rsynced" >>/var/log/rsync.log 2>&1
done
后台执行脚本
nohup bash inotify_back.sh &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值