Cron job: despejo e scp tar dump para o servidor remoto

1

Eu quero fazer um cron job que copie um banco de dados MySQL e tar s o dump com date | hour | minute e depois scp s para um servidor remoto.

0 */2 * * * mysqldump -uroot myBase>myBase.sql && tar -zcf /var/backups/myBase'-date +\%Y\%m\%d\%H\%M\%S'.tar.gz myBase.sql && ...

Agora estou perdendo a parte scp .

Eu não sei como obter o arquivo .tar.gz recém criado com seu sufixo de data / hora / minuto.

    
por thomas 18.09.2017 / 15:10

1 resposta

2

Não é necessário scp , basta compactar o arquivo e gravá-lo no caminho remoto seria o suficiente.

tar cvzf - /path/to/myBase.sql | ssh USER@HOST "dd of=/path/to/backups/myBase$(date +\%Y\%m\%d\%H\%M\%S).tar.gz"

O comando - telling tar para não criar o arquivo de saída, em vez disso, ele gravará as saídas no stdout. veja man tar .

Você também pode usar cat >/path/to/bsckups/... em vez de dd .

Mesmo você pode usar a opção rsync with -z , que compara o arquivo antes da transferência, mas ele será descompactado após a transferência no caminho remoto.

Ou você pode enviar diretamente para o caminho remoto se a compactação não for o problema.

mysqldump .... | ssh USER@HOST "dd ..."

Você também pode usar a opção -h de mysqldump como abaixo no servidor remoto (que é local agora) e fazer o dump do servidor local (que é o servidor remoto agora):

mysqldump -h HOSTNAME/IP ...  > /path/in/local
    
por sddgob 18.09.2017 / 16:08