tente
pg_dump -U my_user my_database | ssh me@myserver "cat > backup.sql"
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.
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.