039rsync和inotify实时文件同步
安装
- 注意把ip换一下
1 2 3 4 5 6 7 8 | #主备机器都安装rsync和inotify-tools sudo apt-get -y install rsync inotify-tools #使用nginx配置文件测试: /tmp # cd /tmp && cp -rf /usr/local/nginx/conf/ nginx_conf #初始同步 rsync -avz --delete /tmp/nginx_conf root@10.80.7.14: /tmp |
mkdir -p /data/logs/rsync/ && touch /data/logs/rsync/sync.logmkdir /opt/script/ && vim /opt/script/monitor.sh && chmod a+x *.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/bin/bash # 定义源目录和目标目录的映射关系 declare -A paths=( [ "/usr/local/nginx/conf" ]= "root@10.80.7.14:/usr/local/nginx/conf" [ "/data/wwwroot" ]= "root@10.80.7.14:/data/wwwroot" [ "/data/service" ]= "root@10.80.7.14:/data/service" ) log_file= "/data/logs/rsync/sync.log" # 日志文件路径 # 同步函数,将指定的源目录同步到目标目录 sync_files() { local source_dir= "$1" local destination_dir= "$2" echo "$(date '+%Y-%m-%d %H:%M:%S') - Syncing files in $source_dir..." >> "$log_file" rsync -avz --delete "$source_dir/" "$destination_dir" >> "$log_file" 2>&1 echo "$(date '+%Y-%m-%d %H:%M:%S') - Sync complete for $source_dir." >> "$log_file" } # 并发处理函数,用于监控和同步指定的目录 process_dir() { local source_dir= "$1" # 用于获取关联数组 paths 中指定键 $source_dir 对应的值(value) local destination_dir= "${paths[$source_dir]}" # 监控并同步指定的目录 while inotifywait -r -e modify,create,delete,move "$source_dir" ; do sync_files "$source_dir" "$destination_dir" done } # 同时监控和同步多个目录 for source_dir in "${!paths[@]}" ; do process_dir "$source_dir" & # 在后台运行处理函数 done wait # 等待所有后台进程完成 |
使用systemd使脚本一直运行
# 在源机器上创建一个systemd服务单元文件以管理monitor.sh脚本的运行。在终端中使用以下命令创建一个新的服务单元文件(例如monitor.service):#在编辑器中输入以下内容: vim /etc/systemd/system/monitor.service
1 2 3 4 5 6 7 8 | [Unit] Description=File monitoring and synchronization service [Service] ExecStart= /opt/script/monitor .sh [Install] WantedBy=multi-user.target |
- 启动
1 2 3 4 5 6 7 8 9 | #启用和启动服务 sudo systemctl enable monitor sudo systemctl start monitor #检查服务的状态 sudo systemctl status monitor #停止服务 sudo systemctl stop monitor |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 千万级的大表,如何做性能调优?
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· .NET周刊【1月第1期 2025-01-05】
2018-04-09 030_磁盘调度策略比较
2017-04-09 005_系统运维之SLA与SLO的关系