SSH-Remote-Befehl-fu

SSH-Remote-Befehl-fu

Ich versuche, ein Remote-Backup hinter einer Firewall durchzuführen. Es ist wirklich kein Problem, dies in ein eigenes Skript aufzuteilen, das in crontab aufgerufen wird, aber das macht keinen Spaß! Was ich versuche zu tun mit:

pg_dump -U my_user my_database | ssh me@myserver "> backup.sql"

besteht darin, eine PostgreSQL-Datenbank zu sichern (schreibt alles auf stdout) und diese auf einen Remote-SSH-Befehl umzuleiten, der sie einfach in backup.sql platziert.

Leider erhalte ich auf meiner Remote-Box nur eine leere „backup.sql“. Umleitungen sind nicht meine Stärke, daher bin ich für jeden Tipp dankbar. Danke.

Antwort1

versuchen

pg_dump -U my_user my_database | ssh me@myserver "cat > backup.sql"

Antwort2

Noch besser: Komprimieren Sie es, bevor Sie SSH verwenden:

pg_dump -U my_user my_database | gzip -c | ssh me@myserver "cat > backup.sql.gz"

Dies spart bei SQL-Dumps jede Menge Bandbreite.

Eigentlich mache ich es genau andersherum. Ich lasse den Backup-Server sich bei dem zu sichernden Server anmelden. Das bedeutet, dass, wenn ein Server (außer dem Backup-Server, der über eine wirklich faschistische Sicherheit verfügt) auf Root-Ebene kompromittiert wird, der Backup-Server - und damit alle anderen Server! - standardmäßig nicht kompromittiert wird.

Mein Befehl zum Ausführen des SQL-Dumps aus der Ferne ist daher etwas anders:

ssh <server> "pg_dump -U <user> <database> | gzip -c" > /backups/sqlbackup.sql.gz

Achten Sie besonders auf die Position der Anführungszeichen. Diese definieren, was am Remote-Ende und was lokal ausgeführt wird.

verwandte Informationen