
Eu apoio uma empresa com um site hospedado remotamente. Eles usam bancos de dados PostgreSQL.
Não consigo escrever scripts no servidor remoto e não quero armazenar nenhum arquivo de backup no servidor remoto, mas posso executar tarefas cron e tenho acesso à chave pública SSH do servidor remoto. Eu configurei um host Linux local para aceitar a chave privada do host remoto para autenticação.
Preciso criar um script de uma linha para fazer backup, compactar e copiar o arquivo de backup para minha caixa Linux local de forma síncrona.
Se minha caixa Linux local pudesse ser acessada via SSH na mylinuxbox.foo.com
porta 122 e o nome do meu banco de dados fosse mydatabase
, como seria esse comando de cron job de uma linha?
Responder1
Supondo que você esteja usando autenticação de identidade (ou .pgpass) para o banco de dados, provavelmente faria algo como o seguinte:
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
Editando para adicionar outra opção...
Se for realmente importante não ter armazenamento intermediário do arquivo de backup, você pode modificar o acima para ficar mais parecido com isto:
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 [email protected] "cat >mydatabase.backup.gz"