rsync和inotify-tools实现文件实时同步
一、环境准备
- 服务器设置
- 确定一台源服务器(假设为 Server A)和多台目标服务器(假设为 Server B、Server C 等),确保它们之间网络连通,并且能够互相通过 SSH 访问。
- 在每台服务器上安装
inotify - tools
和rsync
软件包。在 CentOS 系统中,可以使用yum install inotify - tools rsync - y
命令进行安装。
二、配置无密码 SSH 登录
- 在源服务器上生成 SSH 密钥对
- 在源服务器(Server A)上,使用
ssh - keygen - t rsa
命令生成 SSH 密钥对,一路回车采用默认设置即可。这将在~/.ssh
目录下生成id_rsa
(私钥)和id_rsa.pub
(公钥)两个文件。
- 在源服务器(Server A)上,使用
- 将公钥分发到目标服务器
- 对于每台目标服务器,将源服务器的公钥添加到目标服务器的
authorized_keys
文件中,以实现无密码登录。 - 例如,将公钥复制到 Server B 的命令为:
ssh -copy-id - i ~/.ssh/id_rsa.pub user@ServerB
,其中user
是在 Server B 上的登录用户名,需要根据实际情况替换。同样的操作需要对每台目标服务器执行。直接输入这条命令即可自动生成
- 对于每台目标服务器,将源服务器的公钥添加到目标服务器的
三、创建同步脚本
- 在源服务器上创建脚本文件
- 在源服务器(Server A)上创建一个脚本文件,例如
/usr/local/bin/tongbu
.sh,内容如下:
- 在源服务器(Server A)上创建一个脚本文件,例如
#!/bin/bash
# 源文件夹,根据实际情况修改
SOURCE_DIR="/temp"
# 目标服务器列表,格式为 "user@server_ip:/destination/folder",根据实际情况修改
TARGET_SERVERS=(
"[email protected]:/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
- 赋予脚本执行权限
- 在源服务器上,使用
chmod +x /usr/local/bin/tongbu.sh
命令赋予脚本可执行权限。
- 在源服务器上,使用
四、启动同步脚本
- 手动启动脚本
- 在源服务器上,通过
/usr/local/bin/tongbu.sh
命令手动启动同步脚本,开始实时同步文件夹到多台目标服务器。
- 在源服务器上,通过
- 设置开机自启
- 若要使脚本在源服务器开机时自动启动,可以创建一个
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端口
标签:脚本,rsync,inotify,Server,ssh,服务器,tools,tongbu
From: https://blog.csdn.net/weixin_67274256/article/details/143372640