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       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 09:52:05       106 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 09:52:05       116 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 09:52:05       95 阅读
  4. Python语言-面向对象

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

热门阅读

  1. 什么是VPN服务器

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

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

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

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

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