ky818smKy818sm  2025-11-26 14:02 旷野小站 隐藏边栏 |   抢沙发  4 
文章评分 0 次,平均分 0.0

完整的备份脚本,包含定时执行功能

备份脚本

创建远程备份脚本文件
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

声明:本站许多内容均从网上收集整理,若有内容侵犯到您的权益,请通过邮件【6167555@qq.com】联系本站,我们将及时删除!

有问题请点我联系站长

「点点赞赏,手留余香」
HIDE

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享