Monthly Archives: Juli 2009

WordPress Backup-Script [Update]

Heute habe ich endlich mal das Update von WordPress 2.8 auf Version 2.8.2 vollzogen. Zum Glück habe ich mir vorher ein Backup angelegt da beim ersten Versuch mit der Vollversion von 2.8.2 einige PHP Fehlermeldungen bei Wiederinbetriebnahme auftraten.

Erst das Inkrementelle Update von 2.8 auf 2.8.1 und anschließend von 2.8.1 auf 2.8.2 hat ohne Probleme geklappt. Um für das Backup nicht jedes mal alles nachzuschlagen habe ich alle Schritte in ein Bash-Script gepackt. Es erstellt ein Backup der WordPress Installation und der Datenbank. In einem zentralen Backup Verzeichnis wird für jede WordPress Version ein eigenes Unterverzeichnis erstellt in dem dann alle Backups dieser Version landen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
 
# author: Michael Prim
# date: 25.07.2009
# contact: www.mprim.de
 
# main webserver directory
APACHE=/var/www
# wordpress subfolder
WP=wordpress
# current WP version
VERSION=`grep Version $APACHE/$WP/liesmich.html | head -n 1 | awk '{print $3}' | sed 's/\r//g'`
# wp database
DBUSER=username
DBNAME=databasename
# backup destination
BACKUPMAINFOLDER=$HOME/BackupFolder
BACKUPVERSIONFOLDER=$BACKUPMAINFOLDER/$VERSION
BACKUP=$BACKUPVERSIONFOLDER
mkdir -pv $BACKUP
# timestamp every backup file will get
TIMESTAMP=$(date +"%Y%m%d-%H_%M")
# logfile
LOG=blog.backup_$TIMESTAMP.log
 
echo '--- backup blog files ---'
cd $APACHE
tar -czvf $BACKUP/blog.backup_$TIMESTAMP.tar.gz $WP &> $BACKUP/$LOG
 
echo '--- dump SQL database - password required ---'
cd $BACKUP
mysqldump --add-drop-table -u $DBUSER -p $DBNAME --lock-tables=false | bzip2 -c > blog.backup_$TIMESTAMP.sql.bz2

Die Werte für VERSION,APACHE,WP,DBUSER,DBNAME und BACKUPMAINFOLDER müssen natürlich noch an die eigene Umgebung angepasst werden.

Um bei der Wiederherstellung die Rechte der Ordner der WordPress Installation zu erhalten sollte das Backup mit der Option -p entpackt werden:

$ tar -xpzvf blog.backup_$TIMESTAMP.tar.gz

[Update]
Nachdem in kurzer Zeit noch die Updates auf 2.8.3 und 2.8.4 erschienen sind, habe ich das Script erweitert. Die aktuelle Version wird jeweils aus der liesmich.html ausgelesen. Diese liegt der deutschen WordPress Version und allen Updates bei.