完整的备份脚本,包含定时执行功能
备份脚本
创建远程备份脚本文件
nano /usr/local/bin/proxmox-host-backup-remote.sh
将以下内容复制到脚本中:
#!/bin/bash
# Proxmox 远程自动备份脚本(简化版)
REMOTE_HOST="166.166.166.1"
REMOTE_PORT="22"
REMOTE_PATH="/data/websites/backups/proxmox-bak/"
LOCAL_TEMP="/tmp/proxmox-backup-$(date +%Y%m%d_%H%M%S).tar.gz"
LOG_FILE="/var/log/proxmox-remote-backup.log"
MAX_BACKUPS=10
# 备份内容
BACKUP_PATHS=(
"/etc"
"/var/spool/cron/crontabs"
"/root"
"/usr/local/bin"
"/opt"
)
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 主备份流程
main() {
log "开始 Proxmox 远程备份"
# 创建备份包
log "创建备份包..."
if tar -czf "$LOCAL_TEMP" "${BACKUP_PATHS[@]}"; then
local size=$(du -h "$LOCAL_TEMP" | cut -f1)
log "备份包创建成功: $size"
else
log "备份包创建失败"
exit 1
fi
# 上传到远程
log "上传到远程服务器..."
if rsync -av -e "ssh -p $REMOTE_PORT" "$LOCAL_TEMP" "root@$REMOTE_HOST:$REMOTE_PATH"; then
log "备份上传成功: $(basename "$LOCAL_TEMP")"
else
log "备份上传失败"
exit 1
fi
# 清理远程旧备份
log "清理远程旧备份..."
ssh -p $REMOTE_PORT root@$REMOTE_HOST \
"ls -t '$REMOTE_PATH'proxmox-backup-*.tar.gz 2>/dev/null | tail -n +$(($MAX_BACKUPS + 1)) | xargs -r rm -f"
# 清理本地临时文件
rm -f "$LOCAL_TEMP"
log "Proxmox 远程备份完成"
}
main
2. 设置脚本权限
bash
# 给脚本执行权限
chmod +x /usr/local/bin/proxmox-host-backup-remote.sh
# 测试简化版脚本
/usr/local/bin/proxmox-host-backup-remote.sh
# 查看日志
tail -f /var/log/proxmox-remote-backup.log
配置定时任务(Cron)
# 编辑cron任务
crontab -e
添加以下行来设置自动备份:
38 1 * * * /usr/local/bin/proxmox-host-backup-remote.sh
5. 手动测试脚本
/usr/local/bin/proxmox-host-backup-remote.sh
「点点赞赏,手留余香」
声明:本文为原创文章,版权归旷野小站所有,欢迎分享本文,转载请保留出处!