在宝塔面板中,设置“备份全部网站”时,如果想排除某些特定网站,目前宝塔面板的自动备份计划功能并没有直接提供“排除网站”的选项。但你可以通过以下几种方法实现类似效果:
✅ 方法一:不使用“备份全部网站”,改为手动选择需要备份的站点(推荐)
- 登录宝塔面板。
- 进入 计划任务 > 添加计划任务。
- 选择任务类型为:备份网站。
- 在“备份目标”中,不要选择“备份所有网站”。
- 而是手动勾选你需要备份的网站(即:把你想备份的站点一个个选上,排除不想备份的)。
- 设置备份周期(如每天、每周等)和保留份数。
- 保存即可。
✅ 优点:灵活控制,直接排除不需要备份的网站。
❌ 缺点:如果网站很多,每次新增网站需要手动添加到备份任务中。
✅ 方法二:使用脚本自动备份(高级用户)
你可以编写一个 Shell 脚本,调用宝塔的备份命令,自动遍历网站目录并排除指定站点。
示例脚本(排除特定网站目录名):
#!/bin/bash
# 要排除的网站目录(宝塔中网站根目录通常是 /www/wwwroot/xxx)
EXCLUDE_SITES=("test.example.com" "backup-ignore-site" "demo")
# 备份目录
BAK_DIR="/www/backup/exclude_sites"
# 创建备份日志
LOG_FILE="/www/backup/backup_exclude.log"
echo "开始备份网站,$(date)" >> $LOG_FILE
# 进入网站根目录
cd /www/wwwroot || exit
# 遍历所有目录
for dir in */; do
DIR_NAME=${dir%/}
SKIP=0
# 检查是否在排除列表中
for exclude in "${EXCLUDE_SITES[@]}"; do
if [ "$DIR_NAME" == "$exclude" ]; then
SKIP=1
break
fi
done
# 跳过排除的站点
if [ $SKIP -eq 1 ]; then
echo "跳过网站: $DIR_NAME" >> $LOG_FILE
continue
fi
# 调用宝塔备份命令(需确保有权限)
bt backup site "$DIR_NAME" 1 >> $LOG_FILE 2>&1
echo "已备份网站: $DIR_NAME" >> $LOG_FILE
done
echo "备份完成!$(date)" >> $LOG_FILE
使用步骤:
- 将脚本保存为
/www/backup/backup_exclude.sh - 赋予执行权限:
chmod +x /www/backup/backup_exclude.sh - 在宝塔面板中添加计划任务:
- 类型:Shell 脚本
- 执行周期:每天/每周等
- 脚本内容:
/bin/bash /www/backup/backup_exclude.sh
✅ 优点:可完全自定义排除逻辑,适合自动化运维。
⚠️ 注意:需确保bt命令可用(宝塔自带命令行工具)。
✅ 方法三:利用软链接或符号链接(变通方法)
如果你不想备份某个大站(如静态资源站),可以:
- 将该网站的数据移到其他分区或目录。
- 在
/www/wwwroot/中用符号链接指向它。 - 然后在备份时排除该链接或目录。
但此方法较复杂,不推荐普通用户使用。
❌ 宝塔当前限制
宝塔的“备份所有网站”功能无法直接排除指定网站。一旦选择“备份所有网站”,就会包含所有站点,包括后来新增的。
✅ 建议总结
| 方法 | 适用人群 | 是否推荐 |
|---|---|---|
| 手动选择备份站点 | 普通用户 | ✅ 推荐 |
| 使用脚本自动排除 | 高级用户 | ✅ 推荐(自动化) |
| 等待宝塔更新支持排除 | —— | ❌ 未知 |
如有需要,你也可以在宝塔官方论坛或 GitHub 提交功能建议,请求增加“排除网站”选项。
希望以上方法能帮到你!
CLOUD技术博