Você está na página 1de 9

HOWTO RSYNC

O rsync é um grande aliado na hora de fazer backups ou quando é necessário


sincronizar duas pastas com um grande volume de arquivos. Ele permite sincronizar o
conteúdo de duas pastas, transferindo apenas as modificações. Ele não trabalha apenas
comparando arquivo por arquivo, mas também comparando o conteúdo de cada um. Se
apenas uma pequena parte do arquivo foi alterada, o rsync transferirá apenas ela, sem copiar
novamente todo o arquivo.
Ele é uma forma simples de fazer backups incrementais de grandes quantidades de
arquivos, ou mesmo partições inteiras, mantendo uma única cópia atualizada de tudo em um
HD externo ou num servidor remoto. Este backup incremental pode ser atualizado todo dia e
complementado por um backup completo (para o caso de um desastre acontecer), feito uma
vez por semana ou uma vez por mês.
Outro grande benefício é que o rsync preserva as informações sobre permissões e
propriedade dos arquivos e diretórios, inclusive de links simbólicos.

Instalando o rsync
Rsync é quase que um pacote default em todas as distribuições. Aquelas que não o
instalam numa instalação do tipo básica, com certeza possuem o pacote em algum lugar em
seus CDs de instalação. Consulte os mesmos para maiores informações.
Como utilizo a distribuição Debian, a instalação do mesmo se faz com apenas um
comando:
# apt-get install rsync
ou
#aptitude install rsync
Somente para confirmar se seu rsync está funcionando normalmente, digite na linha
de comando:
# rsync
Caso apareçam informações de help do rsync é porque foi instalado corretamente.

Configurando o arquivo de backup


Iremos adotar as configurações aplicadas nos Servidores da UNIRG. Deste modo,
teremos uma maquina que funcionará como CLIENTE (que será o que ira armazenar os
arquivos de backup), e os SERVIDORES (os quais irão conter os arquivos que queremos
realizar os backup bem como o sincronismo).
IP Cliente – 189.16.42.228
IP Servidor – 200.199.229.166

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
Antes de começar as configurações, crie 2 usuários, tanto no cliente como no
servidor:
#adduser www
#adduser BD

SERVIDOR
Vamos configurar o servidor WEB para os arquivos da pasta domínio, é ele que
disponibilizará os arquivos de backup. Como nosso servidor WEB roda FREEBSD o arquivo
de configuração do rsync se encontra em “/usr/local/etc”, assim vamos criar o arquivo:
# touch /usr/local/etc/rsync.conf
#vi /usr/local/etc/rsyncd.conf
##### /etc/rsyncd.conf #####
# rsyncd.conf
#

# arquivo que mantém o pid do daemon


pid file = /var/run/rsyncd.pid

# Usuario sob o qual o rsync ira rodar.


uid = www
# Grupo sob o qual o rsync ira rodar.
gid = www
# habilita o uso do change root o que dá um nível mais
#alto de segurança a cópia do arquivo que está sendo executada
use chroot = no

max connections = 7
syslog facility = local5
hosts allow = 189.16.42.228 127.0.0.1/255.255.255.0

# Transferência dos arquivos de dominio


[www]
path = /web/dominios
comment = Servidor WEB
read only = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

#Transferência da base de Dados MySQL


#um script será criado para fazer a compactação
# da base de dados (/home/Josias/mysqlbkp.sh)
[BD]
path = /home/josias/mysql
comment = Base Mysql WEB
read only = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

####### FIM DE /etc/rsyncd.conf #######

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
Deve-se habilitar o deamon do rsync, para isso Habilite o rsync no arquivo
/etc/default/rsync
RSYNC_ENABLE = true
RSYBC_CONFIG_FILE=/etc/rsyncd.conf

Rode o rsync:
# /etc/rc.d/rsync restart
Como o servidor WEB trabalha com uma base de dados MySQL para atender a
necessidade de alguns domínio “unirg.edu.br”, um script será criado para realizar a
compactação da base.
Crie um arquivo dentro da pasta /home/josias:
# touch /home/josias/mysqlbkp.sh
#vi /home/josias/mysqlbkp.sh
#!/bin/sh
#

NOW="$(date +"%d-%m-%Y")"

/usr/local/bin/mysqldump -u backupmysql -pbackup@unirg2010 -x -e -A >


/home/josias/mysql/formosomysql-$NOW.sql

tar -zcvf /home/josias/mysql/formosomysql-$NOW.tar.gz /home/josias/mysql/formosomysql-


$NOW.sql

rm -rf /home/josias/mysql/formosomysql-$NOW.sql

find /home/josias/mysql -atime +20 -exec rm -f {} \;

Agora vamos agendar a execução do script, adicione a seguinte linha no cron:


#crontab -e
9 0 * * * /home/josias/mysqlbkp.sh

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
CLIENTE
Depois de configurar o servidor que disponibilizará os arquivos para backup, será
configurado o Cliente onde ficaram os arquivos de backup.
Instale o rsync:
# aptitude install rsync
Crie um diretório onde ficaram os script para realizar o sincronismo, pode ser em
qualquer pasta ou até mesmo em outra partição. No nosso caso colocamos um HD slave
somente para receber os arquivos de backup:
# mkdir /mnt/slave/Backup/script/
Crie um arquivo de script para sincronizar o rsync,
#touch /mnt/slave/Backup/script/rsync
No arquivo abaixo, será utilizado o seguinte parâmetro com o rsync para que ele
realize a cópia: -Cravzp. Dessa forma, o rsync está sendo acionado para:

-C auto-ignorar arquivos idênticos

copier de forma recursive, ou seja todos os diretórios e


-r
subdiretórios no caminho especificado

-a indica que estarão sendo copiados arquivos

-v modo verboso, mais informações da cópia

-z comprime os arquivos durante a cópia

-p indicador de progresso de cópia

Edite o arquivo
# vim /mnt/slave/Backup/script/rsync
###### script de sincronismo #######

1 2 3 4 5 6
rsync -vaz --progress 200.199.229.166::www /mnt/slave/Backup/web >> /mnt/slave/Backup/web/rsync.log

##### FIM ######


1. parâmetros: v – verbose, a – copia de arquivos, z – compressão;
2. indicador de progresso para o usuário acompanhar o processo de transferência;
3. IP do Cliente remoto;
4. Usuário de acesso ao cliente;
5. pasta onde serão copiados os backup;
6. log de transferências.

Reinicie o serviço rsyncd


Elio Victorino da Silva Junior
Analista de Sistema - UNIRG
# /etc/init.d/rsync restart

Depois disso basta editar o cron para agendar os sincronismos.


#crontab –e
9 0 * * * sh /mnt/slave/Backup/script/rsync
Pronto, tanto o Servidor como o Cliente estão configurados, para testar basta rodar o
script do Cliente, pode demorar alguns minutos:
#cd /mnt/slave/Backup/script/
#sh rsync

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
CONFIGURAÇÃO COMPLETA
CLIENTE
Pasta de backup's e script´s (as pastas dever ser criadas pelo comandao mkdir)
A pasta onde ficará os backup´s:
#mkdir /mnt/slave/Backup/

Teremos que criar as seguintes pastas:


• BD_Prefeitura - rsync_BD_prefeitura
• BD_web - rsync_BD_web
• biblioteca - rsync_biblioteca
• mssql -
• script
• web - rsync
• web_prefeitura - rsync_prefeitura
• zipado

A pasta onde ficarão os script´s:


#mkdir /mnt/slave/Backup/script

Os arquivos de configuração de sincronismo serão:


• bibdiario.sh – bkp diário da bibioteca
NOW="$(date +"%d-%m-%Y")"

/bin/tar -zcf /mnt/slave/Backup/zipado/biblioteca-$NOW.tar.gz /mnt/slave/Backup/biblioteca/

#find /servidor/mysql -atime +20 -exec rm -f {} \;

• rsync_BD_prefeitura – servidor prefeitura


rsync -vaz --progress 200.199.229.170::BD /mnt/slave/Backup/BD_Prefeitura >>
/mnt/slave/Backup/BD_Prefeitura/rsync.log

• rsyncdif – diferencial da base de dados UNIRG


rsync -vaz --progress 201.88.201.74::BDIF /mnt/slave/Backup/mssql/bkp_dif/ >>
/mnt/slave/Backup/mssql/bkp_dif/rsync.log

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
• webfordiario.sh – compacta a pasta web
#!/bin/sh
#

NOW="$(date +"%d-%m-%Y")"

/bin/tar -zcf /mnt/slave/Backup/zipado/webformoso-$NOW.tar.gz /mnt/slave/Backup/web/

#find /servidor/mysql -atime +20 -exec rm -f {} \;

