Day Cron
Diese Anleitung ist für alle Foren-Admins geeignet, die sich auf ihrem Webspace
Account bzw. Rootserver per SSH oder auch Telnet Protokoll einwählen können.
Was machen die hier vorgestellten Scripts?
Mit dieser Anleitung kann man zu regelmäßigen Zeitpunkten ein Backup der
Foren-Datenbank erstellen lassen. Die Backups werden direkt über die
Kommandozeile des Servers erstellt und sind somit von Timeouts und anderen
Problemen, die man von phpMyAdmin und Konsorten kennt, nicht betroffen.
Voraussetzungen:
- SSH/Telnet Zugriff auf den Webserver
- Recht zum Erstellen von Dateien auf dem Server und zum Ausführen von
Programmen
- Rechte zur Einrichtung eines CRON-Jobs
- Ein Programm für die Einwahl über SSH/Telnet auf dem Server. (z.B. Putty
oder SSH)
1) Erstellung eines Ziel-Verzeichnisses
Zuerst musst du ein Verzeichnis auf dem Server anlegen, in welches die Backups
erstellt werden sollen. Das könnte z.B. so geschehen:
code: |
1:
|
mkdir /var/backup/
|
|
2) Backup-Script erstellen
Für das Script benötigst du folgende Daten: Den Name der Datenbank, den Name
des DB-Benutzers und das zugehörige Passwort. In der Anleitung sind diese
Variablen GROß geschrieben - setze dort einfach deine Daten ein. Bitte beachte,
dass du die Leerzeichen korrekt setzt! (Wo kein Leerzeichen steht, mach auch
keines hin).
Falls du in Schritt 1 ein anderes Verzeichnis als /var/backup/ angelegt hast,
musst du im Script natürlich diesen anderen Verzeichnisnamen benutzen.
code: |
1:
2:
3:
4:
5:
|
#!/bin/sh
DATUM=`date '+%Y-%m-%d'`
mysqldump -uUSERNAME -pPASSWORT -hlocalhost --opt DBNAME > /var/backup/backup.sql
gzip -9 --best /var/backup/backup.sql
mv /var/backup/backup.sql.gz /var/backup/forumbackup-${DATUM}.sql.gz
|
|
Diesen Text musst du als einfache ASCII-Datei irgendwo auf dem Webserver
erzeugen, z.B. mit dem VI Editor:
code: |
1:
|
vi /var/backup/fbackup
|
|
Um in VI einen Text eingeben zu können, muss man mit "i" in den
Insert-Modus gehen. Mit "esc" verlässt man den Insert-Modus.
Abgespeichert wird die Datei mit der Zeichenkombination:
[ESC] --> [W] --> [Q] --> [ENTER]
3) Script ausführbar machen
Damit das Script später auch ausgeführt werden kann, müssen mit CHMOD die
entsprechenden Rechte gesetzt werden. (Diesen Vorgang kennen die meisten
vermutlich vom FTP-Programm her). Aus Sicherheitsgründen wird CHMOD so
angewendet, dass in Zukunft nur der Eigentümer der Datei (also du) die Datei
einsehen kann, damit das Passwort von Dritten nicht ausgelesen werden kann.
Das geht so:
code: |
1:
|
chmod 700 /var/backup/fbackup
|
|
4) Script testen
Das Script müsste nun schon funktionieren. Um einen Testlauf zu starten, gib
folgendes ein und bestätige jeweils mit ENTER:
code: |
1:
2:
|
cd /var/backup/
./fbackup
|
|
Je nach Größe der Datenbank und LEistung des Servers kann das nun eine Weile
dauern. Zuerst wird ein Dump erstellt, dann wird er mit GZip komprimiert.
Gib nach abschluss des Vorgangs einfach "l" (ein kleines L ist das!)
ein und drück ENTER. Es müsste nun eine Datei existieren, die den Namen "forumbackup-JJJJ-MM-TT.sql.gz"
trägt. (Heutiges Datum).
Wenn das funktioniert hat, kannst du zu Schritt 5 übergehen.
5) CRON-Job einrichten
Damit das Backup-Script regelmäßig ausgeführt wird, musst du einen CRON Job
erstellen. Das Cron Programm führt andere Programme zu geplanten Zeitpunkten
aus. Man kann das mit dem Windows-Taskplaner vergleichen - das wird mehreren
Leuten ein Begriff sein.
Um die CRON-Tabelle zu bearbeiten, gib folgendes Kommando in der Kommandozeile
ein:
Falls schon Einträge in dieser Datei vorhanden sind, dann bewege dich mit den
Cursor-Tasten in die letzte Zeile. Dann drücke [SHIFT]+A, um weitere Zeilen
einzufügen. Füge auf diese Weise folgenden Code hinzu:
code: |
1:
2:
|
# Forum Backup - jeden Tag um 3:00 Uhr
0 3 * * * /var/backup/fbackup
|
|
Auf diese Weise wird jeden Tag um 3:00 Uhr in der Früh das Backup-Script ausgeführt.
Das ist ein ganz günstiger Zeitpunkt, denn nachts ist meistens nicht so viel
los. Wenn du hier dennoch andere Werte wünschst, musst du die fünf
Zeit-Kommandos vor dem scriptnamen ändern.
Verlasse im Anschluss den VI Editor mit der folgendem Kombination:
[ESC] --> [W] --> [Q] --> [ENTER]
Fertig!
Um den Dump wieder in eine Datenbank zurückzuspielen musst du einfach eine
leere Datenbank erstellen bzw. eine vorhandene Datenbank leeren. Per GUnzip wird
der Dump entkomprimiert und das SQL File wieder eingelesen.
Das Restore geht also dann über die folgenden Befehle:
code: |
1:
2:
|
gunzip /var/backup/forumbackup-JJJJ-MM-TT.sql.gz
mysql -uBENUTZERNAME -pPASSWORT -hlocalhost DATANBANKNAME < /var/backup/forumbackup-JJJJ-MM-TT.sql
|
|
Achtung, das kann je nach Größe des Dumps wieder einige Zeit lang dauern, in
der das System so aussieht, als würde es hängen - tut es aber nicht.
Was gibt es noch zu beachten?
1) Es werden zwar Backups erstellt, aber nicht wieder gelöscht. Es macht also
Sinn, ab und zu mal ältere Backups zu löschen, um Speicherplatz zu sparen.
|