🛬 数据迁移

数据行囊

数据行囊(Artrans)是 Artalk 持久化数据保存规范格式。

Artran = Art + Ran (艺术 + 奔跑) 即“奔跑的艺术”(艺术性地跑路 Ran 为 Run 的过去式,代表已经润了。

Artran 格式样例

我们这样定义:每一条评论数据 (Object) 称为 Artran,多条评数据论组成一个 Artrans (Array)

{
    "id": "123", 
    "rid": "233", 
    "content": "Hello Artalk", 
    "ua": "ArtalkGo/6.6", 
    "ip": "233.233.233.233",
    "created_at": "2021-10-28 20:50:15 +0800 +0800", 
    "updated_at": "2021-10-28 20:50:15 +0800 +0800", 
    "is_collapsed": "false", 
    "is_pending": "false", 
    "vote_up": "666", 
    "vote_down": "0", 
    "nick": "qwqcode", 
    "email": "qwqcode@github.com", 
    "link": "https://qwqaq.com", 
    "password": "", 
    "badge_name": "管理员", 
    "badge_color": "#FF716D", 
    "page_key": "https://artalk.js.org/guide/transfer.html", 
    "page_title": "数据迁移", 
    "page_admin_only": "false", 
    "site_name": "Artalk",
    "site_urls": "http://localhost:3000/demo/,https://artalk.js.org"
}

我们称:一个 JSON 数组为 Artran s

数组里的每一个 Object 项目为 Artran (没有 s)

📥 迁入

转换工具

通过下方的工具,将其他格式的评论数据转换为 Artrans,然后导入 Artalk。在新窗口中打开open in new window

注:如果转换工具没有你的数据类型,下文有其他获得 Artrans 的方法可供参考。

如何导入 Artrans

转换为 .artrans 格式的评论数据文件可以导入 Artalk:

  • 前端导入:你可在「控制中心」找到「迁移」选项卡,然后根据提示进行导入 Artrans。
  • 命令行导入:执行 artalk-go import -h 查阅帮助文档。

获取源评论数据

Typecho

安装插件获取 Artrans

提供 Artrans 导出插件:

  1. 点击「这里open in new window」下载插件并「解压」到 Typecho 目录 /usr/plugins/
  2. 前往 Typecho 后台「控制台 - 插件」启用插件「ArtransExporter」。
  3. 前往「控制台 - 导出评论 (Artrans)」即可导出 Typecho 所有评论为 Artrans 格式。

直连数据库获取 Artrans

如果你的博客已闭站,但数据库还存在,可以使用我们提供的支持直连 Typecho 数据库的命令行工具。

下载 Artransfer-CLIopen in new window 压缩包解压后,执行:

./artransfer typecho \
    --db="mysql" \
    --host="localhost" \
    --port="3306" \
    --user="root" \
    --password="123456" \
    --name="typecho_数据库名"

执行后你将得到一份 Artrans 格式的文件:

> ls
typecho-20220424-202246.artrans

注:Artransfer-CLI 支持连接多种数据库,详情参考:@ArtalkJS/Artransfer-CLIopen in new window

WordPress

前往 WordPress 后台「工具 - 导出」勾选「所有内容」,导出文件即可使用转换工具进行转换。

Valine

前往 LeanCloud 后台open in new window 导出 JSON 格式的评论数据文件,然后使用转换工具进行转换。

Waline

如果你的 Waline 使用 LeanCloud 数据库,可以参考上面 Valine 的方法,它们格式相通,方法类似。

如果你的 Waline 是独立部署,并且连接的是本地数据库,可以 下载 Artransfer-CLIopen in new window,命令行执行:

./artransfer waline \
    --db="mysql" \
    --host="localhost" \
    --port="3306" \
    --user="root" \
    --password="123456" \
    --name="waline_数据库名" \
    --table-prefix="wl_"

你将得到一份 Artrans 格式的数据文件,然后导入 Artalk

注:Artransfer-CLI 支持连接多种数据库,详情参考:@ArtalkJS/Artransfer-CLIopen in new window

Disqus

前往 Disqus 后台open in new window,找到「Moderation - Export」点击导出,Disqus 会将 .gz 格式的压缩包发送到你的邮箱,解压之后可以得到 .xml 格式的数据文件,然后使用转换工具转为 Artrans。

Commento

你可在 Commento 后台导出 JSON 格式的数据文件,然后使用转换工具进行转换。

【图示,待补充...】

Twikoo

Twikooopen in new window 是一款基于腾讯云开发的评论系统,可以前往 腾讯云后台open in new window 导出 JSON 格式的评论数据,然后使用转换工具进行转换。

Artalk v1 (PHP 旧版后端)

Artalk v1open in new window 是 Artalk 的旧版后端,它使用 PHP 编写。新版后端我们全面转向 Golang,并重新设计了数据表结构,升级到新版需要通过转换工具进行转换。

旧版数据路径:/data/comments.data.json

命令行导入进阶操作

执行 artalk-go import -h 查看帮助文档。

./artalk-go import 数据类型 [参数...]

参数格式遵循 <key>:<value>

例如:

./artalk-go import 类型 t_name:"Site" t_url:"https://xx.com" json_file:"文件路径"

在前端导入时,同样可以手动输入可选参数,例如:

{
  "t_name": "Site",
  "t_url": "https://xx.com",
  "json_file": "服务器上的文件路径"
}

ArtalkGo 通用的启动参数:

参数类型说明
t_nameString导入站点名称
t_urlString导入站点 URL
json_fileStringJSON 数据文件路径
json_dataStringJSON 数据字符串内容

📦 备份

你可在前端界面的「控制中心」找到「迁移」选项卡,然后导出 Artrans 格式的评论数据。

命令行备份

导出:artalk-go export ./artrans

导入:artalk-go import ./artrans

高级玩法

执行 artalk-go export 可直接 “标准输出”,并进行 “管道” 或 “输出重定向” 等操作,例如:

artalk-go export | gzip -9 | ssh username@remote_ip "cat > ~/backup/artrans.gz"

写在结尾

目前已支持将 Typecho、WordPress、Valine、Waline、Disqus、Commento、Twikoo 等类型的数据转为 Artrans,但鉴于评论系统的多样性,虽然我们已经对上述类型数据做了适配,但仍然还有许多并未兼容。如果你恰巧正在使用未被适配的评论系统,你除了等待 Artalk 官方支持之外,还可以尝试了解 Artrans 数据格式后自主编写评论数据导入导出工具。如果你觉得自己的工具写得不错,我们十分乐意将其收录在内,让我们共同创造一个能够在不同评论系统之间自由切换的工具。