- Windows-Version:
Auf der lokalen Seite müssen folgende Programme vorhanden sein:
– vacuumdb (aus der PostgreSQL-Installation)
– pg_dumpall (aus der PostgreSQL-Installation)
– zip (einfaches Archiviertool)
– Python-Installation ab Version 2.5
Zusätzlich muss die Umgebungsvariable „PATH“ entsprechend gesetzt sein.
Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen -> Path editieren und nach Eingabe eines Semikolons gewünschten Ordner hinzufügen.
Alternativ können die oben genannten Dateien (bis auf Python) auch einfach in den Ordner ‚C:\Windows\system32\‘ kopiert werden.
Wem das zu kompliziert ist, kann auch PostgreSQL installieren.
Der Quelltext muss noch an die Bedürfnisse des Benutzers angepasst werden (ziel_verzeichnis, REMOTEHOST, USER) und zum Schluss als Pythondatei (remote_sicherung.py) gespeichert werden.
Mit dem folgenden Eingabe in der Kommandozeile wird das Skript gestartet.
python remote_sicherung.py
Hier ist der Code:
#!/usr/bin/python
# remote_sicherung.py
# Remote-Sicherung fuer eine Postgres DB
# Johannes Sommer, Januar 2007
import os
import time
# Lokales Ziel definieren (Verzeichnis anpassen!)
ziel_verzeichnis = 'C:\\Sicherung\\'
# Datum des heutigen Tages ist der Name des Dumps / Archivs (siehe unten)
jetzt = time.strftime('%Y%m%d')
# Backup
dump = ziel_verzeichnis + jetzt + '.backup'
# DB VACUUM
vacuum = 'vacuumdb -h REMOTEHOST -U USER --all'
if os.system(vacuum) == 0:
print 'VACUUM erfolgreich'
else:
print 'VACUUM fehlgeschlagen.'
# Remote-Datenbank-Dump mit pg_dumpall (Host und User anpassen!)
dbsichern = 'pg_dumpall -h REMOTEHOST -U USER > %s' % (dump)
# DB-Dump ausfuehren
if os.system(dbsichern) == 0:
print 'Datenbank-Dump erfolgreich nach', dump
else:
print 'Datenbank-Dump fehlgeschlagen.'
# Zusammenfuegen
archiv = ziel_verzeichnis + jetzt + '.zip'
# zip-Befehl
zippen = 'zip -qr %s %s' % (archiv, dump)
# Sicherung starten;
if os.system(zippen) == 0:
# Dump loeschen
if os.system('del %s' % (dump)) == 0:
print 'Loesche Datenbank-Dump'
else:
print 'Loeschen des Datenbank-Dumps fehlgeschlagen'
print 'Sicherung erfolgreich nach', archiv
else:
print 'Sicherung fehlgeschlagen.'
- Linux-Version:
Auf der lokalen Seite müssen folgende Programme vorhanden sein:
– vacuumdb (aus der PostgreSQL-Installation)
– pg_dumpall (aus der PostgreSQL-Installation)
– tar (sollte in jeder Linuxdistribution dabei sein)
– Python-Installation ab Version 2.5
Zusätzlich muss die Umgebungsvariable „PATH“ entsprechend gesetzt sein. Im nachfolgenden Beispiel muss das Verzeichnis angepasst werden (hier liegen die Dateien ‚vacuumdb‘ und ‚pg_dumpall‘ in ‚/home/USER/bin‘).
export PATH=/home/USER/bin:$PATH
Wem das zu kompliziert ist, kann wie unter Windows auch PostgreSQL installieren.
Der Quelltext muss noch an die Bedürfnisse des Benutzers angepasst werden (ziel_verzeichnis, REMOTEHOST, USER) und zum Schluss als Pythondatei (remote_sicherung.py) gespeichert werden.
Mit dem folgenden Eingabe in der Kommandozeile wird das Skript gestartet.
python remote_sicherung.py
Hier ist der Code:
#!/usr/bin/python
# remote_sicherung.py
# Remote-Sicherung fuer eine Postgres DB
# Johannes Sommer, Januar 2007
import os
import time
# Lokales Ziel definieren (Verzeichnis anpassen!)
ziel_verzeichnis = '/home/USER/Sicherung/'
# Datum des heutigen Tages ist der Name des Dumps / Archivs (siehe unten)
jetzt = time.strftime('%Y%m%d')
# Backup
dump = ziel_verzeichnis + jetzt + '.backup'
# DB VACUUM, (Host und User anpassen!)
vacuum = 'vacuumdb -h REMOTEHOST -U USER --all'
if os.system(vacuum) == 0:
print 'VACUUM erfolgreich'
else:
print 'VACUUM fehlgeschlagen.'
# Remote-Datenbank-Dump mit pg_dumpall (Host und User anpassen!)
dbsichern = 'pg_dumpall -h REMOTEHOST -U USER > %s' % (dump)
# DB-Dump ausfuehren
if os.system(dbsichern) == 0:
print 'Datenbank-Dump erfolgreich nach', dump
else:
print 'Datenbank-Dump fehlgeschlagen.'
# Zusammenfuegen
archiv = ziel_verzeichnis + jetzt + '.tar'
# zip-Befehl
zippen = 'tar -cvf %s %s' % (archiv, dump)
# Sicherung starten;
if os.system(zippen) == 0:
# Dump loeschen
if os.system('del %s' % (dump)) == 0:
print 'Loesche Datenbank-Dump'
else:
print 'Loeschen des Datenbank-Dumps fehlgeschlagen'
print 'Sicherung erfolgreich nach', archiv
else:
print 'Sicherung fehlgeschlagen.'
