宝塔面板“加密备份”仅标记数据库,不加密文件;真加密须用tar+gpg命令行,AES256算法、高强度密码、隔离存储、scp传输缺一不可。

宝塔面板默认的网站备份功能不支持为压缩包设置密码,直接导出的 .zip 或 .tar.gz 文件是明文的——哪怕你勾选了“加密备份”,那也只是对备份任务记录做了数据库标记,文件本身没加密。
为什么「加密备份」开关根本不管用
这个选项在宝塔 UI 里叫“加密备份”,但实际行为只是把该备份条目在面板数据库中标记为 is_encrypt=1,完全不参与文件打包过程。生成的压缩包可被任意解压工具直接打开,所有源码、数据库 SQL、配置文件(含 wp-config.php、.env)全裸露。
- 你点“下载”后拿到的是未加密文件,连密码提示框都不会弹
- 备份文件若被误传到公网目录或同步到云盘,等于主动交出后台权限
- 该开关对 SSH 登录服务器后直接读取
/www/backup/site/目录也毫无防护作用
手动用 tar + gpg 实现真加密(推荐)
必须脱离面板图形界面,改用 Linux 原生命令链,在服务器本地完成带密码的强加密归档。核心是用 gpg 对 tar 流实时加密,避免生成中间明文文件。
- 进入网站根目录:
cd /www/wwwroot/your-site.com - 执行一键加密打包(替换
your-site.com和密码):tar -cf - . | gpg --symmetric --cipher-algo AES256 --compress-algo ZIP -o /www/backup/site/your-site.com-$(date +%Y%m%d).tar.gpg
- 执行时会提示输入密码,**必须用高强度密码**(≥12位,含大小写字母+数字+至少两个符号,如
Xk9#qL2@mNv$RzW!) - 生成的
.tar.gpg文件无法用普通解压工具打开,必须用gpg -d解密后才能tar -xf
用 zip 命令加密码的局限与风险
虽然 zip -e 支持密码,但 ZIP 加密算法(PKZIP 2.0)已被证明脆弱,暴力破解工具可在数小时内破解弱密码;且宝塔的 zip 依赖可能不带加密支持(尤其 Alpine 系统)。
- 不要用:
zip -r -e backup.zip ./—— 密码强度再高也挡不住算法层缺陷 - 如果非用 zip,至少加
-Z deflated强制使用更安全的压缩流,但依然不推荐 - 注意:宝塔计划任务调用的
bt backup命令不接受密码参数,无法集成
备份文件存储与传输的硬性约束
加密只是第一步,文件落地位置和传输方式同样关键——否则等于锁了门却把钥匙挂在门把手上。
- 加密后的
.tar.gpg文件必须存放在/www/backup/以外目录,例如/root/secure-backup/,并确保权限为600:chmod 600 /root/secure-backup/*.gpg - 下载时禁止通过宝塔文件管理器直接点击下载(它会触发 HTTP 明文传输),必须用
scp或sftp工具拉取 - 绝对不要把加密备份上传到微信、QQ、网盘等第三方服务——GPG 私钥一旦泄露,所有历史备份瞬间失效
真正安全的备份加密不是勾一个开关,而是控制整个数据流:从打包那一刻起就杜绝明文落地,用现代加密算法(AES256)、高强度口令、隔离存储路径、受控传输通道——缺一不可。最容易被忽略的是,很多人以为加密完就结束了,其实解密环境(GPG 版本、密钥环状态、终端是否被记录)才是最后一道防线。











