Discuz!X 3.x 转 XiunoBBS 4.x 工具正式发布 [更新:2018-04-18]

skiy 3月前 7326

几乎完全把所有XiunoBBS有的功能全部迁移过来了,折腾了好久~~~


其实有一些功能没必要再加的了,比如说 版主、版块icon、用户组 之类的。

但是想了想,我要做的是全量迁移,所以还是把这些功能也加上好了。。。

------------------------------------------------------------------------------------

转换小贴士:

注意填写 Discuz!X 和 XiunoBBS 的表前缀。

转换程序时,若非必要,建议使用官方用户组。

数据太大的论坛,建议在备份后,在本地迁移。

迁移附件时,需要填写 Discuz!X 和 XiunoBBS 的安装路径(绝对路径),所以记得提前记下这两个路径。

------------------------------------------------------------------------------------

说说有什么功能。

------------------------------------------------------------------------------------

1. 支持主题、帖子、用户、版块等主要功能迁移。

2. 支持 附件、头像、版块icon 迁移(xiuno和discuz同一台服务器下)。

3. 将 ubb 内容几乎完整地转换为 html,并迁移。

4. 支持完全的 Discuz!X 用户组迁移。

5. 支持置顶主题完全迁移。

6. 支持只迁移个别表数据。

……

涉及 9 张主要功能的表

------------------------------------------------------------------------------------

使用方法

1. 先建一个 xiuno4 论坛。 

   https://bbs.xiuno.com/thread-19749.htm 不要用 Gitee 的那个,那个是带插件的,可能会有插件导致登录不了。

2. 下载本程序(选择运行平台),Linux、MacOS 需要可执行权限。 

3. 执行命令:

./xiuno-tools

  并按提示进行操作即可,有些重要步骤需要进行二次确认。

(如果文件是直接通过FTP上传,可能没有相关权限,需要给它权限)

sudo chmod 777 xiuno-tools

4. 转换完成后,需要登录后台(此时使用 Discuz!X 上的管理员帐号和密码),到论坛后台更新一下缓存。


文件迁移(复制)功能需要两程序在同一台服务器下。

程序不会对 Disucz!X 源数据和源文件造成任何影响,不会删除你任何文件。

------------------------------------------------------------------------------------

MacOSLinux 服务器一样的使用方式。

Windows 的话,直接解压,双击就行。但是迁移文件这个我不太了解能不能迁移。

需要测试过才知道(我在Linux下开发的)。

------------------------------------------------------------------------------------

使用Go语言开发,支持 Windows、Linux、MacOS 三大平台。

已开源至GitHubhttps://github.com/skiy/xiuno-tools

给我点 Star ……

------------------------------------------------------------------------------------

如果转换过程中遇到问题,欢迎给我提 issue:https://github.com/skiy/xiuno-tools/issues

QQ: 869990770 (点击给我发消息)

微信: flydo228


最后,希望使用本程序转换成功的大家把自己论坛贴出来一下,并分享转换心得、流程,以使后面使用的朋友少填坑~~~

------------------------------------------------------------------------------------

更新日志:

「v 1.1.1」

1. 新增 是否使用官方用户组选项


「v 1.1.2」

1. 更新 迁移时,添加默认表前缀

2. 修复 ubb 代码中的 hide,free,qq 标签


「v 1.1.3」

1. 增加 支持虚拟主机方式(一个数据库同时安装Discuz!X和Xiuno)


------------------------------------------------------------------------------------

虚拟主机的使用方式

由于虚拟主机方式只能对数据库进行迁移,故无法对附件、头像和版块图标进行迁移。

附件需要手动进行迁移:将Discuz!X的 data/attachment/forum/ 下的全部内容复制到 Xiuno 下的 upload/attach/ 目录下即可。

无法直接复制迁移头像版块图标


方式一:线上转

1. 备份旧站:新建一个文件夹 old,将 Discuz!X 站点数据移动进来。

2. 安装新站:在网站根目录下安装XiunoBBS(数据库使用同一个数据库,与Discuz!X不同前缀)

3. 执行转换工具(xiuno-tools.exe)

2. 按照提示操作即可。


方式二:线下转

1. 布署PHP环境(建议使用wamp,phpstudy,xampp一键布署工具);

2. 通过 phpmyadmin 导入线上的数据库;

3. 下载 discuzx 线上源码;

4. 安装 XiunoBBS;

5. 执行转换工具(xiuno-tools.exe),按提示操作即可。 

