ssh comando remoto-fu

2

Estou tentando fazer um backup remoto por trás de um firewall. Não há problema em dividir isso em seu próprio script que é chamado de crontab, mas isso não é nada 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 no stdout) e redirecioná-lo para um comando ssh remoto que simplesmente o coloca no backup.sql.

Infelizmente, tudo o que estou recebendo é um "backup.sql" vazio na minha caixa remota. Redirecionamento não é o meu ponto strong, então qualquer sugestão seria apreciada. obrigado.

    
por theman_on_osx 13.07.2009 / 17:26

2 respostas

8

tente

pg_dump -U my_user my_database | ssh me@myserver "cat > backup.sql"
    
por 13.07.2009 / 17:27
11

Melhor ainda: comprima antes do SSH:

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

Isso economiza muitos carregamentos de largura de banda com dumps SQL.

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

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

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

Preste especial atenção ao local onde estão as aspas - elas definem o que é executado no final remoto e o que é executado localmente.

    
por 13.07.2009 / 19:25

Tags