如何比较两个 MediaWiki 站点
How to compare two MediaWiki sites
我们将一个私人 MediaWiki 站点移到了新服务器上。几个月后,我们发现一两个用户继续更新旧的 MediaWiki 站点。所以我们在旧服务器中有一些编辑需要复制到新服务器中。
有谁知道可以(方便地?)比较和识别旧站点中的编辑的例程或流程吗?
根据附加到此 post 的评论,如果该页面接受开始日期,“最近的更改”页面可能会起作用。不幸的是,它被限制为最多 30 天。在这种情况下,我需要审查12个月的变化。
确定已完成的编辑
识别并验证您的用户自分叉以来所做的编辑
使用数据库(假设 MySQL)并且没有 table 前缀
给我自 2018 年 12 月 1 日(包括该日期)以来完成的所有编辑:
SELECT rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp
FROM revision
WHERE rev_timestamp > '20181201';
请注意,实际页面文本存储在 text
table 中,页面名称存储在 page
table.
中
给我自 2018 年 12 月 1 日(包括该日期)以来完成的所有编辑以及页面名称和修订文本:
SELECT rev_id, rev_page, page_namespace, page_title, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp, old_text
FROM revision r
LEFT JOIN page p
ON p.page_id = r.rev_page
LEFT JOIN text t
ON t.old_id = r.rev_text_id
WHERE rev_timestamp > '20181201';
请注意,使用 MySQL Workbench 等工具,您可以将结果复制为 MySQL 插入语句。根据用户对旧 wiki 所做的操作,您可能只需要传输 3 tables 的记录;但是,如果涉及到文件上传、删除或用户权限更改,那就变得复杂了。您可以通过 logging table.
跟踪这些变化
使用网络界面
当然可以显示过去 30 天的变化,而不仅仅是 500 次。允许您配置它的设置是 $wgRCLinkLimits
and $wgRCLinkDays
。您也可以只打开最近更改页面,点击 30 天并更改 URL 参数,使 URL 变为 path/to/index.php?title=Special:RecentChanges&days=90&limit=1500
(过去 90 天内限制为 1500)。
最近更改历史记录保留的长度取决于 $wgRCMaxAge
。目前是 90 天,但如果清除作业尚未删除旧条目,您可能很幸运。
可以不受限制地查看日志。在您的 wiki 中访问 Special:Log
。
使用 API
list=allrevisions
列出所有页面修订(即更改)。
它允许指定开始时间戳 (arvstart) 和继续。
示例:https://commons.wikimedia.org/w/api.php?action=query&list=allrevisions&arvlimit=1000
要查看删除、用户权限更改、上传...使用 list=logevents
。
解决问题
要么使用数据库脚本(不要忘记之前备份),要么在源 wiki 中使用 Special:Export
,在需要更新的 Wiki 中使用 Special:Import
。
避免该问题
为了将来迁移到新服务器,$wgReadOnly
可能是你的朋友,首先通过将旧 wiki 设为只读来避免这个问题。
还有Extension:Sync,虽然我不确定它能做什么。
我们将一个私人 MediaWiki 站点移到了新服务器上。几个月后,我们发现一两个用户继续更新旧的 MediaWiki 站点。所以我们在旧服务器中有一些编辑需要复制到新服务器中。
有谁知道可以(方便地?)比较和识别旧站点中的编辑的例程或流程吗?
根据附加到此 post 的评论,如果该页面接受开始日期,“最近的更改”页面可能会起作用。不幸的是,它被限制为最多 30 天。在这种情况下,我需要审查12个月的变化。
确定已完成的编辑
识别并验证您的用户自分叉以来所做的编辑
使用数据库(假设 MySQL)并且没有 table 前缀
给我自 2018 年 12 月 1 日(包括该日期)以来完成的所有编辑:
SELECT rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp
FROM revision
WHERE rev_timestamp > '20181201';
请注意,实际页面文本存储在 text
table 中,页面名称存储在 page
table.
给我自 2018 年 12 月 1 日(包括该日期)以来完成的所有编辑以及页面名称和修订文本:
SELECT rev_id, rev_page, page_namespace, page_title, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp, old_text
FROM revision r
LEFT JOIN page p
ON p.page_id = r.rev_page
LEFT JOIN text t
ON t.old_id = r.rev_text_id
WHERE rev_timestamp > '20181201';
请注意,使用 MySQL Workbench 等工具,您可以将结果复制为 MySQL 插入语句。根据用户对旧 wiki 所做的操作,您可能只需要传输 3 tables 的记录;但是,如果涉及到文件上传、删除或用户权限更改,那就变得复杂了。您可以通过 logging table.
跟踪这些变化使用网络界面
当然可以显示过去 30 天的变化,而不仅仅是 500 次。允许您配置它的设置是 $wgRCLinkLimits
and $wgRCLinkDays
。您也可以只打开最近更改页面,点击 30 天并更改 URL 参数,使 URL 变为 path/to/index.php?title=Special:RecentChanges&days=90&limit=1500
(过去 90 天内限制为 1500)。
最近更改历史记录保留的长度取决于 $wgRCMaxAge
。目前是 90 天,但如果清除作业尚未删除旧条目,您可能很幸运。
可以不受限制地查看日志。在您的 wiki 中访问 Special:Log
。
使用 API
list=allrevisions
列出所有页面修订(即更改)。
它允许指定开始时间戳 (arvstart) 和继续。
示例:https://commons.wikimedia.org/w/api.php?action=query&list=allrevisions&arvlimit=1000
要查看删除、用户权限更改、上传...使用 list=logevents
。
解决问题
要么使用数据库脚本(不要忘记之前备份),要么在源 wiki 中使用 Special:Export
,在需要更新的 Wiki 中使用 Special:Import
。
避免该问题
为了将来迁移到新服务器,$wgReadOnly
可能是你的朋友,首先通过将旧 wiki 设为只读来避免这个问题。
还有Extension:Sync,虽然我不确定它能做什么。