Primeiro, você precisará configurar seu servidor ssh para que ele aceite as chaves RSA, em vez de uma frase secreta. Isso está documentado em outro lugar . Em seguida, você precisará configurar a conta que planeja usar para ter a chave DSA / RSA apropriada, o que permitirá que essa conta faça o login automático.
* ssh to the production server
Isso não é necessário. Você pode executar comandos diretamente no servidor remoto usando a opção -C
. Por exemplo, os próximos dois passos que você mencionou ...
* gzip our daily database dump file
* scp the gzipped dump file over to my computer
... seria semelhante a isto:
ssh [email protected] -C 'gzip dump > dump.gz'
scp [email protected]:/path/to/dump/dump.gz /path/to/destination/dump.gz
Coloque cada comando mencionado, juntamente com o restante dos comandos que você está digitando manualmente, em um único arquivo. Os comandos devem estar na mesma seqüência em que você normalmente os digitaria. Vamos chamá-lo de dump-script.sh
para este exemplo. Altere a propriedade e as permissões conforme necessário, para que o arquivo seja executado.
AVISO:
Existe uma possibilidade muito grande de perda de dados se você não executar a verificação de erros no seu script. Até você adicionar tratamento de erros ao script, não há garantias de que funcionará corretamente 100% do tempo. Com o comando para descartar seu banco de dados, é muito fácil sob o direito circunstâncias para perder todos os dados na máquina que está recebendo o dump. Você provavelmente desejará expandir e embelezar seu script para permitir a detecção de erros, de modo que ele apenas DROP DATABASE e importe os novos dados quando a transferência for bem-sucedida . Se você não estiver confortável com isso, não o execute nem crie as entradas crontab.
Depois de ter seu script depurado e você pode confirmar que ele manipulará erros corretamente, você pode adicioná-lo a uma programação cron regular. Enquanto estiver logado como a conta que você deseja usar, execute estas ações, digite:
crontab -e
.... o que deve te dar um editor. Crie uma entrada como esta:
# Nightly Database Dump, at Midnight
0 0 * * * /path/to/my/dump-script.sh
... digite :wq
nessa ordem e pressione enter (supondo que vi
seja seu editor de texto padrão).
Uma solução melhor:
Se você tem acesso de rede ao banco de dados PostgreSQL, por que não apenas descarregar o banco de dados pela rede usando uma conexão remota? Isso é muito mais limpo e pode ser combinado com um pouco de script para torná-lo um "canal" direto de dados de um para o outro.