Manual:Grabbers

This page describes a series of grabber scripts designed to get a wiki's content without direct database access. If you don't have a database dump or access to the database and you need to move/back up a wiki, the MediaWiki API provides access to get most all of what you need.

Appropriate access on the target wiki is required to get private or deleted data. This document was originally compiled and scripts assembled in order to move Uncyclopedia; because the overall goal was to just get the damn thing moved, 'pretty' was not exactly in our vocabulary when we were setting this up so some of it/them are still kind of a horrible mess.

Stuff to get
If you're moving an entire wiki, these are probably what you need to get. More information on the tables can found on Manual:database layout, but the secondary tables can be rebuilt based on these. Otherwise you probably know what you want.


 * Revisions: text, revision, page, page_restrictions, protected_titles, archive (most hosts will provide an xml dump of at least text, revision, and page tables, which add up to the bulk of a wiki)
 * Logs: logging
 * Interwiki: interwiki
 * Files (including deleted) and file data: image, oldimage, filearchive
 * Users: user, user_groups, user_properties, watchlist, ipblocks
 * Other stuff probably (this is just core; extensions often add other tables and stuff).

Scripts

 * php files should be in the repo on gerrit.
 * python files have been added to the mediawiki/tools/grabbers repo too.
 * java is MWDumper.
 * No ruby is involved. So far.

PHP scripts
These are maintenance scripts and output their grab straight into the wiki's database. To "install" them:
 * get MediaWiki core,
 * go to the install path of MediaWiki and create a  file containing just  ,
 * from the same path, download the scripts, e.g. with.

Those scripts require that you have sufficient privileges to create files on the directory from where you're executing them. That's because curl attempts to write a cookie file on the current directory, and failing to do so will result in a failed login attempt, without any other explanation of what's going on.

Python scripts

 * The python scripts will currently populate the ipblocks, user_groups, page_restrictions, and protected_titles tables.

It's recommended that you use python 2.7.2+. You will need to install oursql, and requests.

You need to edit  and set the site you want to import from, and your database information.

The easiest way to run everything is just  which executes all four individual scripts. You can also run each script individually if you choose (so you can run them concurrently).

Note: Autoblocks will not be imported since we do not have the data about which IP address is actually being blocked

Extension:MediaWikiAuth
Imports user accounts on login. Note that this requires the site you are copying from to still be active to use their authentication.

Affects user, user_properties, watchlist tables


 * Uses screenscraping as well as the API due to incomplete functionality.
 * Updates user ids in most other tables to match the imported id, though apparently not userid log_params for user creation entries

Other stuff
Not grabbers, but things to potentially worry about.


 * Configuration stuff - groups, namespaces, etc
 * Extensions
 * Extension stuff - abuse filter, ajaxpoll, checkuser, socialprofile, and others have their own tables and stuff
 * Secondary tables - the above grabber scripts generally just set the primary tables; secondary tables such as category, redirect, site_stats, etc can be rebuilt using other maintenance scripts included with MediaWiki, usually rebuildall.php.