rsync和inotify-tools实现文件实时同步

rsync和inotify-tools实现文件实时同步

一、环境准备

  1. 服务器设置
    • 确定一台源服务器(假设为 Server A)和多台目标服务器(假设为 Server B、Server C 等),确保它们之间网络连通,并且能够互相通过 SSH 访问。
    • 在每台服务器上安装inotify - toolsrsync软件包。在 CentOS 系统中,可以使用yum install inotify - tools rsync - y命令进行安装。

二、配置无密码 SSH 登录

  1. 在源服务器上生成 SSH 密钥对
    • 在源服务器(Server A)上,使用ssh - keygen - t rsa命令生成 SSH 密钥对,一路回车采用默认设置即可。这将在~/.ssh目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。
  2. 将公钥分发到目标服务器
    • 对于每台目标服务器,将源服务器的公钥添加到目标服务器的authorized_keys文件中,以实现无密码登录。
    • 例如,将公钥复制到 Server B 的命令为:ssh -copy-id - i ~/.ssh/id_rsa.pub user@ServerB,其中user是在 Server B 上的登录用户名,需要根据实际情况替换。同样的操作需要对每台目标服务器执行。 直接输入这条命令即可自动生成

三、创建同步脚本

  1. 在源服务器上创建脚本文件
    • 在源服务器(Server A)上创建一个脚本文件,例如/usr/local/bin/tongbu.sh,内容如下:
#!/bin/bash

# 源文件夹,根据实际情况修改
SOURCE_DIR="/temp"
# 目标服务器列表,格式为 "user@server_ip:/destination/folder",根据实际情况修改
TARGET_SERVERS=(
    "root@192.168.200.100:/temp"
    "user@ServerC:/destination/folder"
    # 如果有更多目标服务器,依次添加在此处
)
# rsync命令参数,-avz表示归档、详细输出、压缩传输
RSYNC_CMD="rsync -avz"

inotifywait -m -r -e create,delete,modify,move $SOURCE_DIR | while read -r DIRECTORY EVENT FILE; do
    for TARGET_SERVER in "${TARGET_SERVERS[@]}"; do
        $RSYNC_CMD --delete $SOURCE_DIR $TARGET_SERVER
        echo "Syncing: $SOURCE_DIR to $TARGET_SERVER due to $EVENT on $FILE"
    done
done
  1. 赋予脚本执行权限
    • 在源服务器上,使用chmod +x /usr/local/bin/tongbu.sh命令赋予脚本可执行权限。

四、启动同步脚本

  1. 手动启动脚本
    • 在源服务器上,通过/usr/local/bin/tongbu.sh命令手动启动同步脚本,开始实时同步文件夹到多台目标服务器。
  2. 设置开机自启
    • 若要使脚本在源服务器开机时自动启动,可以创建一个systemd服务。在源服务器上创建/etc/systemd/system/tongbu.service文件,内容如下:

复制

[Unit]
Description=Multi - Server Real - Time Folder Sync Service
After=network.target

[Service]
ExecStart=/usr/local/bin/tongbu.sh   
Restart=always

[Install]
WantedBy=multi - user.target
  • 根据路径不同改Execstart的脚本路径即可
  • 然后在源服务器上依次执行以下命令:
    • systemctl daemon - reload
    • systemctl enable tongbu
    • systemctl start tongbu
通过ssh传输,出现无法同步问题 排查权限、ssh网络、服务器资源,这个脚本也有详细输出 rsync默认用的873端口
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热心市民运维小孙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值