前言:如果需要两台服务器数据同步 可以使用此脚本实现修改文件、删除文件自动同步数据

本脚本需要密钥实现免密传文件到另一台服务器

以debian系统为例

安装

两台服务器都要安装rsync

apt install rsync

需要备份的服务器安装实时监控inotify-tools

apt install inotify-tools

创建实时备份脚本

vim rsync_backup.sh

手动备份全部

rsync -av /备份目录 root@远程服务器ip:/存储目录

手动远程同步

rsync -avz --delete /备份目录 root@远程服务器ip:/存储目录

卸载实时监控inotify-tools

sudo apt-get autoremove --purge inotify-tools

创建实时备份脚本

脚本见文章最下面

设置可读权限

chmod +x rsync_backup.sh

设置后台运行

vim /etc/systemd/system/rsync-backup.service

后台运行脚本见文章最下面

重新加载配置

sudo systemctl daemon-reload

启动后台运行

sudo systemctl start rsync-backup.service

申请密钥 实现免密传文件到另一台服务器

申请密钥 一路回车即可

ssh-keygen -t ecdsa -b 521

导入公钥到另一台vps

ssh-copy-id -i ~/.ssh/id_ecdsa.pub -p 服务器端口 root@服务器IP地址

如果是导入自己的密钥 请给私钥设置可读权限

chmod 600 .ssh/id_ecdsa

实时备份脚本

#!/bin/bash

# 监控目录
SOURCE_DIR="/备份目录"

# 备份到的远程服务器路径
REMOTE_DIR="root@ip:/存储目录"

# 使用 inotifywait 监控文件的变化
inotifywait -m -r -e modify,create,delete --exclude '.*\.swp|.*\.bak' "$SOURCE_DIR" |
while read path action file; do
    echo "File $file in directory $path was $action. Starting rsync backup..."
    # 同步文件的修改、创建、删除操作
    rsync -avz --delete "$SOURCE_DIR" "$REMOTE_DIR"
done

后台运行脚本

[Unit]
Description=Rsync Backup Script

[Service]
ExecStart=/root/rsync_backup.sh
Restart=always

[Install]
WantedBy=multi-user.target