Ich hab mir mal Gedanken gemacht, wie ich automatisch eine Sicherheitskopie von meinem Blog erstellen kann. Dabei ist dieses Skript entstanden. Das Skript lässt sich an das in Python geschriebene twill-sh (auf Debian basierten Systemen ist es im Paket python-twill enthalten) verfüttern. Mit twill-sh ist es sehr leicht, irgendetwas über HTTP zu automatisieren. Da es so ziemlich die ganze Arbeit übernimmt (HTTP(S), Parsen der Seiten, Cookies, HTML-Formulare) und man es vorher interaktiv (Ich sollte vielleicht sagen, dass es ein Kommandozeilenprogramm ist …) testen kann.

setlocal url https://ypid.wordpress.com/wp-login.php	## change this
setlocal username YOUR_USER	## change this
setlocal password YOUR_PASSWORD	## change this

go $url
formvalue 1 user_login $username
formvalue 1 user_pass $password
submit
code 200

#go ./export.php
#follow "Daten exportieren"
#submit

	## change this
go "https://ypid.wordpress.com/wp-admin/export.php?download=true&content=all&cat=0&post_author=0&post_start_date=0&post_end_date=0&post_status=0&page_author=0&page_start_date=0&page_end_date=0&page_status=0&submit=Export-Datei+herunterladen"
code 200
save_html "ypid.wordpress.xml"

go ./wp-login.php?action=logout

Das Skript meldet sich bei WordPress an, lädt die „WordPress eXtended RSS“ Datei herunter und meldet sich wieder ab. Ich hab zuerst versucht das HTML-Formular zu benutzten, kam aber nicht ans Ziel. Also habe ich diese etwas längere URL genommen, die normalerweise mit dem Formular entstehen würde. Bei dem momentanen Umfang dieses Blogs dauert es 13,8 Sekunden, bis das Skript terminiert. Die XML-Datei ist zur Zeit 62,5 KB groß.

Ausgeführt wird das Skript bei mir mit:

twill-sh -q config/twill-wordpress-ypid
#mv ypid.wordpress.xml "data/ypid.wordpress/ypid.wordpress.`date --iso`.xml"

Das Ganze lässt sich dann auch über cron aufrufen (zum Beispiel täglich). Zudem kann man die Dateien noch mit einem Versionskontrollsystem (bei mir git) verwalten.