Backup de uma linha, compactar, arquivo de banco de dados scp

1

Eu apoio uma empresa com um site hospedado remotamente. Eles usam dbs do 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 agendadas 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.

Eu preciso fazer um script de uma linha para fazer backup, compactar e scp o arquivo de backup para minha caixa de Linux local de forma síncrona.

Se minha caixa linux local estivesse acessível via SSH em mylinuxbox.foo.com na porta 122 e o nome do meu banco de dados fosse mydatabase , como seria esse comando de tarefa cron do one-liner?

    
por Jeremy Holovacs 06.12.2013 / 14:01

1 resposta

3

Supondo que você esteja usando autenticação de ident (ou .pgpass) para o banco de dados, eu 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"
    
por 06.12.2013 / 14:28