前言:如果需要两台服务器数据同步 可以使用此脚本实现修改文件、删除文件自动同步数据
本脚本需要密钥实现免密传文件到另一台服务器
以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