宝塔一键迁移工具仅能自动打包还原站点文件、数据库、SSL证书和计划任务,但成功前提必须是新旧服务器PHP/MySQL/Nginx版本完全一致、PHP扩展严格匹配、MySQL认证方式兼容(如通过添加再删除数据库触发重写),且需提前清理大日志、校验防火墙与权限、手动修正应用层配置。

宝塔一键迁移 工具能完成站点文件、数据库、SSL证书、计划任务的自动打包与还原,但「快速」的前提是环境一致、权限到位、配置提前对齐。否则看似点一下就完事,实际卡在数据库导入失败、伪静态不生效、PHP扩展缺失这些环节。
确认新旧服务器 PHP/MySQL/Nginx 版本完全一致
版本错配是迁移后白屏或 500 错误的头号原因,尤其 PHP 扩展(如redis、imagick)和 MySQL 认证插件(caching_sha2_password vs mysql_native_password)必须严格匹配。
- 登录旧服务器,在【软件商店】→【已安装】里记下 PHP、MySQL、Nginx 的精确版本号(例如 PHP 7.4.33,不是“7.4”)
- 新服务器必须安装完全相同版本:宝塔不支持自动降级,若已装高版本,得手动卸载再装对应旧版
- 进入旧服务器【PHP 设置】→【禁用函数】和【扩展管理】,把启用的扩展名逐个列出来,新服务器也要开一模一样的
- MySQL 8.0 迁移前,务必在新服务器进【数据库】页面,点一次「添加数据库」再删掉——这个操作会触发宝塔重写 root 用户认证方式,绕过
caching_sha2_password兼容问题
迁出端只装插件,迁入端只开 API
官方文档常把两端都装插件说成“标准流程”,但实际只要旧服务器装宝塔一键迁移 API 版本,新服务器只需开启面板 API 并加白名单,就能跑通。多装一个插件反而增加冲突风险。
- 旧服务器:在【软件商店】搜索并安装
宝塔一键迁移 API 版本(注意名称带“API 版本”,不是“网站迁移”) - 新服务器:进【面板设置】→【API】,开启接口,设置强密钥,把旧服务器公网 IP 加进
IP 白名单 - 不要在新服务器也装同款插件——它不参与接收逻辑,纯属冗余
- 检查旧服务器防火墙是否放行面板端口(默认
8888),用curl -I <a href="https://www.php.cn/link/274ba853b1325395ce18cdd0b43c5d9e">https://www.php.cn/link/274ba853b1325395ce18cdd0b43c5d9e</a>能返回 HTTP 200 才算通
迁移前手动清理日志和临时文件
宝塔一键迁移 默认打包整个网站根目录,如果 /www/wwwroot/yourdomain.com/logs/ 下有几 GB 的 access.log 或 debug.log,会导致打包超时、传输中断、磁盘爆满。
- 登录旧服务器终端,执行:
find /www/wwwroot/<em>/logs -name "</em>.log" -size +100M -delete - 检查是否有大体积缓存目录(如 Laravel 的
storage/framework/cache、WordPress 的wp-content/cache),临时清空或排除 - 确保
/www/backup/site/目录权限为www:www,否则插件无法写入备份包:chown -R www:www /www/backup/site/
迁移后必须手动检查三项配置
插件不会动你的应用层配置,哪怕数据库连上了,.env、config/database.php、伪静态规则仍指向旧环境。
- 进新站点根目录,用
sed -i 's/old_db_host/new_db_host/g' .env替换数据库主机(常见坑:旧站用localhost,新站得改成127.0.0.1或具体 IP) - 登录新服务器宝塔【网站】→【设置】→【伪静态】,确认规则和旧站完全一致;WordPress 用户特别注意是否勾选了「启用伪静态」
- SSL 证书虽被迁移,但新站的「强制 HTTPS」开关可能没开,需手动打开,否则访问仍走 HTTP
迁移本身不难,难的是两边环境像齿轮一样咬合。很多所谓“失败”,其实发生在点击「开始迁移」之前——比如新服务器 MySQL root 密码和旧站不同,或者没开 local_infile 导致含 LOAD DATA INFILE 的 SQL 导入直接报错 ERROR 1148。这些细节不提前扫一遍,点再多遍「迁移」也没用。

















