- 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.'