Hanfburgwiki:Backup

From Hanfburgwiki

(Difference between revisions)
 
Line 1: Line 1:
-
Ein Backup des gesamten Wikis (Artikel, History, Bilder) lässt sich mit folgendem [http://de.wikipedia.org/wiki/Bash Bash]-Script anlegen:
+
__NOTOC__
 +
 
 +
Ein Backup des gesamten Wikis (Artikel, History, Bilder) lässt sich mit folgenden [http://de.wikipedia.org/wiki/Bash Bash]-Scripts anlegen:
 +
 
 +
=== backup-art.sh ===
 +
 
 +
Speichert nur Artikel und History.
<pre><nowiki>
<pre><nowiki>
Line 6: Line 12:
base='http://editthis.info/hanfburgwiki'
base='http://editthis.info/hanfburgwiki'
imgbase='http://editthis.info'
imgbase='http://editthis.info'
 +
namespaces="{0,1,2,3,4,5,6,12}"
 +
export http_proxy="http://127.0.0.1:8118" # TOR via Privoxy
-
dir=`date +%y.%m.%d-%H.%M.%S`
+
dir=`date +%y.%m.%d-%H.%M.%S`-art
mkdir $dir
mkdir $dir
cd $dir
cd $dir
-
function getPages {
+
pages="$(
-
# $1: namespace id
+
  curl "$base/Special:Allpages?namespace=$namespaces" | \\
-
  curl "$base/Special:Allpages?namespace=$1" 2>/dev/null | \\
+
   grep '<hr />' | \\
   grep '<hr />' | \\
-
   sed 's/.*<table style="background: inherit;" border="0" width="100%">\\(.*\\)<\\/table>.*/\\1/' | \\
+
   sed 's/.*<table style="background: inherit;" border="0" width="100%">\\(.*\\)<\\/table>.*/$
   sed 's/<\\/tr>//g' | \\
   sed 's/<\\/tr>//g' | \\
   sed 's/<\\/td>/<\\/td>\
   sed 's/<\\/td>/<\\/td>\
/g' | \\
/g' | \\
-
   sed 's/^.*title="\\(.*\\)".*$/\\1/g'
+
   sed 's/^.*title="\\(.*\\)".*$/\\1/g' | \\
-
}
+
  grep -v '^$'
-
 
+
-
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
echo "$pages" >pages.txt
-
# recent versions
 
-
 
-
echo "getting articles: recent versions"
 
data="curonly=true&pages=$pages"
data="curonly=true&pages=$pages"
-
curl $base'/?title=Special:Export&action=submit' -d "$data" 2>/dev/null >articles-recent.xml
+
curl $base'/?title=Special:Export&action=submit' -d "$data" >articles-recent.xml
-
# all versions
 
-
 
-
echo "getting articles: all versions"
 
data="pages=$pages"
data="pages=$pages"
-
curl $base'/?title=Special:Export&action=submit' -d "$data" 2>/dev/null >articles-all.xml
+
curl $base'/?title=Special:Export&action=submit' -d "$data" >articles-all.xml
 +
</nowiki></pre>
-
# images
+
=== backup-img.sh ===
-
echo getting images
+
Speichert nur Bilder o.a. Uploads.
-
images=`echo "$pages" | grep '^Image:' | sed 's/Image://'`
+
<pre><nowiki>
 +
#!/bin/bash
 +
 
 +
base='http://editthis.info/hanfburgwiki'
 +
imgbase='http://editthis.info'
 +
export http_proxy="http://127.0.0.1:8118" # TOR via Privoxy
 +
 
 +
dir=`date +%y.%m.%d-%H.%M.%S`-img
 +
mkdir $dir
 +
cd $dir
-
mkdir img
+
imgbase_e="$(echo "$imgbase" | sed 's/\\//\\\\\\//g')"
-
cd img
+
-
echo "$images" | while read image
+
curl $(
-
do
+
curl "$base/Special:Imagelist" \\
-
        image="`echo "$image" | sed 's/ /_/g'`"
+
| grep '>desc</a>' \\
-
        src=`curl "$base/Image:$image" 2>/dev/null | grep 'id="file"'`
+
| sed 's/^.*href="\\(\\/images\\/hanfburgwiki\\/[^"]*\\)">.*$/\\1/g' \\
-
        src=`echo "$src" | cut -c 56-`
+
| sed 's/^\\(.*\\)$/-O '"$imgbase_e"'\\1/g'
-
        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
+
</nowiki></pre>
</nowiki></pre>
-
Das Script erstellt z.B. folgende Dateistruktur:
+
=== Ergebnis ===
 +
Die Scripte erstellen z.B. folgende Dateistrukturen:
 +
 +
backup-art.sh:
<pre><nowiki>
<pre><nowiki>
-
08.05.04-15.55.54
+
08.05.12-13.11.00-art
|-- articles-all.xml
|-- articles-all.xml
|-- articles-recent.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
`-- pages.txt
 +
</nowiki></pre>
 +
 +
backup-img.sh:
 +
<pre><nowiki>
 +
08.05.12-14.00.00-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
</nowiki></pre>
</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 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.
In der Datei pages.txt sind alle Artikel aufgelistet, die exportiert wurden, sortiert nach Namespace.
 +
 +
Die Bilder müssen einzeln mit der [[Special:Upload|Hochladen]] Funktion importiert werden, was aber auch automatisiert werden kann.

Current revision as of 12:02, 12 May 2008


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

backup-art.sh

Speichert nur Artikel und History.

#!/bin/bash

base='http://editthis.info/hanfburgwiki'
imgbase='http://editthis.info'
namespaces="{0,1,2,3,4,5,6,12}"
export http_proxy="http://127.0.0.1:8118" # TOR via Privoxy

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

pages="$(
 curl "$base/Special:Allpages?namespace=$namespaces" | \\
  grep '<hr />' | \\
  sed 's/.*<table style="background: inherit;" border="0" width="100%">\\(.*\\)<\\/table>.*/$
  sed 's/<\\/tr>//g' | \\
  sed 's/<\\/td>/<\\/td>\
/g' | \\
  sed 's/^.*title="\\(.*\\)".*$/\\1/g' | \\
  grep -v '^$'
)"
echo "$pages" >pages.txt

data="curonly=true&pages=$pages"
curl $base'/?title=Special:Export&action=submit' -d "$data" >articles-recent.xml

data="pages=$pages"
curl $base'/?title=Special:Export&action=submit' -d "$data" >articles-all.xml

backup-img.sh

Speichert nur Bilder o.a. Uploads.

#!/bin/bash

base='http://editthis.info/hanfburgwiki'
imgbase='http://editthis.info'
export http_proxy="http://127.0.0.1:8118" # TOR via Privoxy

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

imgbase_e="$(echo "$imgbase" | sed 's/\\//\\\\\\//g')"

curl $(
 curl "$base/Special:Imagelist" \\
 | grep '>desc</a>' \\
 | sed 's/^.*href="\\(\\/images\\/hanfburgwiki\\/[^"]*\\)">.*$/\\1/g' \\
 | sed 's/^\\(.*\\)$/-O '"$imgbase_e"'\\1/g'
)

Ergebnis

Die Scripte erstellen z.B. folgende Dateistrukturen:

backup-art.sh:

08.05.12-13.11.00-art
|-- articles-all.xml
|-- articles-recent.xml
`-- pages.txt

backup-img.sh:

08.05.12-14.00.00-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

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.

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

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

Personal tools