Backup de uma linha, compactação, arquivo de banco de dados scp

Backup de uma linha, compactação, arquivo de banco de dados scp

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.comporta 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"

informação relacionada