------------------------------------------------------------------------------------

暂时没测试过大论坛迁移,所以不了解并发的情况。

Windows 下有并发问题。

------------------------------------------------------------------------------------

各位可以自己根据我整理的文档使用自己熟悉的语言来编写转换程序。

点此查看文档:https://github.com/skiy/xiuno-tools/tree/master/docs/dx3ToXn4


参考 http://dx.wesay.cc 与  http://xn.wesay.cc

------------------------------------------------------------------------------------

迁移成功案例:

(挺多人悄悄地转了,不告诉我!!!)

最后于 2月前 被skiy编辑 ,原因: 更新macOS版本
上传的附件:
最新回复 (80)
  • 艾力 3月前
    引用 2
    赞!
  • kkkk 3月前
    引用 3
    顶。早两年出世就好了哈哈
  • skiy 3月前
    引用 4
    kkkk 顶。早两年出世就好了哈哈
    两年前也有做啊,转xiuno3的
  • kkkk 3月前
    引用 5
    skiy 两年前也有做啊,转xiuno3的
    对哦,就是你做的。当时就用你的转了。再次道个谢。现在这个功能更全面了
  • skiy 3月前
    引用 6
    kkkk 对哦,就是你做的。当时就用你的转了。再次道个谢。现在这个功能更全面了

    不客气,编写过程中也巩固了下技能……

    之前附件,头像什么的都没法转,当时也一直在等xiuno4……谁知道难产两年ԅ(¯㉨¯ԅ)

  • sunjix5852 3月前
    引用 7
    顶起!
  • oliolo 3月前
    引用 8
    可以精华了
  • axiuno 3月前
    引用 9
    精华了。
  • 燃烧的冰 3月前
    引用 10
    NICE  大神厉害
  • 陌男 3月前
    引用 11
    向大佬学习!!!
  • 涟网导航 3月前
    引用 12
    厉害,期待window版的
  • hidao@hidao.org 3月前
    引用 13

    直接在服务器上操作???

    这种类型的建议还是先在本地转换完毕之后再上传回去,防止误操作导致数据库挂掉...

    最后于 3月前 被hidao@hidao.org编辑 ,原因:
  • crll 3月前
    引用 14
    win  只有xn3升级xn4么
  • skiy 3月前
    引用 15

    操作这事得看人。就算不是程序的问题,也有可能 rm -rf /


    各表都是可选操作,你可以update除post表外之后的,迁移完文件再update post,也可以什么表都不处理,迁移附件就好。


    放到服务器上主要是迁移附件,icon,头像。


    当然,数据库太大的建议在本地迁移。

    最后于 3月前 被skiy编辑 ,原因:
  • 452010152 3月前
    引用 16
    学习了
  • 香草大叔 3月前
    引用 17
    我好想吧我的论坛给转移过来,可是客户端怎么办啊?
  • 香草大叔 3月前
    引用 18
    我的  bbs.071031.com    行不行?
  • skiy 3月前
    引用 19
    香草大叔 我的 bbs.071031.com  行不行?

    可以的啊。你这个是dx3.4的,完全可行。

    最后于 3月前 被skiy编辑 ,原因:
  • skiy 3月前
    引用 20
    crll win 只有xn3升级xn4么
    抱歉,早上编译时,没把最新代码拉取下来就编译了。现在已经重新上传  Win  版本。
  • 香草大叔 3月前
    引用 21
    win  闪退
  • skiy 3月前
    引用 22
    恭喜楼上已迁移成功~~~
  • axiuno 3月前
    引用 23
    skiy 恭喜楼上已迁移成功~~~
    网址看看
  • skiy 3月前
    引用 24
    axiuno 网址看看
    https://bbs.071031.com  这个啊
  • 俊霖 3月前
    引用 25
    DZ原本的隐藏帖子转换过来是不是不隐藏了,还显示[/free] 
    [hide=100]链接:  http://pan.baidu.com/s/1sl021FmP  密码:  xxxy[/hide] 
  • 俊霖 3月前
    引用 26


  • skiy 3月前
    引用 27
    俊霖

    这是哪一步的?插入数据前,都理应truncate一次,不应该还存在数据才对。


    另外,xiuno这边没有隐藏帖子的功能,但是这标签应该要清理,它们都不是标准的 ubb 代码,而是DX自定义的,回头我修复一下。

    最后于 3月前 被skiy编辑 ,原因: up
  • dissss 3月前
    引用 28
    支持
  • plain 3月前
    引用 29

    回帖可见,和用QQ登录的用户,能正常使用吗?我的QQ登录的,还是用云平台的。,还不是在 open.qq.com后台申请的。

    最后于 3月前 被plain编辑 ,原因: 添加内容
  • hnxrkj 3月前
    引用 30
    用虚拟主机的怎么转呢!LIUNX也没有玩过,没有办法通过网页程序转吗!
  • skiy 3月前
    引用 31
    plain 回帖可见,和用QQ登录的用户,能正常使用吗?我的QQ登录的,还是用云平台的。,还不是在 open.qq.com后台申请的。
    1. 回帖可见功能,xiuno  主程序没有此功能。 
    2. QQ云平台属于"外挂"(插件),并不是官方主程序,所以不在转换的范围之内.而且,在xiuno这边也是属于插件类.
  • skiy 3月前
    引用 32
    hnxrkj 用虚拟主机的怎么转呢!LIUNX也没有玩过,没有办法通过网页程序转吗!
    不支持网页转, 
    你可以使用  Windows  版本,然后连接到线上  mysql  数据库,转换即可。建议在本地布署环境,转换后再放置线上。
  • dissss 2月前
    引用 33
    网页转得多蛋疼
  • 麦芽糖 2月前
    引用 34
    高手啊~~~~~~~~~~~~~~~~~
  • pangbuddy 2月前
    引用 35

    我的论坛数据比较多,会出这个问题


    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    导入数据失败(dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.)
    转换 bbs_thread 表成功,共(14302)条数据
    正在转换表: post
    2018/04/26 22:47:44 SELECT tid,pid,authorid,first,dateline,useip,message FROM pre_forum_post ORDER BY pid ASC dial tcp 127.0.0.1:3306: bind: An operation on a socket could not be performed because the
     system lacked sufficient buffer space or because a queue was full.
    C:\Users\hao\Downloads\xiuno-tools-v1.1.3-windows.tar\xiuno-tools-v1.1.3-windows>


  • pangbuddy 2月前
    引用 36
    pangbuddy 我的论坛数据比较多,会出这个问题导入数据失败(dial tcp 127.0.0.1:3306: bind: An&nbs ...

    我是在windows系统下使用的, 我在网上找到一个解决办法,有些治标不治本,  为了转数据已经折腾好几天了,希望版主可以把程序修改下, 多谢!


    http://www.codeweblog.com/%E7%A8%8B%E5%BA%8F%E7%BD%91%E7%BB%9C%E8%AE%BF%E9%97%AE%E5%87%BA%E9%94%99-lacked-sufficient-buffer-space/

  • 诚信助教 2月前
    引用 37
    gfdgfdgfd
  • skiy 2月前
    引用 38
    pangbuddy 我的论坛数据比较多,会出这个问题导入数据失败(dial tcp 127.0.0.1:3306: bind: An&nbs ...
    本地转的吗?
    它意思是说队列已经满了。
    Go的并发性太强了,你数据库还没来得及写入它就增加了。这个程序估计处理不了,除非加一下时间限制,但这样子影响性能了。
    Windows 下性能太低了,若是可以,你可以在 Linux 上转。一万多条应该没多大关系,我之前 xn3 升 xn4 200多万都可以搞。
    你可以先把其它的全部处理好,再转帖子。
  • pangbuddy 2月前
    引用 39
    skiy 本地转的吗? 它意思是说队列已经满了。 Go的并发性太强了,你数据库还没来得及写入它就增加了。这个程序估计处理不了,除非加一下时间限制,但这样子影响性能了。 Windows 下性能太低了,若是可 ...
    我是在自己电脑上用备份数据转的遇到这些问题, 听你说的我觉得可以在LINUX下试试,谢谢
  • skiy 2月前
    引用 40
    pangbuddy 我是在自己电脑上用备份数据转的遇到这些问题, 听你说的我觉得可以在LINUX下试试,谢谢
    你可以只在 linux 下只转 post 表,到时再合并也行。不过建议还是在 linux 下处理最好。Win 的性能不是一般的低。
  • pangbuddy 2月前
    引用 41
    skiy 你可以只在 linux 下只转 post 表,到时再合并也行。不过建议还是在 linux 下处理最好。Win 的性能不是一般的低。
    我本地的cygwin和服务器的BSD系统都不能运行那个linux的程序, 我倒不在乎性能,能成功就行, 暂时没办法了
  • skiy 2月前
    引用 42
    pangbuddy 我本地的cygwin和服务器的BSD系统都不能运行那个linux的程序, 我倒不在乎性能,能成功就行, 暂时没办法了
    BSD啊?我没机器编译。。。方便的话给我开个外网的 dx 数据库连接,
    或者备份 pre_forum_post 表给我,我帮你转也行。
  • axiuno 2月前
    引用 43
    可以在 linux 下转完以后再把数据导入过去。
  • pangbuddy 2月前
    引用 44
    skiy BSD啊?我没机器编译。。。方便的话给我开个外网的 dx 数据库连接, 或者备份 pre_forum_post 表给我,我帮你转也行。
    我觉得你这主意非常好, 等我把论坛在清理下, 麻烦你帮我转下post表
  • skiy 2月前
    引用 45
    你可以尝试下macos的,这货类bsd的。
  • pangbuddy 2月前
    引用 46
    skiy 你可以尝试下macos的,这货类bsd的。
    试过了, 不行, 不兼容
  • skiy 2月前
    引用 47
    pangbuddy 试过了, 不行, 不兼容
    那你处理好之后再放到你网站上面。我直接 wget 下来帮你转吧
  • pangbuddy 2月前
    引用 48

    对于转换程序在windows下运行出现的高并发堵塞问题, 我今天尝试了个一个办法居然通过了, 很简单就是在启动程序后, 先打开任务管理器,把xiuno-tools.exe运行优先级设置为最低, 并且把可用CPU线程设为一个, 然后在继续执行程序。 


    我试了几次, 虽然偶尔还是会有堵塞的错误,但却是少多了, 并且有几次会完全通过, 我的post表大概有30万的数据。



  • skiy 2月前
    引用 49
    pangbuddy 对于转换程序在windows下运行出现的高并发堵塞问题, 我今天尝试了个一个办法居然通过了, 很简单就是在启动程序后, 先打开任务管理器,把xiuno-tools.exe运行优先级设置为最低, 并且把 ...

    意思是说搞定了是吗?

    其实我对这个go的了解还是基础层面,还得继续学习

  • pangbuddy 2月前
    引用 50
    skiy pangbuddy 对于转换程序在windows下运行出现的高并发堵塞问题, 我今天尝试了个一个办法居然通过了, 很简单就是在启动程序后, 先打开任务管理器,把x ...
    我觉得自己应该可以搞定了, 有问题再来讨教, 多谢!
  • pxy4cc 2月前
    引用 51
    有个问题,转换后是不是门户部分就没了
  • skiy 2月前
    引用 52
    pxy4cc 有个问题,转换后是不是门户部分就没了
    是的。因为 xiuno 本来就只是论坛基础架构,其它的得自己扩展
  • 木对 2月前
    引用 53
    要注意的是:
    转换后,原DZ有伪静态的,也相应的改一下, 不然搜索引擎收录的DZ链接就访问不了。
    原dz的主题是thread-616-1-1.html这样的。而xiuno是thread-616.htm。

  • 1234_1527472995 1月前
    引用 54
    弄完就这样了   http://www.7zz.com/T/RBrBfA
  • 我的dz ucenter是独立安装的,用的不同的数据库和表名,转换的时候提示找不到ucenter的数据库。
    能否单独设置一下ucenter的数据库名称和表名?
  • skiy 1月前
    引用 56
    freemangl@gmail.com 我的dz ucenter是独立安装的,用的不同的数据库和表名,转换的时候提示找不到ucenter的数据库。 能否单独设置一下ucenter的数据库名称和表名?
    这样的话,得改源码.
    之前我有考虑到这个问题,只是后来决定不增加这个了.

    你可以将uc的表cp一份到dx的库下就好了.
  • @skiy  @axiuno
    @skiy  @axiuno  discuz中的附件图片没插入的转过来没有图。


    @skiy  @axiuno

    最后于 1月前 被新一(网站建设\电脑销售)编辑 ,原因:
  • @skiy  @axiuno  discuz中的附件图片没插入的转过来没有图。

  • memory 1月前
    引用 59
    100万的数据转换大概用了四个小时左右,很多的主题附件及图片没有转过来。
    discuz不处理邮箱相同的验证。可能会导致有些会员同步失败。另建议没过来的会员,对应的那些主题、回复就别转了
  • skiy 1月前
    引用 60
    新一(网站建设\电脑销售) @skiy  @axiuno  discuz中的附件图片没插入的转过来没有图。
    对.如果图片作为附件,没有插入的话,就不会显示...因为它只是附件.
  • skiy 1月前
    引用 61
    memory 100万的数据转换大概用了四个小时左右,很多的主题附件及图片没有转过来。 discuz不处理邮箱相同的验证。可能会导致有些会员同步失败。另建议没过来的会员,对应的那些主题、回复就别转了
    数据太大,并发有问题.
    代码还得再优化一下,不过暂时没有时间.
    邮箱相同的这个,本来有解决机制,但是最后还是放弃了.
    其实你可以将xiuno中email那个唯一索引去掉就好了.
  • skiy 对.如果图片作为附件,没有插入的话,就不会显示...因为它只是附件.
    也就是说附件无法转过来?这问题解决么
  • skiy 1月前
    引用 63

    测试下图片作为附件.

    上传的附件:
  • skiy 1月前
    引用 64
    新一(网站建设\电脑销售) 也就是说附件无法转过来?这问题解决么
    好像没办法...
    因为官网也是这样的.

    也不是说不行...要作特殊处理.我之前有尝试过解决方案.后来放弃了...
  • 打尝50元处理下吧
  • skiy 好像没办法... 因为官网也是这样的. 也不是说不行...要作特殊处理.我之前有尝试过解决方案.后来放弃了...
    打尝50元处理下吧
  • 赤诚。 1月前
    引用 67
    选择DZ转XN,输入各项信息之后

    packets.go:36: unexpected EOF

    这个怎么办~
  • 赤诚。 29天前
    引用 68
    请问一下远程附件该如何处理?
  • skiy 26天前
    引用 69
    赤诚。 选择DZ转XN,输入各项信息之后 packets.go:36: unexpected EOF 这个怎么办~
    什么版本的 dx?方便截图吗?
  • skiy 26天前
    引用 70
    赤诚。 请问一下远程附件该如何处理?
    远程的?你是虚机形式吗?
    附件需要手动进行迁移:将Discuz!X的 data/attachment/forum/ 下的全部内容复制到 Xiuno 下的 upload/attach/ 目录下即可。
  • 引用 71
    阿里云centos7,执行是乱码,有一样的么?
  • skiy 22天前
    引用 72
    we♭Moǘse☂ 阿里云centos7,执行是乱码,有一样的么?
    你在VNC下执行? 或者shell客户端不支持中文吧.如果在WIN下,建议用XShell转...
  • 引用 73
    谢谢
  • 引用 74
    转换过程中出现如下问题:
    1、文件迁移(复制)功能没有提示输入路径
    2、用户表出现2000多条错误:Duplicate entry 'test@test.com' for key 'email'
    3、论坛版块40多条数据只转换了13条,没有错误提示
    请问楼主有什么办法解决没?谢谢
  • 引用 75
    再补充点发现的问题:
    附件分了表的,如:pre_forum_attachment_X
    用户表优化了的,如:pre_common_member_archive
    都只转换了一张表
  • 引用 76
    对于在dz数据中内容是HTML代码的帖子,转换过来都不能正常显示,因为在DZ数据库中把HTML代码都转义了。
  • skiy 21天前
    引用 77
    we♭Moǘse☂ 转换过程中出现如下问题: 1、文件迁移(复制)功能没有提示输入路径 2、用户表出现2000多条错误:Duplicate entry 'test@test.com' for key 'email' ...
    不提示输入路径,应该是有个地方你选了 N.
    用户表中有同一个 email 的用户,你进 xiuno 去掉 bbs_user 表 email 字段的唯一性
    附件已经考虑到分表的问题了.
    没有使用到 pre_common_member_archive 这个表.
    程序自带了 bbcode 转 html 的功能了.正规的 bbcode 基本都有.
  • 引用 78
    skiy 不提示输入路径,应该是有个地方你选了 N. 用户表中有同一个 email 的用户,你进 xiuno 去掉 bbs_user 表 email 字段的唯一性 附件已经考虑到分表的问题了. 没有使用到 ...
    xiuno默认的bbs_user表的email字段就不是唯一的,我转换的数据email也都不是一样的
  • 阿郎 9天前
    引用 79
    Windows填写完按回车就闪退了,无法转换啊。求方法。
  • 阿郎 Windows填写完按回车就闪退了,无法转换啊。求方法。
    以管理员身份运行
  • 小鸡蛋 7天前
    引用 81
    韩国风格
返回
发新帖