Press "Enter" to skip to content

如何存档 DokuWiki 站点(第一届存档马拉松活动)

遇到问题,请给我们反馈

准备工作

Internet Archive

先去 IA 注册个帐号 https://archive.org/account/signup

然后到 https://archive.org/account/s3.php 生成并记下你 S3-Like API 的 access keysecret key

安装 Python 及 dokuWikiDumper

dokuWikiDumper 要求 Python 3.8+ ,如果你是 Windows 用户,随便在 Python 官网下个别太旧的版本就行。

装好 Python 后,运行 pip install dokuWikiDumper ,好了, dokuWikiDumper 装好了。(要不要在虚拟环境里装看你心情)(如果 pip 没安装,去装,网上有教程)

安装 p7zip-full (Linux)

  • 大部分 Linux 发行版应该都自带了基础的 p7zip ,dokuWikiUploader 用的 LZMA2 需要 p7zip-full。请安装 p7zip-full
  • 有些发行版没有 p7zip-full 包,装 p7zip 就行。

安装 7zip 并添加到环境变量(Windows)

  • 去 7-zip 官网下载 7-zip然后安装。
  • 安装后将安装目录添加到 PATH 环境变量里(一般为 C:\Program Files\7-Zip ),然后重开终端。

领取要存档的 DokuWiki

https://github.com/orgs/saveweb/projects/4/views/2 看看有哪些 DokuWiki 没有 Assignees (指派人),然后到对应的 issue 评论区里或者直接在 TG 群吼一声,说自己认领这个 DokuWiki 。(或者直接在 TG 群吼一声:“领个 DokuWiki”,然后我们把 url 发给你)

Update: 由于 GitHub Project 不方便编辑,DokuWiki 列表迁移到 Google Sheets: https://docs.google.com/spreadsheets/d/1iDlrcKR0rziuxFM0P7cK4Ct6-WkGytqzamh3LTqNyUE/edit

存存存

假如我们拿到了 http://wwwiki.top/ 这个 wiki 的任务。打开它,简单看看:

  1. 能不能注册帐号,可以的话试着注册然后登陆
  2. 它的 doku.php URL 是什么

    随便点些功能键,比如点登陆,发现登陆页的 URL 是 http://wwwiki.top/doku.php?id=前端技术记录&do=login&sectok= ,问号前面的 URL 就是 doku.php 的 URL,即:http://wwwiki.top/doku.php 。(但也不一定) doku.php 地址一般就以 doku.php 结尾,但有些网站会自定义 URL 重写配置,比如 DokuWiki 官方就用的 https://www.dokuwiki.org/dokuwiki 作为 doku.php 地址。 有些站的会把根目录设成 doku.php 的位置。

  3. 站点地图(条目索引)能不能打开

    比如 http://wwwiki.top/doku.php?id=前端技术记录&do=index ,看起来没毛病。

  4. 随便点开一个条目,点右侧边栏的编辑/显示源文件(或者 URL 里加上 do=edit 参数),看看游客模式下能不能看到源文件(wikitext)。

    比如 http://wwwiki.top/doku.php?id=前端技术记录&do=edit ,看起来没毛病。 如果看不到 wikitext ,试试登陆后能不能看到。 如果登陆后也看不到 wikitext ,不用太纠结,我们仍然可以保存渲染后的 HTML,把 URL 里的 &do=edit 换成 &do=export_html ,你应该会发现网站给了你一份这个条目干净的 HTML 渲染结果。

好,大概摸清了这个站的情况,咱开始存吧。

cd 到你想要的工作目录,命令行直接输入:

dokuWikiDumper <这个站的首页 URL> --auto

然后它就开始下载这个 wiki 了。

如果存档中过程出现问题,请反馈,不同网站的情况都不一样,有些需要特殊处理,有些需要放弃。
🙁


注: --auto 与使用以下参数等价

--content --media --html # 存 wikitext,存媒体文件,存渲染后的 HTML
--threads 5 # 开 5 个线程存
--ignore-action-disabled-edit # 如果网站不允许我们查看某个条目的 wikitext ,不报错退出,继续尝试下一个条目

注:常用参数:

--insecure # 禁用 SSL 验证
--username USERNAME # 登陆 DokuWIki 站点的帐号(为避免转义,最好不要用特殊字符)
--password PASSWORD # 登陆 DokuWIki 站点的密码(为避免转义,最好不要用特殊字符)
--cookies COOKIES # Cookies ,用法看 README

常见报错

  • requestsincompleteread。如果你挂梯,在梯子自动切换节点或者节点不稳定而丢包的时候会出现这个问题,重新运行出错的命令就行。
  • 存 content(wikitext) 时,报大量的 ignore 。一般是该网站不允许你查看 wikitext ,但如果对应条目允许查看 wikitext 还是报错,那可能是 dokuWIkiDumper 没有检测到正确的 doku.php URL,试试跑 dokuWIkiDumper <doku.php 的URL> --各种参数... 而不是首页的 URL 。
  • 始终在 Waiting for x threads to finish 。等,等不了就重跑,不影响。(如果你知道自己在干嘛,可以在重跑的时候用 –skip-to NUM 手动跳过已完成的进度)。如果重跑还是卡在同样的地方,反馈。
  • OSError: Unable to create file 。你用的应该是 Windows,大概是遇到 NTFS 不允许的特殊字符了。如果你不知道怎么解决,反馈。

检查

dokuWikiDumper 跑完了,它应该会在当前目录创建一个 <site>-<date> 格式的 wikidump 目录(如 wwwiki.top-20230416)。你可能不放心,可以依照目录结构检查一下 wikidump 正不正常。

上传到 Internet Archive

前置准备

创建一个 ia_keys.txt 文件(文件名随意)。把 IA S3-Like API 的 keys 放进去。第一行是 access key,第二行是 secret key

上传

运行:

dokuWikiUploader <wikidump 的目录> -kf <ia_keys.txt 的位置>

例如

dokuWikiUploader wwwiki.top-20230416/ -kf ia_keys.txt

然后就会自动打包,然后上传到 IA 了。

dokuWikiUploader 缺省的 ia_keys.txt 文件路径为 ~/.doku_uploader_ia_keys ,在这里设置后,不用每次都输 --kf 了。

上传完成后,命令行最后会输出个类似 https://archive.org/details/wiki-xxxxxx-20230000 的链接 (item link),这说明上传完成了。然后把这个 item link 发给我们,我们给您的马拉松成绩 +1 。 😀

可以登陆 archive.org 后点首页右上角的头像,在 My Uploads 里可以看到您以往上传的 items 。

常见报错

  • Your upload of xxxxx from username xxxxx appears to be spam. If you believe this is a mistake, contact info@archive.org and include this entire message in your email. 被 IA 的 Anti-SPAM 误杀了,不要急着联系 IA,先反馈给我们,我们统一反馈给 IA 。
发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注