首页 > 系统相关 >034Ubuntu下rsync和inotify实现多路径文件实时同步

034Ubuntu下rsync和inotify实现多路径文件实时同步

时间:2023-05-17 22:45:38浏览次数:41  
标签:rsync 多路径 inotify nginx source local dir monitor

一、安装

#安装rsync和inotify-tools
sudo apt-get install rsync inotify-tools

#使用nginx配置文件测试:
/tmp# cp -rf  /usr/local/nginx/conf/  nginx_conf

#初始同步
rsync -avz --delete /tmp/nginx_conf [email protected]:/tmp
vim /opt/script/monitor.sh
#!/bin/bash

# 定义源目录和目标目录的映射关系
declare -A paths=(
  ["/usr/local/nginx/conf"]="[email protected]:/usr/local/nginx/conf"
  ["/data/wwwroot"]="[email protected]:/data/wwwroot"
)

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

#在编辑器中输入以下内容:
[Unit]
Description=File monitoring and synchronization service

[Service]
ExecStart=/opt/script/monitor.sh

[Install]
WantedBy=multi-user.target

#启用和启动服务
sudo systemctl enable monitor
sudo systemctl start monitor

#检查服务的状态
sudo systemctl status monitor

#停止服务
sudo systemctl stop monitor

 

 

标签:rsync,多路径,inotify,nginx,source,local,dir,monitor
From: https://www.cnblogs.com/itcomputer/p/17410562.html

相关文章

  • rsync笔记
    1、跨文件系统同步:一方是LINUX使用UTF8字符集,另一方是WINDOWS使用GBK字符集须添加参数,中文同步方正常显示--iconv=utf8,gbk2、文件权限参考这里:https://stackoverflow.com/questions/34147565/rsync-uid-gid-impossible-to-set-cases-cause-future-hard-link-failure-how-t......
  • Linux 工具 | rsync
    rsync是非常常用的文件同步工具既可以同步本地数据,类似于cp。又可以同步远程数据,类似于scprsync不会复制全部文件,而是采取增量备份,只复制有改动的文件,速度很快rsync算法中判断文件改动的默认规则是,文件大小或文件修改时间同步本地文件最基础的用法rsync-auv/dir1/fi......
  • 一篇文章教你学会数据备份利器rsync
     作为一个系统管理员,数据备份是非常重要的。阿铭有一次没有做好备份策略,结果磁盘坏了,数据全部丢失。所以在以后的系统维护工作中,你一定要时刻牢记给数据做备份。在Linux系统下数据备份的工具很多,但阿铭只用一种,那就是rsync,从字面意思上可以理解为remotesync(远程同步)。rsync不......
  • Linux作为rsync的服务端,Windows作为rsync的客户端
    服务端:centos7     172.16.106.199客户端:Windows10  172.16.106.143 服务端配置:创建服务器要同步数据的目录/tmp/rsyncmkdir/tmp/rsync设置权限为700chmod700 /tmp/rsync/ 编辑配置文件/etc/rsyncd.conf (修改该文件 除了修改监听端口跟ip需要重启,修......
  • 搭建rsyncd服务
    前言rsync常用来做文件传输和同步。本文示例中客户端通过rsync同步服务端的/home/tmp目录到本地(不是将客户端的文件同步到服务端)。环境信息IP系统版本rsync版本说明192.168.0.10CentOS7.93.1.2服务端192.168.0.11CentOS7.93.1.2客户端配置服务端安......
  • 6.case语句之场景示例:Rsync启动脚本
    1.编写一个rsync的启动停止脚本   实现:startstopstatusrestart   1.如何启动rsync        /usr/bin/rsync--daemon   2.如何停止rsync    pkillrsync #注意:千万不要使用rsync作为脚本的名字   3.参考系统中其他的服务的......
  • rsync 同步数据包括隐藏文件
    nohuprsync-avz--progress--update--include='*/'--include='.*'--bwlimit=1000agent//test/>/root/file.log2>&1&这条命令意思是用rsync来进行同步--progress显示详细输出--update增量同步--include='*/'--include=&#......
  • rsync远程同步:下行同步、上行同步+inotify实时同步
    一、rsync远程同步1、什么是rsync远程同步rsync是C/S架构的数据镜像备份工具,可以实现全量备份和快速增量备份支持本地复制或ssh、rsync主机同步。rsync默认端口为873rsync特性:可以在不通主机之间镜像同步整个目录树,支持增量备份、保持链接和权限、时间、属性且传输前自动执行压......
  • rsync增量备份
    一、rsync远程同步1、什么是rsync远程同步rsync是C/S架构的数据镜像备份工具,可以实现全量备份和快速增量备份支持本地复制或ssh、rsync主机同步。rsync默认端口为873rsync特性:可以在不通主机之间镜像同步整个目录树,支持增量备份、保持链接和权限、时间、属性且传输前自动执行压......
  • rsync—远程同步 上行同步 下行同步
     一、rsync1.1rsync简介(1)rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步......