shell实现两台服务器的文件实时同步

背景

如果要实现两台服务器的文件的热备份,要怎么做呢?使用shell脚本可以轻松实现。

 

分析

实现文件实时监控的命令为:inotifywait。

当文件有新增、修改、删除等操作时,这个文件监控就会触发事件,来通知你。

 

文件同步的命令为:rsync。

这个可以将文件从一台服务器快速同步到另外一台服务器。

 

将inotifywait 和 rsync 结合起来就可以实现实时同步的热备效果了。

 

下面是完整的脚本:

#!/bin/bash

 

CONFIG_FILE="config.txt"

 

# 读取配置文件,格式为:源目录:目标目录

read_config_file() {

    while IFS=: read -r source_dir target_dir; do

        if [[ $source_dir && $target_dir ]]; then

            inotifywait -m -r -e modify,create,delete "$source_dir" |

                while read path action file; do

                    rsync -avz "$source_dir/" root@目标IP:"$target_dir/"

                done &

        fi

    done < "$CONFIG_FILE"

}

 

# 主函数入口

main() {

    if [[ -f "$CONFIG_FILE" ]]; then

        read_config_file

    else

        echo "配置文件 $CONFIG_FILE 不存在."

    fi

}

 

# 执行主函数

main

 

配置文件config.txt:

/data/sync/watched:/data/sync/watched

 

总结

文件实时同步,借助inotifywait 和 rsync 就可以轻松实现。

来源: http://www.yu7s.com/article/20240329115541120.html

相关推荐

  1. shell实现服务器文件实时同步

    2024-04-02 09:52:05       6 阅读
  2. lsyncd + rsync实现文件实时同步

    2024-04-02 09:52:05       24 阅读

最近更新

  1. leetcode705-Design HashSet

    2024-04-02 09:52:05       5 阅读
  2. Unity发布webgl之后打开streamingAssets中的html文件

    2024-04-02 09:52:05       5 阅读
  3. vue3、vue2中nextTick源码解析

    2024-04-02 09:52:05       6 阅读
  4. 高级IO——React服务器简单实现

    2024-04-02 09:52:05       5 阅读
  5. 将图片数据转换为张量(Go并发处理)

    2024-04-02 09:52:05       4 阅读
  6. go第三方库go.uber.org介绍

    2024-04-02 09:52:05       6 阅读
  7. 前后端AES对称加密 前端TS 后端Go

    2024-04-02 09:52:05       7 阅读

热门阅读

  1. 什么是VPN服务器

    2024-04-02 09:52:05       5 阅读
  2. imu测试--UDP、PTP

    2024-04-02 09:52:05       6 阅读
  3. RUST 中什么情况下要使用 .unwrap ( )

    2024-04-02 09:52:05       5 阅读
  4. vue2 预览word文件

    2024-04-02 09:52:05       5 阅读
  5. C++宝强越狱1.0.6版本

    2024-04-02 09:52:05       5 阅读