Linux服务器Rsync定时同步一键化配置指南
封面来自腾讯元宝生成1、主从服务器同时安装rsync openssh-client
apt update && apt install -y rsync openssh-client
2、主服务器安装好后输入以下命令生成密钥对,来对从服务器进行免密登陆
ssh-keygen -t ed25519 # 一直按回车即可
3、将公钥发放到所有从服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub <用户名称>@<从服务器1_IP>
# 重复所有从服务器...
4、测试登陆与发放成功提示
发放成功:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '<用户名>@<从服务器ip>'"
and check to make sure that only the key(s) you wanted were added.
免密登陆测试
ssh <用户名>@<从服务器ip> # 确认无需密码即可登录
5、创建同步脚本,名称随意后缀名为.sh
#!/bin/bash
# 源目录
SOURCE_DIR="你需要同步的文件夹地址/或是你需要同步的文件地址(示例:/root/cert-CF/******.com)"
# 从服务器列表(IP或域名)
SERVERS=("从服务器1_IP" "从服务器2_IP" "从服务器3_IP")
# 目标目录
DEST_DIR="你需要同步的文件夹地址/或是你需要同步的文件地址"
# 日志文件
LOG_FILE="/var/log/sync_log_$(date +%Y%m%d).log"
# 循环同步到所有从服务器
for SERVER in "${SERVERS[@]}"; do
echo "==== 开始同步到 $SERVER ==== $(date)" >> "$LOG_FILE"
rsync -avz --delete -e ssh "$SOURCE_DIR/" "user@$SERVER:$DEST_DIR/" >> "$LOG_FILE" 2>&1
echo "==== 同步完成 ==== $(date)" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
done
6、服务同步脚本权限
chmod +x 同步文件夹/文件地址(示例:/root/sync_script.sh)
7、设定定时任务
crontab -e
ps:可能会出现1-3个编辑选项,一般选1就可以,使用nano文本编辑器来编辑
8、添加定时内容
0 2 * * 0 /root/sync_script.sh # 注意:星期字段中0或7表示周日
9、手动测试脚本是否正常运行
/root/sync_script.sh
