inotifywait监控文件夹内容变化,实时异地同步

1. 服务器规划

主机名IP描述
main172.16.32.3主服务器
backup172.16.32.4数据备份服务器

2. 实现效果演示

功能说明:
监视172.16.32.3服务器的/root/目录变化,将该目录下除“.”开头(隐藏文件)的文件同步到172.16.32.4服务器的/root/目录下,并将操作信息记录到172.16.32.3服务器的inotifywait.log文件中

inotifywait监控文件夹内容变化

3. 服务器初始化

3.1 主机名修改

hostnamectl set-hostname main && bash -- 172.16.32.3执行
hostnamectl set-hostname backup && bash -- 172.16.32.4执行

在这里插入图片描述

3.2 hosts配置

# 两个服务器都执行
echo '172.16.32.3 main
172.16.32.4 backup' >> /etc/hosts

在这里插入图片描述

3.3 免密认证配置

# 两个服务器都执行
# 证书生成
ssh-keygen
# 一直回车

# 证书拷贝到其他服务器
ssh-copy-id main
ssh-copy-id backup

在这里插入图片描述
在这里插入图片描述

3.4 inotify、rsync安装

yum install -y rsync inotify-tools

在这里插入图片描述

3.5 验证是否安装完成

inotifywait --help
rsync -h

在这里插入图片描述
在这里插入图片描述

4. 脚本

172.16.32.3服务器的/home/目录下,创建脚本inotifywait.sh

vim /home/inotifywait.sh
chmod +x /home/inotifywait.sh

inotifywait.sh文件全内容

#!/bin/bash

# 监控目录
WATCH_DIR=/root
# 目录变化日志记录
LOG_FILE="/home/inotifywait.log"
# 同步到的服务器信息
REMOTE_SSH_PORT=22
REMOTE_IP=backup
REMOTE_USER=root
REMOTE_PATH=/root/

# 记录脚本开始执行时间
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Script start." >> $LOG_FILE

# 使用 trap 命令在脚本退出时执行清理操作
trap "echo '[$(date +"%Y-%m-%d %H:%M:%S")] Script end.' >> $LOG_FILE" EXIT

# 监视目录下新建、修改、删除、移动状态
inotifywait -mrq -e modify,create,delete,move "$WATCH_DIR" | while read DIR EVENT FILE
do
  # 获取当前时间
  timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  # 输出变更信息到日志文件
  echo "[$timestamp] $EVENT: $DIR$FILE" >> "$LOG_FILE"
  case $EVENT in 
	"CREATE"|"CREATE,ISDIR"|"MODIFY"|"MOVED_TO" ) 
		rsync -az -e "ssh -p $REMOTE_SSH_PORT" --exclude '.*' -r "$WATCH_DIR"/* "$REMOTE_USER@$REMOTE_IP:$REMOTE_PATH"
		;;
    "DELETE"|"DELETE,ISDIR"|"MOVED_FROM" ) 
		rsync -az --delete -e "ssh -p $REMOTE_SSH_PORT" --exclude '.*' "$WATCH_DIR"/ "$REMOTE_USER@$REMOTE_IP:$REMOTE_PATH"
		;;
  esac  
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值