宝塔设置备份全部网站如何设置排除网站?

在宝塔面板中,如果你想设置“备份所有网站”,但又希望排除某些特定网站,目前宝塔面板的默认备份任务(如计划任务中的“备份网站”)不直接支持“全选+排除”的模式。但你可以通过以下几种方式实现类似效果:


✅ 方法一:手动选择需要备份的网站(推荐)

  1. 登录宝塔面板。
  2. 进入 计划任务(或“计划任务”模块)。
  3. 点击 添加计划任务
  4. 任务类型选择:备份网站
  5. 在“备份目录”中,不要选择“所有网站”,而是:
    • 勾选你需要备份的每一个网站(手动多选)。
  6. 设置备份周期(如每天、每周等)。
  7. 保存任务。

⚠️ 优点:精确控制,排除的网站不会被备份。
❗ 缺点:当网站数量多或经常增减时,需手动维护。


✅ 方法二:使用脚本自动备份并排除指定网站

你可以编写一个 Shell 脚本,自动备份所有网站目录,但跳过你指定的某些网站。

示例脚本(排除指定名称的网站):

#!/bin/bash

# 备份目录
backup_dir="/www/backup/sites"
mkdir -p "$backup_dir"

# 排除的网站目录名(根据实际修改)
exclude_sites=("test.example.com" "demo.site.com")

# 遍历 /www/wwwroot 下的所有站点
for site in /www/wwwroot/*; do
    site_name=$(basename "$site")

    # 判断是否在排除列表中
    skip=0
    for exclude in "${exclude_sites[@]}"; do
        if [ "$site_name" == "$exclude" ]; then
            skip=1
            break
        fi
    done

    # 跳过排除的站点
    if [ $skip -eq 1 ]; then
        echo "跳过备份: $site_name"
        continue
    fi

    # 开始备份
    tar -zcf "$backup_dir/${site_name}_$(date +%Y%m%d_%H%M%S).tar.gz" -C /www/wwwroot "$site_name"
    echo "已备份: $site_name"
done

# 可选:删除7天前的旧备份
find "$backup_dir" -name "*.tar.gz" -mtime +7 -delete

设置步骤:

  1. 将脚本保存为 /www/scripts/backup_sites.sh
  2. 赋予执行权限:
    chmod +x /www/scripts/backup_sites.sh
  3. 在宝塔面板 → 计划任务 → 添加脚本任务:
    • 任务类型:Shell 脚本
    • 执行周期:按需设置(如每天凌晨)
    • 命令:
      /bin/bash /www/scripts/backup_sites.sh

✅ 优点:灵活、可自动化、支持排除逻辑。
💡 可扩展:加入日志、邮件通知、上传到远程存储等。


✅ 方法三:利用宝塔 API + 自定义脚本(高级用户)

通过调用宝塔的 API 获取网站列表,过滤后调用备份接口。适合集成到自动化运维系统中,但配置较复杂,一般用户不推荐。


总结建议:

方法 是否支持排除 易用性 适用场景
手动选择网站 ⭐⭐⭐⭐ 网站少、变动少
自定义脚本 ✅✅✅ ⭐⭐⭐ 网站多、需排除
宝塔默认“所有网站” ❌(无法排除) ⭐⭐⭐⭐⭐ 不推荐用于排除场景

📌 提示

  • 宝塔的“所有网站”备份无法设置排除项,这是目前的功能限制。
  • 使用脚本方式最灵活,也推荐用于生产环境。

如有更多需求(如备份到云存储、发送邮件通知),也可以扩展脚本功能。需要我帮你定制完整脚本吗?