用 rsync + cron 做异地备份
脚本核心就这几行:
#!/bin/bash
SRC="/docker/data /etc/nginx"
DEST="backup@remote-server:/backups/$(hostname)"
DATE=$(date +%Y%m%d)
for dir in $SRC; do
rsync -azP --delete \
--exclude="*.log" \
--exclude="*.tmp" \
"$dir" "$DEST/$DATE/"
done
--delete:源端删了的文件目标端也删,保持同步。如果想保留历史快照,改用 --backup --backup-dir。
--exclude:日志和临时文件不用备份,省流量。
cron 里加一条,每天凌晨 3 点跑:
0 3 * * * /root/scripts/backup.sh >> /var/log/backup.log 2>&1
跑了一段时间挺稳的。唯一要注意的是 SSH 密钥要提前配好,cron 环境里没有交互终端,密码验证会直接失败。