
Ich unterstütze ein Unternehmen mit einer remote gehosteten Website. Sie verwenden PostgreSQL-Datenbanken.
Ich kann auf dem Remote-Server keine Skripte schreiben und möchte auch keine Sicherungsdateien auf dem Remote-Server speichern, aber ich kann Cron-Jobs ausführen und habe Zugriff auf den öffentlichen SSH-Schlüssel des Remote-Servers. Ich habe einen lokalen Linux-Host so eingerichtet, dass er den privaten Schlüssel des Remote-Hosts zur Authentifizierung akzeptiert.
Ich muss ein einzeiliges Skript erstellen, um die Sicherungsdatei synchron zu sichern, zu komprimieren und per SCP auf meine lokale Linux-Box zu übertragen.
Wenn meine lokale Linux-Box per SSH über mylinuxbox.foo.com
Port 122 erreichbar wäre und der Name meiner Datenbank wäre mydatabase
, wie würde dieser einzeilige Cronjob-Befehl aussehen?
Antwort1
Vorausgesetzt, Sie verwenden eine Ident-Authentifizierung (oder eine .pgpass-Datei) für die Datenbank, würde ich wahrscheinlich etwa Folgendes tun:
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz [email protected]:; rm -f mydatabase.backup.gz
Bearbeiten, um eine weitere Option hinzuzufügen …
Wenn es wirklich wichtig ist, die Sicherungsdatei nicht zwischenzuspeichern, können Sie das Obige so ändern, dass es eher wie folgt aussieht:
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 [email protected] "cat >mydatabase.backup.gz"