如何从 MediaWiki 导出和导入图像?
6 回答
终端解决方案
MediaWiki 管理员在服务器端可以使用维护脚本框架执行维护任务。新的 Mediawiki 版本在下面描述的任务中运行所有标准脚本,但旧版本有一些错误或没有所有现代脚本:通过 . 检查版本号grep wgVersion includes/DefaultSettings.php
。
注意:所有引用的(下面)脚本也有--help
选项,例如php maintenance/importImages.php --help
原图文件夹
用户通过Special:Upload页面上传文件;管理员可以通过扩展白名单配置允许的文件类型。上传后,文件将存储在文件系统的文件夹中,缩略图存储在专用的缩略图目录中。
Mediawiki 的images
文件夹可以用zip -r ~/Mediafiles.zip images
命令压缩,但这个压缩包不太好:
有很多有害文件:“已删除文件”和“旧文件”(不是当前文件),文件名为
20160627184943!MyFig.png
.,缩略图为MyFig.png/120px-MyFig.jpg
.对于数据交换或长期保存的钱包,它是无效的......丑陋的
images/?/??/*
文件夹格式不适合,像往常一样“只有一个文件夹中的所有图像文件”。
图像导出/导入
对于在 MediaWiki 服务器终端的一个文件夹中“导出和导入”所有当前图像,有一个逐步的单一过程。
步骤 1:使用dumpUploads生成图像转储(在需要保存时使用--local
或--shared
选项),它会创建一个包含所有正在使用的图像文件名的txt列表。
mkdir /tmp/workingBackupMediaFiles
php maintenance/dumpUploads.php \
| sed 's~mwstore://local-backend/local-public~./images~' \
| xargs cp -t /tmp/workingBackupMediaFiles
zip -r ~/Mediafiles.zip /tmp/workingBackupMediaFiles
rm -r /tmp/workingBackupMediaFiles
Mediafiles.zip
该命令会在您的用户根目录 ( ~/
)中生成映像备份文件夹的标准 zip 文件。
注意:如果您不担心丑陋的文件夹结构,更直接的方法是
php maintenance/dumpUploads.php \
| sed 's~mwstore://local-backend/local-public~./images~' \
| zip ~/Mediafiles.zip -@
根据 Mediawiki 版本,该--base=./
选项可以正常工作,您可以删除sed
管道的命令。
第 2 步:需要备份?安装图像的副本?...您只需要Mediafiles.zip
,并且安装了 Mediawiki,没有内容...如果 Wiki 有内容,请检查文件名冲突 (!) 的问题。另一个问题是文件格式和权限的配置,在新 Wiki 中必须相同或更广泛,请参阅手册:配置文件上传。
第 3 步:使用维护工具恢复转储(到新的 Wiki)。假设您使用步骤 1 导出并保存在 zip 文件中,
unzip ~/Mediafiles.zip -d /tmp/workingBackupMediaFiles
php maintenance/importImages.php /tmp/workingBackupMediaFiles
rm -r /tmp/workingBackupMediaFiles
php maintenance/update.php
php maintenance/rebuildall.php
就这些。检查并浏览您的新 Wiki 的Special:NewFiles。
完全导出或保存
用于导出旧 MediaWiki 的“所有图像和所有文章”,以进行完整备份或内容保存。在每一步添加一些程序:
第 1 步: ...见上面第 1 步...并且,从旧 Wiki生成文本内容转储
php maintenance/dumpBackup.php --full | gzip > ~/dumpContent.xml.gz
注意:代替--full
您可以使用该 --current
选项。
第 2 步: ......你需要dumpContent.xml.zip
和Mediafiles.zip
......来自旧的 Wiki。假设您的~
文件夹中有两个 zip 文件。
第 3 步:在您的新 Wiki 中运行
unzip ~/Mediafiles.zip -d /tmp/workingBackupMediaFiles
gunzip -c ~/dumpContent.xml.gz
| php maintenance/importDump.php --no-updates \
--image-base-path=/tmp/workingBackupMediaFiles
rm -r /tmp/workingBackupMediaFiles
php maintenance/update.php
php maintenance/rebuildall.php
就这些。还要检查Special:AllPages的新 Wiki。
没有像导出页面那样自动导出图像的方法,您必须右键单击它们,然后选择“保存图像”。要获取 Image 页面的历史记录,请使用Special:Export页面。
要导入图像,请使用 wiki 上的Special:Upload页面。如果你有很多,你可以使用Import Images 脚本。注意:您通常必须在 sysop 组中才能上传图像。
- 全部导出:
您可以使用 [API] 从 MediaWiki 网络获取所有页面和所有图像,即使您不是网络的所有者(当然当所有者没有禁用此功能时):
步骤 1:使用 API 获取所有页面标题和所有图像 url。您可以编写一些代码来自动执行此操作。
第 2 步:接下来,您使用 [Special:Export] 导出所有带有您获得的标题的页面,并使用wget
来获取您拥有链接的所有图像(像这样wget -i img-list.txt
)。
- 全部导入:
第 1 步:使用 [Special:Import] 导入页面
第 2 步:使用 [Manual:ImportImages.php] 导入图像。
有一些海量上传工具可用。
Commonist - www.djini.de/software/commonist/
两者都在桌面上运行,并且可以配置为上传到您的本地 wiki(默认情况下,它们是为 Wikipedia 和 Wikimedia commons 配置的)。如果您害怕编辑 .jar 文件的内容,我建议您从 Commonplace 开始。
Mediawiki 本身存在另一个有用的扩展。
MultiUpload - http://www.mediawiki.org/wiki/Extension:MultiUpload
此扩展程序允许您将图像放在文件夹中并一次加载它们。如有必要,它支持每个文件的注释,并在完成后清理文件夹。不利的一面是,它需要在服务器端打开一个共享文件夹。
常见的-commons.wikimedia.org/wiki/Commons:Tools/Commonplace
曾经可用,但自2010 年 1 月 13 日起已弃用。
作为MediaWiki-Japi的提交者,我想指出:
对于将包含图像的页面从一个 wiki 推送到另一个MediaWiki-Japi的用例,现在具有命令行模式,请参阅 问题 49 - 启用带有页面传输选项的命令行界面
否则,您可以将MediaWiki-Api与您选择的语言一起使用,并使用您在PushPages.java中找到的功能
例如