- 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.
1 | python remote_sicherung.py |
Hier ist der Code:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #!/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.
1 | python remote_sicherung.py |
Hier ist der Code:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #!/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.' |