宝塔面板迁移需将核心服务目录移至非系统盘,方法包括停服迁移法、软链接重定向法、参数重装法,并须同步调整权限、验证路径及迁移MySQL等配套组件。

如果您已完成宝塔面板安装,但发现其默认安装路径(/www/server/)位于系统盘且空间紧张,则需将核心服务目录迁移至已挂载的非系统盘(如 /data、/home 或 /mnt)。以下是多种可行的迁移方法:
一、停服迁移法(适用于已安装环境)
该方法通过停止宝塔服务,整体移动 server 目录并重建软链接,确保路径引用不变,同时将实际数据存放于非系统盘。
1、执行命令停止宝塔面板服务:
sudo /etc/init.d/bt stop
2、将原 server 目录整体迁移至目标非系统盘路径(以 /data/bt 为例):
sudo mv /www/server /data/bt
3、在原位置创建指向新路径的软链接:
sudo ln -s /data/bt /www/server
4、修改宝塔启动脚本中的路径引用:
sudo sed -i 's|/www/server/|/data/bt/|g' /etc/init.d/bt
5、重启宝塔服务:
sudo /etc/init.d/bt start
二、软链接重定向法(无需停服,仅重定向/www)
该方法不移动 server 目录本身,而是将根目录下的 /www 指向非系统盘的 www 子目录,使后续新建站点、软件安装等均自动落于目标磁盘,适合保留原 server 但需释放系统盘空间的场景。
1、确认非系统盘已挂载(例如挂载点为 /home),并检查其剩余空间:
df -h /home
2、在挂载点下创建 www 目录:
sudo mkdir -p /home/www
3、删除原 /www 目录(确保其为空或已备份):
sudo rm -rf /www
4、建立指向新位置的软链接:
sudo ln -s /home/www /www
5、重启宝塔面板以使路径生效:
sudo /etc/init.d/bt restart
三、参数重装法(推荐用于低风险重装环境)
若服务器处于测试或可接受短暂中断状态,可通过卸载后使用 --path 参数指定安装路径的方式,直接将整个宝塔环境部署至非系统盘,避免软链接依赖与路径替换风险。
1、完全卸载当前宝塔面板:
wget -O uninstall.sh http://download.bt.cn/install/uninstall.sh && sudo bash uninstall.sh
2、下载最新安装脚本:
wget -O install.sh http://download.bt.cn/install/install_6.0.sh
3、执行带路径参数的安装命令(以 /data/bt 为目标):
sudo bash install.sh --path /data/bt
4、安装完成后,记录返回的面板地址、用户名与密码。
5、登录面板,进入【网站】→【添加站点】,验证新建站点根目录是否自动位于 /data/bt/wwwroot 而非 /www/wwwroot。
四、权限与验证操作
无论采用以上哪种方法,迁移后必须同步调整目录权限与所有者,否则可能导致软件无法启动、站点无法写入或数据库拒绝连接。
1、递归设置目标目录权限:
sudo chmod -R 755 /data/bt
2、将目录所有者设为宝塔运行用户(常见为 www 或 www-data):
sudo chown -R www:www /data/bt
3、验证宝塔服务状态:
sudo /etc/init.d/bt status
4、访问面板后,在【软件商店】中安装 Nginx 或 PHP,检查其实际安装路径是否显示为 /data/bt/server/nginx 等非系统盘路径。
五、配套组件路径同步调整
仅迁移 /www/server 不足以释放全部系统盘压力,MySQL、Docker 等组件的数据目录仍可能驻留 /var 或 /www/server/data。需单独处理关键组件以实现彻底迁移。
1、停止 MySQL 服务:
sudo /etc/init.d/mysqld stop
2、迁移 MySQL 数据目录(以迁至 /data/mysql 为例):
sudo mv /www/server/data/mysql /data/mysql
3、修改 MySQL 配置文件 my.cnf 中的 datadir 项:
sudo sed -i 's|datadir=/www/server/data/mysql|datadir=/data/mysql|g' /etc/my.cnf
4、更新 AppData 目录软链接(如存在):
sudo ln -sf /data/mysql /www/server/data/mysql
5、启动 MySQL:
sudo /etc/init.d/mysqld start










