Hanfburgwiki:Backup

From Hanfburgwiki

(Difference between revisions)
Line 7: Line 7:
imgbase='http://editthis.info'
imgbase='http://editthis.info'
-
dir=`date +%y.%m.%d-%H.%M.%S`-articles
+
dir=`date +%y.%m.%d-%H.%M.%S`
mkdir $dir
mkdir $dir
cd $dir
cd $dir
Line 78: Line 78:
done
done
</nowiki></pre>
</nowiki></pre>
 +
 +
Das Script erstellt z.B. folgende Dateistruktur:
 +
 +
<pre><nowiki>
 +
08.05.04-15.55.54
 +
|-- articles-all.xml
 +
|-- articles-recent.xml
 +
|-- img
 +
|  |-- Bluete.jpg
 +
|  |-- Cannabis_male_flowers.JPG
 +
|  |-- Ebbeflut.jpg
 +
|  |-- Hanf.jpg
 +
|  |-- HanfburgWiki.png
 +
|  |-- Haschisch.jpg
 +
|  |-- Indica-sativa-leaves.jpg
 +
|  |-- Indica.jpg
 +
|  |-- Kelvin.png
 +
|  |-- Knospe.jpg
 +
|  |-- Lsr.jpg
 +
|  |-- Lsrspektrum.jpg
 +
|  |-- Marihuana.jpg
 +
|  |-- Natriumdampf-Lampe.gif
 +
|  |-- Ndlspektrum.jpg
 +
|  |-- Outdoor.jpg
 +
|  |-- Ruderalis.jpg
 +
|  `-- Sativa.jpg
 +
`-- pages.txt
 +
</nowiki></pre>
 +
 +
Die XML-Dateien werden mit der [[Special:Export|Seiten exportieren]] Funktion des Wikis generiert und können von Admins mit der [[Special:Import|Seiten importieren]] Funktion wieder importiert werden.
 +
 +
Die Bilder müssen einzeln mit der [[Special:Upload|Hochladen]] Funktion importiert werden, was aber auch automatisiert werden kann.
 +
 +
In der Datei pages.txt sind alle Artikel aufgelistet, die exportiert wurden, sortiert nach Namespace.

Revision as of 14:00, 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`
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

Das Script erstellt z.B. folgende Dateistruktur:

08.05.04-15.55.54
|-- articles-all.xml
|-- articles-recent.xml
|-- img
|   |-- Bluete.jpg
|   |-- Cannabis_male_flowers.JPG
|   |-- Ebbeflut.jpg
|   |-- Hanf.jpg
|   |-- HanfburgWiki.png
|   |-- Haschisch.jpg
|   |-- Indica-sativa-leaves.jpg
|   |-- Indica.jpg
|   |-- Kelvin.png
|   |-- Knospe.jpg
|   |-- Lsr.jpg
|   |-- Lsrspektrum.jpg
|   |-- Marihuana.jpg
|   |-- Natriumdampf-Lampe.gif
|   |-- Ndlspektrum.jpg
|   |-- Outdoor.jpg
|   |-- Ruderalis.jpg
|   `-- Sativa.jpg
`-- pages.txt

Die XML-Dateien werden mit der Seiten exportieren Funktion des Wikis generiert und können von Admins mit der Seiten importieren Funktion wieder importiert werden.

Die Bilder müssen einzeln mit der Hochladen Funktion importiert werden, was aber auch automatisiert werden kann.

In der Datei pages.txt sind alle Artikel aufgelistet, die exportiert wurden, sortiert nach Namespace.

Personal tools