如何迁移旧版 Discuz 论坛数据到新服务器不丢失附件?

文章导读
迁移旧版 Discuz 论坛数据到新服务器且不丢失附件,核心在于完整备份数据库与 attachment 目录,并正确修改配置文件中的数据库连接信息。适用于整站迁移或更换服务器场景,风险边界在于文件权限设置错误可能导致附件无法写入或读取。
📋 目录
  1. A 快速处理思路
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

迁移旧版 Discuz 论坛数据到新服务器且不丢失附件,核心在于完整备份数据库与 attachment 目录,并正确修改配置文件中的数据库连接信息。适用于整站迁移或更换服务器场景,风险边界在于文件权限设置错误可能导致附件无法写入或读取。

先说结论:Discuz 附件迁移依赖“数据库 + 文件”双重备份,单独迁移数据库会导致附件链接失效。

  • 适合:整站搬迁、更换服务器 IP 或域名变更场景。
  • 先准备:备份 MySQL 数据库文件、打包 attachment 目录、记录原数据库账号密码。
  • 验收:随机打开帖子检查图片显示、查看附件链接域名是否指向新服务器。

快速处理思路

若不具备命令行操作条件,可遵循以下文件级处理逻辑:

如何迁移旧版 Discuz 论坛数据到新服务器不丢失附件?
  1. 使用 phpMyAdmin 导出全站 SQL 文件。
  2. 通过 FTP 或文件管理器打包下载整个网站根目录。
  3. 在新服务器创建数据库并导入 SQL 文件。
  4. 上传网站文件至新根目录,修改 config 配置文件。
  5. 将 attachment 及 data 目录权限设置为可写。

为什么会这样

Discuz 将附件的索引信息存在数据库,实体文件存在服务器磁盘。只迁移数据库会导致论坛能访问但图片破裂,只迁移文件则无法匹配帖子内容。必须保证数据库中的附件路径记录与新服务器文件存储位置一致,否则系统无法定位资源。

分步处理

按照以下顺序操作可降低数据丢失风险:

如何迁移旧版 Discuz 论坛数据到新服务器不丢失附件?
  1. 备份数据库:登录原服务器 phpMyAdmin,选择论坛数据库,点击“导出”生成 SQL 文件。若数据量大,建议使用 Navicat 直接复制数据库。
  2. 备份附件文件:打包下载网站根目录,重点保留 attachment、data、uc_server、config 目录。
  3. 上传至新环境:将文件上传至新服务器网站根目录,创建新 MySQL 数据库并导入 SQL 文件。
  4. 修改配置文件:编辑 config/config_global.php 和 config/config_ucenter.php,更新 dbhost(数据库地址)、dbuser(用户名)、dbpw(密码)、dbname(数据库名)。
  5. 修正文件权限:对新服务器的 data、attachment、forumdata 目录执行权限修改,确保 Web 服务用户有写入权限。

怎么验证是否生效

完成迁移后需通过以下动作确认附件可用性:

  • 前台测试:随机打开含图片的旧帖子,确认图片能正常加载,无破裂图标。
  • 源码检查:查看页面源代码中图片 src 属性,确认路径指向新服务器域名或 IP。
  • 上传测试:尝试发布新帖并上传附件,确认新附件能成功写入并显示。
  • 后台验证:登录后台“站点设置”→“上传设置”,确认远程附件配置状态正常。

常见坑

  • 安装锁定文件:若重装过程受阻,检查并删除 data/install.lock 文件。
  • 配置文件未更新:迁移后仍连旧库,通常因 config_global.php 未修改导致。
  • 附件权限不足:新服务器附件目录权限若非可写状态,会导致新上传附件失败。
  • 远程附件未同步:若原站启用远程附件,需使用后台“远程附件管理”工具同步本地到远程。

常见问题

远程附件怎么迁移?

若原站使用远程存储,需在后台配置新远程服务,并使用“远程附件管理”工具同步本地附件到远程服务器。

如何迁移旧版 Discuz 论坛数据到新服务器不丢失附件?

更换域名需要改什么?

需在后台“全局”→“站点信息”更新新域名,并进入 UCenter 设置更新应用域名和通信密钥。

数据库导入失败怎么办?

检查 php.ini 中 upload_max_filesize 限制,若 SQL 文件过大需修改配置或使用命令行导入。

参考来源

  • Discuz 远程附件怎么迁移?附件搬家如何操作?
  • Discuz! BBS(论坛) 迁移方法_discuz 迁移-CSDN 博客
  • Discuz 网站搬家怎么操作?数据如何迁移?
  • Discuz 正确的网站搬家教程