Você pode usar esse one-liner útil, executado no lado local da conexão:
ssh user@remoteserver "mysqldump -h myhost -u myuser -pmypass mydb | gzip" > /path/to/my/dump.sql.gz
Em resumo, a saída gerada pelo comando mysqldump
SSH será canalizada para gzip
no lado remoto da conexão e, em seguida, redirecionada para stdout
, que é redirecionada para /path/to/my/dump.sql.gz
no seu NAS. Apenas os dados compactados serão enviados pela rede.
Você pode expandir isso ligeiramente executando o seguinte em um script (isso é equivalente ao que John especificou em sua resposta):
ssh user@remoteserver "mysqldump -h myhost -u myuser -pmypass -D mydb | gzip > /tmp/dump.sql.gz"
scp user@remoteserver:/tmp/dump.sql.gz /path/to/my/dump.sql.gz
ssh user@remoteserver "rm -f /tmp/dump.sql.gz"
Esta é uma abordagem um pouco mais demorada e irá descarregar / compactar todo o banco de dados primeiro, depois copiá-lo pela rede via scp
e, finalmente, remover a cópia remota.