Amtliche Schulverwaltung
Sie befinden sich hier: start » alle » technik » backup » cmd

Backup und Restore an der Kommandozeile (Windows) bzw. der Shell (Linux)

Die hier beschriebene Methode erscheint im ersten Moment etwas kryptisch, hat aber den großen Vorteil, dass die Befehle skriptbar sind. Damit ist zum Beispiel eine automatische, nächtliche Sicherung realisierbar. Das hier vorgestellte Batch-Skript für Windows und auch pgAdmin benutzen diese Befehle.

Windows

Passen die Dateipfade an Ihre Gegebenheiten an! Sie können die Exe-Datei auch aus einem Explorerfenster in das Fenster der Eingabeaufforderung ziehen, so vermeiden Sie Tippfehler und die bei Leerzeichen nötigen Anführungszeichen werden automatisch gesetzt.

Backup der Datenbank

c:\Programme\PostgreSQL\10\bin\pg_dump.exe -U asv -Fc --schema=asv --blobs -f 2021-07-15_asv.backup asv

Erläuterung:

  • pg_dump.exe ist das von postgreSQL mitgebrachte Tool zum Sichern von Datenbanken
  • -U asv: Aktion als Datenbankbenutzer asv durchführen
  • -Fc: Komprimiertes Format für die Datensicherung auswählen (c = compressed)
  • –schema=asv: Nur die Datenbankobjekte im Schema asv werden gesichert.
  • –blobs: Die BLOBs sind nicht im Schema asv und müssen deshalb extra inkludiert werden.
  • -f <Dateiname> Ausgabe in Datei (f = file)
  • asv Datenbank, die gesichert wird

Bei der Ausführung des Befehls fragt pg_dump nach dem Passwort des Datenbankbenutzers asv. Um einen solchen Aufruf in eine Backup-Skript zu übernehmen, ist es nötig, dieses Passwort zu hinterlegen. Legen Sie hierzu im Verzeichnis %APPDATA%\postgresql (%APPDATA% ist das Application Data Unterverzeichnis im Userprofil) des Windows-Benutzers, der das Backup durchführt die Datei pgpass.conf an.

Die Datei pgpass.conf hat den folgenden Inhalt:

hostname:port:database:username:password

Die ersten 4 Felder können auch mit einer Wildcard (*) belegt sein.

Beispiel:

localhost:*:asv:asv:supergeheim

pg_dump wertet diese Datei automatisch aus und übernimmt das Passwort.

(Siehe auch: http://www.postgresql.org/docs/10/static/libpq-pgpass.html)

Restore der Datenbank

c:\Programme\PostgreSQL\10\bin\psql.exe -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv

Erläuterung:

  • psql.exe ist das von postgreSQL mitgebrachte Tool zum Ausführen von SQL-Befehlen in einer Datenbank
  • -c …: SQL-Befehl, der ausgeführt werden soll
  • asv: Datenbank, in der der Befehl ausgeführt werden soll
  • asv: Datenbankbenutzer, mit dem der Befehl ausgeführt werden soll

Damit sind alle ASV-spezifischen Daten in der Datenbank gelöscht. Das Schema selbst ist aber wieder angelegt.

c:\Programme\PostgreSQL\10\bin\pg_restore.exe -d asv -U asv --schema=asv 2021-07-15_asv.backup

Erläuterung:

  • pg_restore.exe ist das von postgreSQL mitgebrachte Tool zum Wiederherstellen von Datenbanken
  • -d asv: Wiederherstellung in die Datenbank asv (d = database)
  • -U asv: Aktion als Datenbankbenutzer asv durchführen
  • –schema=asv: Nur die Objekte und Daten im Schema asv innerhalb der Datenbank asv wiederherstellen
  • <dateiname>: aus dieser Datei wiederherstellen

Löschen der Datenbank

Vorsicht! Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. Haben Sie ein Backup gemacht?

c:\Programme\PostgreSQL\10\bin\dropdb.exe -U postgres asv

Löschen des Datenbankbenutzers

Vorsicht! Der folgende Befehl löscht Ihren ASV-Datenbank-Benutzer. Dies sollten Sie nur machen, wenn Sie vorhaben, eine Neuinstallation der ASV durchzuführen!

c:\Programme\PostgreSQL\10\bin\dropuser.exe -i -U postgres asv

Linux

Zur Syntax der verwendeten Befehle rufen Sie pg_dump --help bzw. pg_restore --help oder die zugehörigen man-pages auf.

Backup der Datenbank

Komprimiertes Backup der Datenbank erzeugen:

pg_dump -h localhost -U asv -Fc --schema=asv --blobs -f <backup-name>.backup asv

Ein so erzeugtes Backup ist nachher auch mit pgAdmin wieder zurückspielbar (in diesem Fall ist die Dateiendung wichtig)

Unkomprimierten Dump der Datenbank erzeugen (als root):

pg_dump -h localhost -U asv --schema=asv --blobs -f <dump-name>.sql asv

Der so erzeugte Dump ist eine lesbare Textdatei, die SQL-Statements und die Daten enthält. Dieser ist nicht mit pgAdmin, sondern nur mit der unten genannten Methode wieder einspielbar.

Restore der Datenbank

Restore aus einem komprimierten Backup:

psql -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv
pg_restore -h localhost -d asv -U asv --schema=asv <backup-name>.backup

Restore aus einem unkomprimierten Dump:

psql -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv
psql -f <postgres_dump>.sql asv

Löschen der Datenbank

Vorsicht! Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. Haben Sie ein Backup gemacht?

dropdb -h localhost -U asv asv

Löschen des Datenbankbenutzers

Vorsicht! Der folgende Befehl löscht Ihren ASV-Datenbank-Benutzer. Diesen sollten Sie nur dann löschen, wenn Sie vorhaben, eine Neuinstallation der ASV durchzuführen!

dropuser -h localhost  -i -U postgres asv