用 bt 17 一键导出全量配置最省心,但需满足宝塔7.9.0+且未禁用CLI;手动备份须包含 /data、/vhost、/database 和 /config.json;务必同步 php.ini、nginx.conf 及 limit_conf 防护规则;数据库优先用 phpMyAdmin 导出。

用 bt 17 一键导出全量配置最省心,但得满足两个硬条件
宝塔官方推荐的完整备份方式就是命令行工具 bt 17,它能打包站点、数据库、Nginx/PHP 配置、SSL 证书、反向代理规则、计划任务、防火墙策略——真正“所有站点信息”一次拉齐。
但它不是万能钥匙:必须是宝塔面板 7.9.0 及以上版本,且未在面板设置中禁用 CLI 功能(路径:面板设置 → 安全 → 禁用命令行工具)。旧版或被禁用后执行 bt 17 会直接报错 Command not found 或提示“功能已关闭”。
- 执行前先确认版本:
bt -v - 若提示权限不足,说明 SSH 登录用户不是
root,需切到 root:sudo su - - 备份包默认生成在
/www/backup/bt_full<em>export</em>*.tar.gz,路径不可写时会静默失败,建议手动指定(如/www/backup/)并确保该目录有写权限 - 导出过程不压缩数据库 SQL 文件(保留原始
.sql),但会压缩网站文件为.tar.gz;解压后结构清晰,可直接用于迁移或审计
手动打包核心配置目录时,/www/server/panel/vhost 是关键,但别漏掉 /www/server/panel/data
很多用户以为导出 vhost 就够了——毕竟那里存着 Nginx/Apache 的站点配置、SSL 证书、反向代理规则。但真正决定“谁是管理员、登录端口多少、是否启用微信通知”的元数据,全在 /www/server/panel/data 里:user.json 存账号密码哈希,port.pl 记面板端口,login.log 能追溯异常登录。
- 必打的路径组合是:
/www/server/panel/data /www/server/panel/vhost /www/server/panel/database /www/server/panel/config.json - 别碰
/www/server/panel/logs(日志体积大、无迁移价值),也别打包整个/www/server/panel(含运行时缓存和临时文件,可能损坏) - 执行
tar -zcf bt_config_backup.tar.gz后,务必检查输出里有没有tar: Exiting with failure status due to previous errors——常见于某文件正被面板进程占用(比如config.json正在写入),此时加--ignore-failed-read会掩盖问题,应稍等几秒重试
只备份网站和数据库,却忘了 php.ini 或 nginx.conf?那等于没备份运行环境
宝塔的“网站备份”按钮只打站点根目录(/www/wwwroot/example.com),数据库备份只导出 SQL;但 WordPress 插件依赖的 upload_max_filesize、Laravel 需要的 opcache.enable、甚至 HTTPS 强制跳转逻辑,全藏在 PHP 和 Nginx 配置里。迁移后网站打不开、上传失败、502 错误,八成是这些没同步。
- 关键配置文件路径必须手动下载:
/www/server/php/{版本}/etc/php.ini、/etc/nginx/nginx.conf、/www/server/panel/vhost/nginx/example.com.conf - 不要直接复制
/etc/nginx/conf.d/下的文件——宝塔不走这个路径,改了也不生效 -
php.ini中注意区分全局配置和站点级配置:后者在/www/server/php/{版本}/etc/php-fpm.d/www.conf里的php_admin_value[upload_max_filesize]段落,优先级更高 - 如果用了宝塔的“网站监控”或“防CC”,对应规则存在
/www/server/panel/vhost/limit_conf/,漏掉会导致防护失效
用 phpMyAdmin 导出数据库比 mysqldump 更稳,尤其 MySQL 8+ 开了严格模式时
mysqldump -u root -p dbname > backup.sql 在低权限或新版 MySQL 下常报错:Access denied for user 'root'@'localhost'(面板 root 密码和系统 root 不同),或 Unknown table 'mysql.column_stats'(MySQL 8.0+ 默认开启的统计表,mysqldump 未适配)。而宝塔内置的 phpMyAdmin 已预置好连接凭证和兼容头,导出成功率接近 100%。
- 进入 phpMyAdmin 后,务必在“导出”页选择“自定义”,勾选
添加 DROP TABLE和包含创建语句 - 文件名建议用
example<em>com</em>$(date +%Y%m%d).sql格式,避免中文或空格(某些 FTP 工具解析失败) - 数据库超 50MB 时,phpMyAdmin 可能卡在“正在导出”,此时切到“快速”模式,或改用命令行:
mysqldump --single-transaction --routines --triggers -u panel -p$(cat /www/server/panel/database/default.db) dbname > backup.sql(panel是宝塔数据库用户,密码存在那个文件里)
备份这事,最麻烦的从来不是操作步骤,而是你永远不知道哪一行配置、哪一个隐藏开关,会在新服务器上突然翻脸。导出时多看一眼 tar 的返回码,下载前打开 .sql 确认开头有 CREATE DATABASE,比事后重来强十倍。

















