Hanfburgwiki:Backup
From Hanfburgwiki
(Difference between revisions)
| Line 75: | Line 75: | ||
src=`echo "$src" | cut -c -$(expr index "$src" '"' - 1)` | src=`echo "$src" | cut -c -$(expr index "$src" '"' - 1)` | ||
echo " $image" | echo " $image" | ||
| - | curl "$imgbase$src" >"$image" | + | curl "$imgbase$src" >"$image" 2>/dev/null |
done | done | ||
</nowiki></pre> | </nowiki></pre> | ||
Revision as of 13:51, 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'
imgbase='http://editthis.info'
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 versions
echo "getting articles: recent versions"
data="curonly=true&pages=$pages"
curl $base'/?title=Special:Export&action=submit' -d "$data" 2>/dev/null >articles-recent.xml
# all versions
echo "getting articles: all versions"
data="pages=$pages"
curl $base'/?title=Special:Export&action=submit' -d "$data" 2>/dev/null >articles-all.xml
# images
echo getting images
images=`echo "$pages" | grep '^Image:' | sed 's/Image://'`
mkdir img
cd img
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"
curl "$imgbase$src" >"$image" 2>/dev/null
done
