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.

 


Cleberson

Casado, pai de família, autodidata e amante de tecnologia. Especialista em PHP, MySQL e PostgreSQL, certificado em RedHat e formando em Gestão de TI.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *