De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: André Jaccon
Data de Publicação: 27 de Dezembro de 2004
Neste tutorial iremos mostrar um exemplo de como usar o rsync
e o OpenSSH
como ferramenta para sincronia de servidores.
A plataforma que estaremos usando como exemplo é a Gnu/Linux e a distribuição é a Debian Gnu/Linux 3.0 R2. O conteúdo a ser sincronizado será a pasta pública de um servidor Apache remoto.
Primeiramente iremos configurar o rsync
e o servidor openssh
em
nosso servidor, para isso verifique a presença dos pacotes com o comando:
# dpkg -l rsync ssh
caso a saída seja:
ii ssh
ii rsync
Isto significa que os pacotes estão atualmente instalados em seu servidor,
do contrário os pacotes poderão ser instalador com o comando apt-get
usando os mirror que contenha o pacote requisitado. Um exemplo é o:
$ deb http://security.debian.org/ stable/updates main
depois use:
$ apt-get update ; apt-get install rsync ssh
O segundo passo consiste em criar as chaves RSA de 1024 bits que irão implementar o sistema de segurança em nosso sistema sem a necessidade de autênticação manual.
Para isso usaremos o comando ssh-keygen
para gerar a chave
pública RSA:
# ssh-keygen -t rsa -b 1024
É importante lembrar que para gerarmos uma chave que
autêntique automaticamente devemos chamar o comando anterior
e teclar enter
em todas as questões feitas pelo ssh-keygen
não preenchendo nenhum campo.
Feito isso será criado um arquivos dentro da pasta .ssh
do
usuário com o nome id_rsa.pub.
Copie esta chave para o outro servidor:
# scp ~admin/.ssh/id_rsa.pub admin@servidor-remoto:~admin/.ssh/
depois copie o conteúdo da chave RSA para dentro do arquivo
authorized_key
remoto:
# ssh admin@servidor-remoto 'cat ~admin/.ssh/id_rsa.pub >> ~admin/.ssh/authorized_key'
Reinicie o servidor remoto caso não funcionar na primeira vez.
O terceiro passo consiste em verificar as permissões para que
o usuário admin
consiga autenticar e executar as tarefas de
cópia em nosso servidor.
Primeiramente sugiro que seja criado um usuário admin
e que
este usuário seja adicionado aos grupos dos quais os volumes
serão copiados.
Exemplo
# adduser admin, depois verifique as entradas de permissionamento em seu servidor para os volumes que serão sincronizados.
No exemplo a seguir, sincronizaremos todas as pastas públicas de um servidor
Apache remoto para nosso servidor copiando os arquivos para a pasta local
/WWW-BAK
. Para isso escreveremos um script que rodará na máquina local
com o seguinte conteúdo:
#!/bin/sh # DATA=``date +%d-%m-%Y`` INIT_TIME=``date +%H:%M`` END_TIME=``date +%H:%M`` echo "Iniciando backup do dia $DATA em: $INIT_TIME" > REPORT-$DATA.log rsync -Cravz --progress --partial --delete-excluded admin@servidor-remoto:/var/www /WWW-BAK echo "Finalizando o backup em: $END_TIME" >> REPORT-$DATA.log
Salve o script com o nome sincronia-apache.sh
na pasta
/root/admin/
Criaremos agora um rotina no crontab
que será executada todos os dias
as 0:00 horas. O script será executado e sincronizará nosso conteúdo remoto
do servidor Apache.
# crontab -e
0 0 * * * sh /root/admin/sincronia-apache.sh
Salve a rotina e saia do aplicativo.
Com isso você terá um sistema simples de sincronia segura de
conteúdo entre servidores usando a ferramenta rsync
e openssh
.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários