首页 > 其他分享 >inotifywait监控文件夹内容变化,实时异地同步

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

时间:2024-10-11 14:19:24浏览次数:3  
标签:-% inotifywait REMOTE 文件夹 异地 FILE 172.16 服务器

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文件中

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="auVYDbAq-1728617542354" src="https://live.csdn.net/v/embed/428757"></iframe>

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

标签:-%,inotifywait,REMOTE,文件夹,异地,FILE,172.16,服务器
From: https://blog.csdn.net/ym5209999/article/details/142845447

相关文章

  • U盘中毒了?教你如何删除System Volume Information这个顽固文件夹「建议收藏」
     不得不说cmd命令很好用呢。最近我的U盘中毒了,格式化都删除不了SystemVolumeInformation这个顽固的文件夹,真心伤不起哇!还好现在解决了问题。看来以后得好好对待U盘,不能乱用了。本篇文章教大家如何删除SystemVolumeInformation这个顽固文件夹。希望对你有用。我的......
  • 织梦数据库在哪个文件夹
    织梦CMS(DEDECMS)的数据库文件本身并不直接存储在织梦的文件系统中,因为数据库通常是独立运行在数据库服务器上的,比如MySQL服务器。不过,织梦CMS会有一些与数据库相关的文件和备份文件存储在其文件系统中:数据库配置文件:存储位置:/data/common.inc.php这个文件包含了数据库连接的......
  • Python 文件发送到对方服务器文件夹内
    为了将Python文件发送到服务器的文件夹内,你可以使用paramiko库来实现SSH连接,并进行文件传输。以下是一个简单的例子:首先,安装paramiko库(如果你还没有安装的话): pipinstallparamiko 然后,使用以下Python代码将文件发送到远程服务器:  importparamiko#设置SSH......
  • JS实现文件夹的上传和下载
    前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,jsp,springboot,php,数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产数据库功能:超大文件上传,文件和文件夹批量上传,断点续传,加密上传,视频上传技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方......
  • 用python写一个脚本:将指定目录下及其所有子文件夹的所有的“srt”文件的内容合并到一
    代码:importosdefmerge_srt_files(source_dir,output_file):"""合并指定目录及其子目录下的所有.srt文件到一个新文件中。:paramsource_dir:源目录路径:paramoutput_file:输出文件路径"""#确保输出文件的目录存在os.makedirs(os.p......
  • 如何去除Windows10文件资源管理器上的6个文件夹:桌面、视频、图片、文档、下载、音乐和
    尽管 Win10 提供了迄今为止最先进和丰富的功能,但并不是每一个人都希望其预装那么多的组件。长期以来,微软通常会在Windows资源管理器中包含6个“桌面、文档、下载、音乐、图片和视频”的默认存储位置。在2017年10月的“秋季创意者更新”之后,它又增加了“3D对象”。其旨在为......
  • 【主机持久化】启动文件夹
    用户每次登录时,启动文件夹中的应用程序、文件和快捷方式会自动启动,通常用来引导用户的环境配置(设置壁纸、快捷方式等),可以通过CobaltStrike客户端中执行beacon>execute-assemblyC:\Tools\SharPersist\SharPersist\bin\Release\SharPersist.exe-tstartupfolder-c"C:\Windows......
  • 用python写一个脚本:将指定目录下及其所有子文件夹下的视频文件按中间时间切分成两部分
    代码:importosfrommoviepy.editorimportVideoFileClipdefsplit_video(video_path,output_dir):#加载视频文件clip=VideoFileClip(video_path)duration=clip.duration#计算中间时间点midpoint=duration/2#创建输出目录i......
  • linux系统下修改文件夹目录权限-chmod
    很多人开始接触Linux时都很头痛Linux的文件权限问题。这里告诉大家如何修改Linux文件-文件夹权限。以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:1.打开终端。输入su2.接下来会要你输入密码,输入你的root密码。3.假设我的文件夹在主目录里,地址为 ......
  • Linux统计文件夹下的文件数目
    最近需要统计Linux系统中某个文件夹下的文件数目,而Linux系统下有三个命令:ls、grep、wc。通过这三个命令的组合,可以实现上述要求!统计当前目录下文件的个数(不包括目录)$ls-l|grep"^-"|wc-l递归统计当前目录下文件的个数(包括子目录)$ls-lR|grep"^-"|wc-l查看......