comando remoto ssh-fu

comando remoto ssh-fu

Estou tentando fazer um backup remoto atrás de um firewall. Realmente não há problema em dividir isso em seu próprio script que é chamado no crontab, mas isso não é divertido! O que estou tentando fazer com:

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

é fazer backup de um banco de dados postgresql (despeja tudo em stdout) e redirecioná-lo para um comando ssh remoto que simplesmente o coloca em backup.sql.

Infelizmente, tudo que estou recebendo é um "backup.sql" vazio na minha caixa remota. Redirecionamento não é meu ponto forte, então qualquer dica será apreciada. obrigado.

Responder1

tentar

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

Responder2

Melhor ainda: compacte-o antes do SSH:

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

Isso economiza muita largura de banda com dumps SQL.

Na verdade, eu faço o contrário. Eu tenho o login do servidor de backup no servidor para fazer backup. Isso significa que se algum servidor (além do servidor de backup, que tem alguma segurança seriamente fascista) for comprometido no nível raiz, o servidor de backup - e, portanto, todos os outros servidores! - não fica comprometido por padrão.

Meu comando para fazer o dump SQL remotamente, portanto, é um pouco diferente:

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

Preste atenção especial onde estão as aspas - elas definem o que é executado remotamente e o que é executado localmente.

informação relacionada