• prefdiario.sh – bkp diário da prefeitura


#!/bin/sh
#script developed By Josias Pereira em 09/11/2010
#

NOW="$(date +"%d-%m-%Y")"

/bin/tar -zcf /mnt/slave/Backup/zipado/web_prefeitura-$NOW.tar.gz


/mnt/slave/Backup/web_prefeitura/

#find /servidor/mysql -atime +20 -exec rm -f {} \;

• rsync_BD_web – base MySQL Web


rsync -vaz --progress 200.199.229.166::BD /mnt/slave/Backup/BD_web >>
/mnt/slave/Backup/BD_web/rsync.log

• rsyncfull - base de dados Full da UNIRG


rsync -vaz --progress 201.88.201.74::BDFULL /mnt/slave/Backup/mssql/bkp_full/ >>
/mnt/slave/Backup/mssql/bkp_full/rsync.log

• rsync_biblioteca – biblioteca Elísio


rsync -vaz --progress 200.199.229.163::www /mnt/slave/Backup/biblioteca >>
/mnt/slave/Backup/biblioteca/rsync.log

• rsync_prefeitura - full prefeitura


rsync -vaz --progress 200.199.229.170::www /mnt/slave/Backup/web_prefeitura >>
/mnt/slave/Backup/web_prefeitura/rsync.log

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
Configuração do CRONTAB no Cliente
# crontab -e
# m h dom mon dow command

9 0 * * * sh /mnt/slave/Backup/script/rsync
40 0 * * * sh /mnt/slave/Backup/script/rsync_prefeitura
40 0 * * * sh /mnt/slave/Backup/script/rsync_BD_prefeitura
0 1 * * * sh /mnt/slave/Backup/script/rsync_biblioteca
45 1 * * * sh /mnt/slave/Backup/script/rsync_BD_web
30 8 1,15 * * sh /mnt/slave/Backup/script/prefdiario.sh
30 9 * * 1 sh /mnt/slave/Backup/script/webfordiario.sh
09 10 * * * sh /mnt/slave/Backup/script/bibdiario.sh
35 1 * * * sh /mnt/slave/Backup/script/rsyncdif
35 15 * * 6 sh /mnt/slave/Backup/script/rsyncfull

SERVIDORES
A configuração deverá ser adotada em todos os Servidores, as alteração deverão ser
feitas de acordo com a localização da pasta de backup.
Crie os seguintes usuários, isso deve ser feito em todos os Servidores:
#adduser www
#adduser BD
O arquivo rsync.conf deve ser criado dentro da pasta /etc/ dos Servidores
#mkdir /etc/rsyncd.conf
#vim /etc/rsync.conf
# rsyncd.conf
#
# arquivo que mantém o pid do daemon
pid file = /var/run/rsyncd.pid

# Usuario sob o qual o rsync ira rodar.


uid = www
# Grupo sob o qual o rsync ira rodar.
gid = www
# habilita o uso do change root o que dá um nível mais
#alto de segurança a cópia do arquivo que está sendo executada
use chroot = no
max connections = 7
syslog facility = local5
#IP´s que possuem permissão de acesso ao Servidor (IP do Cliente)
hosts allow = 189.16.42.228 127.0.0.1/255.255.255.0

# Transferência dos arquivos de dominio


[www]
path = LOCAL ONDE FICARÁ ESTÃO OS ARQUIVOS DE BACKUP
comment = COMENTÁRIO SOBRE O BACKUP

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG
read only = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

#Transferência da base de Dados MySQL


#um script será criado para fazer a compactação
# da base de dados (/home/Josias/mysqlbkp.sh)

[BD]
path = LOCAL ONDE FICARÁ ESTÃO OS ARQUIVOS DE BACKUP comment =
COMENTÁRIO SOBRE O BACKUP
read only = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

Deve-se habilitar o deamon do rsync, para isso Habilite o rsync no arquivo


/etc/default/rsync
RSYNC_ENABLE = true
RSYBC_CONFIG_FILE=/etc/rsyncd.conf

Rode o rsync:
# /etc/rc.d/rsync restart

BIBLIOGRAFIA
http://www.qprocura.com.br/linux/dicas/1279/Como-programar-backup-com-
rsync-e-cron-de-maneira-rapida-e-simples.html

Elio Victorino da Silva Junior


Analista de Sistema - UNIRG

Você também pode gostar