宝塔备份优化需四步:压缩改gzip -1、频率调为每周、备份路径移至独立磁盘、用backup.py排除uploads等非必要目录。

备份文件太大是因为默认用 gzip -6 压缩,实际可安全降到 -1
宝塔面板默认调用 gzip 打包网站时使用 -6 级别(中等压缩比),但对 PHP 文件、HTML、JS/CSS 这类文本,-6 和 -1 的体积差常达 30%~50%,而解压速度却快 2~4 倍。尤其在低配服务器(1 核 1G)上,-6 容易卡住备份进程,还可能触发 OOM。
实操建议:
- 手动修改备份脚本中的压缩参数:找到
/www/server/panel/class/backup.py,搜索gzip -6,替换成gzip -1 - 不建议用
-0(不压缩):宝塔校验逻辑依赖.tar.gz后缀,纯.tar会报错Backup file format error - 改完记得重启面板:
bt restart,否则新设置不生效
自动备份频率没设上限,小站每天全量备份纯属浪费
宝塔默认「网站」备份策略是「每天一次」,不管站点只有 2MB 还是 200MB。对静态博客、企业展示站这类更新极少的站点,每周 1 次 + 手动触发更合理;否则硬盘三天就被 www_20240520.tar.gz、www_20240521.tar.gz 堆满。
实操建议:
- 进宝塔「计划任务」→ 找到对应网站的备份任务 → 编辑 → 把「执行周期」从「每天」改成「每周日」或「每 3 天」
- 避免用「每月」:万一当月最后一天出问题,最近备份是 30 天前,风险太高
- 如果启用了「保留 N 份」,务必确认磁盘剩余空间 ≥ 最大单份备份 × (N+2),宝塔清理有延迟,曾有用户设「保留 5 份」结果占了 7 份空间
备份路径还在 /www/backup,和网站目录挤在同一分区很危险
默认备份存到 /www/backup,跟网站根目录 /www/wwwroot 在同一块盘。一旦网站被黑、误删或磁盘写满,备份跟着一起丢——这不是备份,是镜像式陪葬。
实操建议:
- 挂载独立硬盘或 NAS 到
/mnt/backup,然后改宝塔配置:sed -i "s|/www/backup|/mnt/backup|g" /www/server/panel/data/siteBackup.pl - 改完必须手动创建目录并授权:
mkdir -p /mnt/backup && chown -R www:www /mnt/backup - 不要用软链接替代:宝塔 7.9+ 对软链接路径识别不稳定,会出现
Backup path not found
想跳过某些大目录(如 uploads、node_modules)?得改 Python 脚本,Web 界面不支持
宝塔 Web 界面里只能选「备份整个网站」或「只备份数据库」,没法排除子目录。但 WordPress 的 wp-content/uploads、Hexo 的 public、或者开发环境里的 node_modules,往往占体积 80% 以上,且本身不该进备份(上传文件应走对象存储,依赖包可重装)。
实操建议:
- 编辑
/www/server/panel/class/backup.py,找到def backupSite函数,在tar -zcf命令前加--exclude='*/uploads' --exclude='*/node_modules' - 注意写法:必须用单引号包裹通配符,写成
--exclude="*/uploads"会被 shell 展开失败 - 排除后首次备份会变快,但下次恢复时得自己补上传文件——这点容易被忽略,得记在运维文档里

















