Quando temos servidores Linux podemos ter a necessidade de fazer frequêntes transferências de arquivos entre eles, seja por backup, seja por atualização de sites, documentos, etc. Uma das formas mais prática de se fazer é utilizando o RSync, que permite fazer a sincronização remota (ou até mesmo de diretórios locais) de forma rápida, com compactação da transferência e de forma segura quando utilizado com SSH.
Quando falamos de SSH temos em mente que temos que ter um usuário e senha para efetuar essa sincronização. Com senha fica um pouco mais dificil de automatizar o processo colocando no cron por exemplo já que teríamos que ficar digitando a senha.
A solução para isso seria gerar o par de chaves e exportar a chave pública para o computador remoto permitindo o rsync fazer seu trabalho sem a necessidade de ficar informando senha. Abaixo os passos necessários para gerarmos a chave e efetuarmos a sincronização.
Configurando as chaves
No servidor de origem, vamos gerar as chaves do SSH sem senha.
ssh-keygen -f ~/.ssh/id_rsa -q -P "" cat ~/.ssh/id_rsa.pub
Na primeira linha geramos a chave. O parâmetro -f define onde as chaves serão geradas, -q oculta mensagens mostrando apenas se houver erro, -P define a senha que nesse caso deixamos vazio.
Na segunda linha vamos mostrar a chave pública gerada que devemos copiar para colocar no servidor de destino. Acesse seu servidor de destino com usuário e senha e cole o conteúdo do arquivo id_rsa.pub dentro do arquivo authorized_keys que fica no diretório .ssh do usuário que você utilizará para fazer a sincronização.
Observação: Se não existir o arquivo authorized_keys, vamos criar com os passos abaixo
mkdir ~/.ssh chmod 0700 ~/.ssh touch ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys
Sincronizando os arquivos
Podemos fazer a sincronização de diretórios de forma recursiva atualizando todos os arquivos automaticamente.
rsync -avz -e "ssh" /storage/arquivos/ root@ip.do.servidor:/storage/arquivos/
O parâmetro -a indica que é archive, ou seja, é uma maneira de dizer que você quer recursão e que deseja preservar praticamente tudo. O parâmetro -v mostra os arquivos que estão sendo sincronizados e o -z ativa o modo de compressão. Se você estiver usando o SSH em uma porta diferente do padrão, basta adicionar o parâmetro -p seguido da porta dentro das aspas do ssh.
Funcionando, o comando poderá ser colocado dentro de um script e esse script poderá ser automatizado para fazer a sincronização de tempo em tempo.
Atente-se que arquivos que forem apagados na origem eles não serão apagados no destino. Dependendo da quantidade de arquivos que tiver na origem, a primeira sincronização poderá demorar, porém, a partir da segunda execução será praticamente instantânea já que serão copiados apenas novos arquivos e aqueles que sofreram algum tipo de alteração.
Lembrando que esse não é um backup, mas uma cópia dos arquivos. Esse recurso não substitui a forma normal de backup.
0 comentário