SSH + Script de Backup Remoto do MysqlDump

2

Estou tentando emitir um comando mysqldump remoto, redirecionar o stdout para um arquivo dmp e, em seguida, ativá-lo.

Estou um pouco confuso sobre como fazer os bits de redirecionamento sobre o ssh:

ou seja,

ssh [email protected] mysqldump $dbname -u admin -p > dbdump.dmp && tar cvzf dbdump.tar.gz dbdump.dmp

Problemas:

1) Eu não estou fornecendo a senha porque quero que ela me avise. Um comando remoto ssh lidará com isso? 2) Qual é o problema com a sintaxe? Eu quero usar citações ou não? O que acontece com os redirecionamentos e pipes? Aqueles têm que ser escapados ou formatados de alguma forma especial.

    
por bundini 27.05.2010 / 22:20

2 respostas

2

Quando você se conecta a outro host, o SSH executa o comando especificado no lado do servidor (se não houver nenhum dado, ele inicia um shell), encaminhando todos os fluxos stdin / stdout / stderr. O comando ssh termina no > . Isso significa que a saída do comando mysql é redirecionada para o arquivo dbdump.dmp no lado do cliente . Então, ainda no lado do cliente, um arquivo tar é criado a partir desse arquivo.

Se você colocar toda a cadeia de comandos entre aspas, como a proposta por Dom, ela será executada completamente no lado remoto, assim você terá os arquivos em seu servidor.

Em teoria, a senha também deve funcionar (já que o fluxo de stdin não é redirecionado, mas acabou de ser passado), mas isso não aconteceu aqui.

Você pode colocar a senha no .my.cnf ( se você quiser segurança extra, crie um usuário extra apenas para o backup). Você também pode usar o login de chave pública para essa conta, para que funcione completamente sem a sua interação. / p>

BTW: Por que você cria um arquivo TAR do despejo? Se você só precisa da compressão, gzip ou algo assim é totalmente suficiente.

    
por 28.05.2010 / 00:28
1

Em qual computador você deseja que o tar seja executado? se estiver no servidor, você precisa citar toda a linha como: ssh [email protected] "mysqldump $dbname -u admin -p > dbdump.dmp && tar cvzf dbdump.tar.gz dbdump.dmp" Se você não fizer isso, acho que o fim da linha será executado localmente e não funcionará, já que você não tem o arquivo dbdump Para 1), não há problema. Se uma senha for necessária, ela será solicitada. [OIT] OOPS, eu dou uma olhada, você fala sobre a senha do MySQL, e não o SSH! Eu acho, no entanto, que será perguntado [EDIT2] Basta verificar e funciona com as aspas: primeiro a senha do SSH é perguntar, e depois, a senha do MySQL

    
por 27.05.2010 / 22:47