Hanfburgwiki:Backup

From Hanfburgwiki

(Difference between revisions)

Revision as of 13:42, 4 May 2008

Ein Backup des gesamten Wikis (Artikel, History, Bilder) lässt sich mit folgendem Bash-Script anlegen:

#!/bin/bash

base='http://editthis.info/hanfburgwiki'

dir=`date +%y.%m.%d-%H.%M.%S`-articles
mkdir $dir
cd $dir

function getPages {
 # $1: namespace id
 curl "$base/Special:Allpages?namespace=$1" 2>/dev/null | \\
  grep '<hr />' | \\
  sed 's/.*<table style="background: inherit;" border="0" width="100%">\\(.*\\)<\\/table>.*/\\1/' | \\
  sed 's/<\\/tr>//g' | \\
  sed 's/<\\/td>/<\\/td>\
/g' | \\
  sed 's/^.*title="\\(.*\\)".*$/\\1/g'
}

echo collecting pages

pages="$(
 getPages  0 # main
 getPages  1 # talk
 getPages  2 # user
 getPages  3 # user talk
 getPages  4 # wiki
 getPages  5 # wiki talk
 getPages  6 # image
 getPages  7 # image talk
 getPages  8 # mediawiki
 getPages  9 # mediawiki talk
 getPages 10 # template
 getPages 11 # template talk
 getPages 12 # help
 getPages 13 # help talk
 getPages 14 # category
 getPages 15 # category talk
)"

pages=$(echo "$pages" | grep -v '^$')
echo "$pages" >pages.txt

# recent version

echo "getting articles: recent versions"
data="curonly=true&pages=$pages"
curl $base'/?title=Special:Export&action=submit' -d "$data" 2>/dev/null >HanfburgWiki.xml

# all revisions

echo "getting articles: all versions"
data="pages=$pages"
curl $base'/?title=Special:Export&action=submit' -d "$data" 2>/dev/null >HanfburgWiki.all.xml

# images

echo getting images

images=`echo "$pages" | grep '^Image:' | sed 's/Image://'`

echo "$images" | while read image
do
        image="`echo "$image" | sed 's/ /_/g'`"
        src=`curl "$base/Image:$image" 2>/dev/null | grep 'id="file"'`
        src=`echo "$src" | cut -c 56-`
        src=`echo "$src" | cut -c $(expr index "$src" '/')-`
        src=`echo "$src" | cut -c -$(expr index "$src" '"' - 1)`
        echo "    $image"
done
Personal tools