宝塔一键迁移仅支持网站文件、数据库、ssl证书和站点配置的迁移,不支持面板用户、计划任务、ftp账号等;常见问题包括502错误、数据库连接失败、ssl路径未更新、压缩包损坏、mysql权限/版本不兼容及域名硬编码等。

宝塔一键迁移功能实际能迁什么
它只搬网站文件、数据库、SSL证书和站点配置(nginx.conf 或 apache.conf 片段),不搬面板用户、计划任务、FTP账号、防火墙规则、PHP版本设置,也不处理跨系统架构(比如从 CentOS 7 迁到 Ubuntu 22.04)的兼容问题。
常见错误现象:迁移后网站打不开,提示 502 Bad Gateway 或 数据库连接失败,大概率是 PHP 版本不一致或 MySQL 用户权限没同步过去。
- 使用场景:同系统大版本下(如 CentOS 7 → CentOS 7)、PHP/MySQL 小版本相近(如 PHP 7.4.33 → PHP 7.4.30)时最稳
- 迁移前务必确认目标服务器已安装相同版本的 PHP、MySQL 和对应扩展(如
mysqli、pdo_mysql) - SSL证书路径在新服务器上会重写为
/www/wwwroot/域名/ssl/,但 Nginx 配置里引用的路径不一定自动更新,得手动核对ssl_certificate和ssl_certificate_key
迁移包生成后打不开、提示“无法解压”
本质是压缩包损坏或权限问题。宝塔用的是 tar.gz 格式,但生成过程依赖 tar 和 gzip 命令,某些精简版系统可能缺 gzip,导致打包无声失败。
常见错误现象:迁移包大小只有 1KB、下载后解压报错 gzip: stdin: not in gzip format、宝塔后台显示“打包中”但一直不动。
- 登录服务器终端,运行
which gzip和which tar,确保两者都存在且可执行 - 检查
/www/backup/site/目录权限是否为www:www,不是就执行chown -R www:www /www/backup/site/ - 如果网站根目录下有超大日志文件(如
access.log占几个 GB),迁移会卡住或失败;建议打包前临时移走logs/目录
目标服务器还原时“数据库导入失败”
不是因为 SQL 文件有问题,而是宝塔还原脚本默认用 mysql 命令导入,但新服务器的 MySQL root 密码可能和源站不同,或者没开 local_infile(影响部分含 LOAD DATA INFILE 的备份)。
常见错误现象:ERROR 1045 (28000): Access denied for user 'root'@'localhost'、ERROR 1148 (42000): The used command is not allowed with this MySQL version。
- 还原前先在目标服务器执行
mysql -u root -p -e "SELECT VERSION();",确认 MySQL 版本不低于源站(尤其注意 5.7 → 8.0 有语法不兼容) - 进宝塔「数据库」页面,点「添加数据库」再删掉,触发宝塔重写 MySQL 认证方式(解决 MySQL 8.0 默认
caching_sha2_password插件不兼容问题) - 如果导入卡在某条语句,可把
.sql文件下载下来,用head -n 100看开头,确认有没有CREATE DATABASE—— 宝塔还原脚本不会自动建库,必须提前在面板里创建同名数据库
迁移后网站访问异常但无报错
这类问题往往出在相对路径、缓存或配置残留上。宝塔迁移不改代码,但很多程序(如 WordPress、Typecho)会把域名硬编码进数据库或配置文件里,迁移后仍指向旧地址。
常见错误现象:网页能打开但样式丢失、图片 404、后台跳转回原域名、登录后无限重定向。
- 检查
/www/wwwroot/你的域名/config.php或wp-config.php里是否写死了DB_HOST、WP_HOME等值 - 清空程序自身的缓存目录(如
wp-content/cache/、runtime/cache/),别只清浏览器缓存 - 查看 Nginx 错误日志:
tail -f /www/wwwlogs/你的域名.error.log,比看浏览器更准;常发现open() "/www/wwwroot/旧域名/xxx" failed (2: No such file or directory)这类线索
php -v、mysql --version 和 getenforce,比等迁移完再排查快得多。










