宝塔面板自动备份配置脚本
本文最后更新于 291 天前,其中的信息可能已经有所发展或是发生改变。

一、安装软件

在 宝塔面板软件商店中搜索 宝塔配置备份 x.x ,安装。

二、脚本

#!/bin/bash

# 宝塔面板配置
# /www/server/panel/config/api.json  API_key:key,SECRET_KEY:token
BT_PANEL_URL="宝塔面板url地址"
API_KEY="/www/server/panel/config/api.json 里面的key字段"  
SECRET_KEY="/www/server/panel/config/api.json 里面的token字段"

# 备份文件夹路径
BACKUP_DIR="/www/server/panel/backup/panelBackup" //不可修改

echo "========================================"
echo "宝塔面板自动备份脚本"
echo "开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "面板地址: ${BT_PANEL_URL}"
echo "========================================"

# 第一步:清空备份文件夹
echo "1. 清理备份文件夹: ${BACKUP_DIR}"

if [ -d "$BACKUP_DIR" ]; then
    # 统计清理前的文件
    OLD_FILES_COUNT=$(find "$BACKUP_DIR" -type f -name "*.zip" | wc -l)
    OLD_FILES_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1)
    
    echo "   清理前: ${OLD_FILES_COUNT} 个备份文件,占用 ${OLD_FILES_SIZE}"
    
    # 删除所有.zip文件(保留文件夹结构)
    find "$BACKUP_DIR" -type f -name "*.zip" -delete
    
    # 也可以清空整个目录(包括子目录)
    # rm -rf "${BACKUP_DIR}"/* 2>/dev/null
    
    # 统计清理后的情况
    NEW_FILES_COUNT=$(find "$BACKUP_DIR" -type f -name "*.zip" | wc -l)
    NEW_FILES_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1)
    
    echo "   清理后: ${NEW_FILES_COUNT} 个备份文件,占用 ${NEW_FILES_SIZE}"
    echo "   ✓ 备份文件夹已清理"
else
    echo "   ⚠ 备份文件夹不存在,创建中..."
    mkdir -p "$BACKUP_DIR"
    chown www:www "$BACKUP_DIR" 2>/dev/null || true
    echo "   ✓ 备份文件夹已创建: ${BACKUP_DIR}"
fi

echo ""

# 第二步:创建新备份
echo "2. 创建面板配置备份"

# 生成签名
TIME_STAMP=$(date +%s)
REQUEST_TOKEN=$(echo -n "${TIME_STAMP}${SECRET_KEY}" | md5sum | awk '{print $1}')

echo "   时间戳: ${TIME_STAMP}"
echo "   请求令牌: ${REQUEST_TOKEN}"
echo "   API密钥: ${API_KEY}"

# 调用创建备份接口
echo "   正在调用备份接口..."
RESPONSE=$(curl -s -X POST "${BT_PANEL_URL}/plugin?action=a&name=backup&s=Backup_all" \
  -H "Authorization: bt-panel ${API_KEY}" \
  -d "request_time=${TIME_STAMP}&request_token=${REQUEST_TOKEN}" \
  --connect-timeout 30 \
  --max-time 120)

echo "   接口响应: ${RESPONSE}"

# 第三步:解析响应
echo "3. 验证备份结果"

if [[ -n "$RESPONSE" && ! "$RESPONSE" =~ "error" && ! "$RESPONSE" =~ "404" && ! "$RESPONSE" =~ "Not Found" ]]; then
    echo "   ✓ 备份创建成功"
    echo "   备份信息: ${RESPONSE}"
    
    # 检查实际文件是否生成
    sleep 2  # 等待文件写入
    
    # 查找最新生成的备份文件
    LATEST_BACKUP=$(find "$BACKUP_DIR" -type f -name "*.zip" -printf "%T@ %p\n" 2>/dev/null | sort -n | tail -1 | cut -d' ' -f2-)
    
    if [ -n "$LATEST_BACKUP" ] && [ -f "$LATEST_BACKUP" ]; then
        FILE_SIZE=$(du -h "$LATEST_BACKUP" | cut -f1)
        FILE_NAME=$(basename "$LATEST_BACKUP")
        
        echo "   ✓ 备份文件已生成"
        echo "   文件名: ${FILE_NAME}"
        echo "   文件大小: ${FILE_SIZE}"
        echo "   保存路径: ${LATEST_BACKUP}"
    else
        echo "   ⚠ API返回成功,但未找到备份文件"
    fi
    
    echo ""
    echo "========================================"
    echo "备份完成时间: $(date '+%Y-%m-%d %H:%M:%S')"
    echo "备份状态: ✓ 成功"
    echo "========================================"
    exit 0
else
    echo "   ✗ 备份创建失败"
    echo "   错误信息: ${RESPONSE}" 
    echo ""
    echo "========================================"
    echo "备份完成时间: $(date '+%Y-%m-%d %H:%M:%S')"
    echo "备份状态: ✗ 失败"
    echo "========================================"
    exit 1
fi

三、使用

在 定时任务 里面添加一个shell脚本的任务,就可以定时备份到文件夹。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