[BASH] Unterschied zwischen Funktionen?

Hank Moody

Ficken & Schläge
Registriert
3 Aug. 2013
Beiträge
959
Hey Leute,

ich möchte das nutzen, um meine Datenbanken zu sichern.

Nun frage ich mich, auch wenn ich die Bash ganz gut beherrsche, wo hier der Unterschied zwischen den Funktionen besteht:

Funktion 1:
[src=bash]pg_dump -Fp -h "$HOSTNAME" -U "$USERNAME" "$DATABASE" | gzip > $FINAL_BACKUP_DIR"$DATABASE".sql.gz.in_progress[/src]

Funktion 2:
[src=bash]pg_dump -Fc -h "$HOSTNAME" -U "$USERNAME" "$DATABASE" -f $FINAL_BACKUP_DIR"$DATABASE".custom.in_progress[/src]

Soweit ich das erkennen kann, ist Funktion 2 nur dafür da, einen "custom" Dump anzulegen, der nicht gezipped ist, korrekt? Falls das so ist, sollte es doch problemlos möglich sein, die Funktion per Config abzuschalten und die bereits bestehenden *.custom-Files zu löschen, um Plattenplatz zu sparen?

Ergänzende Frage: wieso zur Hölle sind beide Funktionen im "Auslieferungszustand" eingeschaltet? Welchen Sinn soll das machen? :unknown:
 
@Hank Moody:
Jajein. Befehl 1 produziert dir eine SQL-Datei und zippt sie. Befehl 2 produziert dir eine custom-Datei, die zwar anscheinend schon irgendwie komprimiert ist, jedoch eine andere Ordnung enthält und dir mehr Möglichkeiten in der Umstrukturierung der Daten und Schemas gibt. Was das allerdings genau für dich bedeutet, ist mir unbekannt. Produziere doch mal beide Dateien und vergleich sie. Als reines Backup sollte dir der Befehl 1 eigentlich reichen.

Zu deiner abschließenden Frage: Keine Ahnung, frag den Paketbetreuer... Sieht für mich auch nicht wirklich sinnvoll aus.
 
  • Thread Starter Thread Starter
  • #3
Ja, das dachte ich mir schon, dass #1 als Backup ausreicht - ich war nur etwas irritiert, weil im PostgreSQL-Wiki eben beide Befehle per default aktiviert sind, sodass das Backup-Verzeichnis bei jedem Lauf mit zwei Files "zugemüllt" wird.

Der einzige Unterschied, den ich sehe, ist die "-c"-Option bei Befehl 2. Laut bedeutet das:

-c
--clean
Output commands to clean (drop) database objects prior to outputting the commands for creating them. (Unless --if-exists is also specified, restore might generate some harmless error messages, if any objects were not present in the destination database.)

This option is only meaningful for the plain-text format. For the archive formats, you can specify the option when you call pg_restore.

Kurz: ich kann mir das File sparen und zur Not beim Restore die Option nutzen. Somit ist die Sache hier geklärt, denke ich.

Falls noch jemand Einwände hat: gerne!
 
das kleine "c" ist Argument für das große "F" und meint nicht die option "-c" von pg_dump

Das custom format ist deutlich flexibler beim reimport als ein reines sql file, man muss nicht alles wiederherstellen, sondern kann auch nur einzelne Tabellen oder Schemas auswählen.
Bei größeren Datenmengen, die man nicht mehr "mal eben so" zurück spielen kann, würde ich das immer bevorzugen, weil wenn man doch mal nur eine Tabelle aus nem 50 GiB backup brauch ist es bei nem reinem sql dump ziemlich umständlich diese herauszufiltern.
Bei kleinen mengen, <= 1GiB, ists imho egal.
 
Zurück
Oben