去年,我使用 Mediawiki 搭建了一个 wiki 站点,用于团队知识积累。短短半年,已经有不少的沉淀,随着 wiki 越来越重要,它的数据安全性也必须考虑起来,因此我们准备把 wiki 迁移到 VM 上,并且考虑做好备份。迁移之前,数据备份的操作是件体力活,不过好在网上有不少的文章介绍如何操作, Mediawiki 官方也有专门的文章来介绍具体的操作过程以及需要注意的地方,详见Backing up a wiki

文章的最后还引用了一系列的备份脚本,这是我等懒人最喜欢的方法,越简单粗暴越好。看了其中的一个脚本(Backing up a wiki/Duesentrieb's backup script - MediaWiki),脚本的内容很简单,不过要想 run 起来,首先还得改动开头的几处配置,比较麻烦。

所以我自己 fork 了一个新的版本,通过命令行参数的形式提供配置,并且修复了脚本的几处 Bug,例如备份目录没有创建、输出信息中的转义字符串没有显示等等。

更改后的脚本可以从 Github 上下载:

# git clone https://github.com/dangoakachan/backup-mediawiki
# cd Backup-Mediawiki

使用方法可以参考脚本帮助:

# sh backup_mediawiki.sh
Usage: backup_mediawiki.sh <-n db_name> <-u db_user> <-p db_pwd> <-b backup_dir>
                     <-w wiki_install_dir> [-c charset] [-r readonly]

Options:
  -n  set the database your wiki stores data in.
  -u  set the database username.
  -p  set the database password.
  -b  set the directory to write the backup to.
  -w  set the directory mediawiki is installed in.
  -c  set the database charset, such as latin1, utf8, binary. Check your wiki's LocalSettings.php.
  -r  leave the wiki readonly when dump finished

使用例子:

# sh backup_mediawiki.sh -n my_wiki -u root -p 123456 -b ./bak_wiki -w /var/www/my_wiki       # backup mediawiki here

脚本完成后,所有信息备份在./bak_wiki 目录下。