Sistema de backup com rsyncd

Com este artigo mostrarei como implementar um sistema de backup em sua rede utilizando o rsync para realizar a sincronização de arquivos entre cliente(s) e servidor.

[ Hits: 94.507 ]

Por: Carlos Marcelo Morgado Rêgo em 18/11/2004


Servidor de backup





2.1 - Instalação


Para instalar o rsync em seu computador, caso esteja utilizando o Debian, execute o comando abaixo:

# apt-get install rsync

Se você estiver utilizando outra distro, você pode fazer a instalação através das fontes do programa, que podem ser baixadas no site oficial:

2.2 - rsyncd.conf


Seguiremos com as configurações no servidor de backup, o arquivo /etc/rsyncd.conf contém as opções do rsyncd.

Crie o arquivo /etc/rsyncd.conf seguindo o exemplo abaixo:

#
# /etc/rsyncd.conf
#

# Usuário sob o qual o rsync irá rodar

uid=root

# Grupo sob o qual o rsync irá rodar
gid=root

# Arquivo de log
log file = /var/log/rsyncd.log

# Módulo para o servidor-um
[servidor-um]

    # Caminho onde fica o espaço para este módulo
    path = /backup/servidor-um

    # Usuário(s) autorizado(s)
    auth users = servidor-um-backup

    # Arquivo de usuários senhas
    secrets file = /etc/rsyncd.secrets

    # Permitir gravação
    read only = false

    # Não incluir este módulo quando solicitada a listagem
    list = false

    # IP(s) ou rede permitidos a conectar
    hosts allow = 192.168.1.10

    # Log de Transferências
    transfer logging = yes

    # Formato do arquivo de log
    log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

# Módulo para o servidor-dois.
[servidor-dois]
    path = /backup/servidor-dois
    auth users = servidor-dois-backup
    secrets file = /etc/rsyncd.secrets
    read only = false
    list = false
    hosts allow = 192.168.1.20
    transfer logging = yes
    log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

Para cada "path" especificado deverá ser criado um diretório correspondente.

Neste exemplo, devemos criar manualmente os diretórios:
  • /backup
  • /backup/servidor-um
  • /backup/servidor-dois

e atribuir a permissão 700 à todos.

O dono destes diretórios deve ser o root.

2.3 - rsyncd.secrets


Deverá ser criado ainda o arquivo /etc/rsyncd.secrets, que contém as senhas dos usuários de cada módulo. Estes usuários não precisam existir no sistema.

#
# /etc/rsync.secrets
#

# Usuários e senhas que se conectarão ao servidor
# Formato:
# <usuario>:<senha>

servidor-um:senhaUM
servidor-dois:senhaDOIS

Os arquivos /etc/rsync.conf e /etc/rsync.secrets DEVERÃO ter permissão 600.

2.4 - Execução do servidor


Algumas configurações para inicialização do Rsyncd:
  • --daemon # Executar rsync em modo daemon
  • --config=<arquivo> # Especifica arquivo de configuração (padrão: /etc/rsyncd.conf)
  • --address=<ip> # Indica o IP ao qual o servidor irá escutar
  • --port=<porta> # Porta do rsyncd (Padrão: 873)

Escolha e modifique as que lhe interessar.

Para inicializar o serviço rsyncd no Debian, altere o arquivo

/etc/default/rsync

para que fique desta maneira:

RSYNC_ENABLE=true
RSYNC_OPTS='--config=/etc/rsyncd.conf --port=873'

E em seguida execute o script de inicialização:

# /etc/init.d/rsync start

Caso você utilize outra distribuição, crie um arquivo de configuração semelhante com o abaixo:

#!/bin/bash
#
# /etc/rc.d/rc.rsyncd
#

# Executável do rsync

RSYNC="/usr/bin/rsync"
# Opções de inicialização
RSYNC_OPTS="--config=/etc/rsyncd.conf --port=873"


case $1 in
start)
    $RSYNC --daemon $RSYNC_OPTS
;;
stop)
    killall rsync
;;
restart)
    killall rsync
    $RSYNC --daemon $RSYNC_OPTS
;;
*)
    echo "Use: /etc/rc.d/rc.rsync {start|stop|restart}
esac

Dê permissão de execução ao script:

# chmod +x /etc/rc.d/rc.rsync

Em seguida, execute o script de inicialização:

# /etc/rc.d/rc.rsync start

2.5 - Firewall


Abaixo fragmento de script de firewall para liberar as portas utilizadas pelo rsyncd:

# /etc/init.d/rc.firewall
...
iptables -P INPUT DROP
...

# Nome(s) ou IP(s) do(s) cliente(s) de backup
clientes="servidor-um servidor-dois"

# Porta
porta="873"

for i in $clientes; do
    iptables -A INPUT -s $i -p tcp --dport $porta -j ACCEPT
    iptables -A INPUT -s $i -p tcp --dport $porta -j ACCEPT
done ...

2.6 - Concluindo


Após os passos a cima, o servidor de backup estará devidamente configurado, partiremos agora para a configuração que deve ser feita em todos os clientes.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Servidor de backup
   3. Cliente de backup
   4. Bibliografia
Outros artigos deste autor

Escondendo banners de serviços

Como instalar um servidor de Counter-Strike

Leitura recomendada

Criando VPN site-to-site, conectando diversas filiais a matriz com openVPN

Virtual Host com Apache + SSL

Internet com a velocidade aumentada (Regulamento ANATEL)

Servidor web com CentOS + Apache

NTLMAPS: NTLM Authorization Proxy Server

  
Comentários
[1] Comentário enviado por jpfaria em 18/11/2004 - 11:23h

OPa marcelo, tome cuidado com os nomes dos arquivos.. uma hora vc diz que eh rsynd.conf e outra hora vc diz que é rsync.conf isso pode confundir usuários iniciantes.

[]'s

[2] Comentário enviado por cmarcelo em 18/11/2004 - 12:57h

Com certeza João Paulo,
Este pequeno erro eu realmente não notei em minhas revisões.

PARA TODOS, ALTERAR:
No ítem 2.3
"Os arquivos /etc/rsync.conf e /etc/rsync.secrets DEVERÃO ter permissão 600."
É /etc/rsyncd.conf e não /etc/rsync.conf

Desculpem-me

Carlos Marcelo

[3] Comentário enviado por dangelo em 18/11/2004 - 15:13h

Marcelo

O artigo esta muito bem escrito, parabens.

Tenho uma pergunta e uma sugestão.

Primeiro a pergunta, qual a vantagem de fazer esta configuração ao invés de usar o rsync com ssh que pra mim parece bem mais simples?

E a sugestão, para quem precisa manter versões dos arquivos alterados, uma dica é usar o rdiff-backup.

[4] Comentário enviado por armandogozarem em 19/11/2004 - 17:33h

Pessoal tó com umas dificuldades, eu acho que alguem poderia me ajudar...

Fiz o script na máquina do backup, mas ela nao consegue se loga automaticamente no servidor do backup. Tá pedindo senha, para funcionar tenho que por a senha, o processo não tá sendo automatico!!

o que será que está errado?

/usr/bin/rsync -pavR --delete --password-file=/etc/rsync.pass /etc adm-armando@192.168.1.10:

[5] Comentário enviado por fabio em 19/11/2004 - 18:13h

Armando,

Dê uma lida no artigo abaixo, ele serve como bom complemento para esse aqui. Autenticando por chaves do SSH faz com que seu rsync execute sem pedir senha também.

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1084

[]'s

[6] Comentário enviado por cmarcelo em 20/11/2004 - 02:41h

Armando,

Há um pequeno erro ao indicar o server:

"/usr/bin/rsync -pavR --delete --password-file=/etc/rsync.pass /etc adm-armando@192.168.1.10:"

Alterar "adm-armando@192.168.1.10:" para "<usuario>@<server>::<modulo>/"

Deverá funcionar,

Carlos Marcelo

[7] Comentário enviado por armandogozarem em 22/11/2004 - 10:47h

ok faltava o nome do módulo mas quando aplico o comando:

"/usr/bin/rsync -pavR --delete --password-file=/etc/rsync.pass /etc adm-armando@192.168.1.10::backup/" , veja só o erro que ocorre:

@ERROR: auth failed on module backup
rsync: connection unexpectedly closed (89 bytes read so far)
rsync error: error in rsync protocol d#

Pareçe alguma configuração no servidor que não ativo os módulos.

Configuração do Servidor

# /etc/rsyncd.conf
#

# Usuário sob o qual o rsync irá rodar
uid=root

# Grupo sob o qual o rsync irá rodar
gid=root

# Arquivo de log
log file = /var/log/rsyncd.log

hosts allow = 192.168.1.10

# Módulo para backup
[backup]
path = /backup
auth users = adm-armando
secrets file = /etc/rsyncd.secrets
read only = true
list = false
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
ata stream (code 12) at io.c(150)

e o arquivo

#
# /etc/rsync.secrets
#

# Usuários e senhas que se conectarão ao servidor
# Formato:
# <usuario>:<senha>
adm-armando:teste



[8] Comentário enviado por juglenijr em 05/04/2005 - 17:23h

Pessoal instalei com o artigo informa e esta dando erro:

/etc/rc.d/rc.rsync: line 24: unexpected EOF while looking for matching `"'
/etc/rc.d/rc.rsync: line 26: syntax error: unexpected end of file

Estou utilizando o Fedora Core 3 com o Kernel 2.6.10
Instalei o rsync pelo apt-get

O que esta acontecendo?

Notei que no diretorio .../xinetd.d/ tem um arquivo rsync com o conteudo:

# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
# RSYNC_ENABLE=true
# RSYNC_OPTS='--config=/etc/rsyncd.conf --port=873'
}

esta 2 estruçoes comentadas foi eu que coloquei mais nao funfa..

mais eu criei o arquivo rc.rsync no rc.d como informa o artigo..

Abraço

[9] Comentário enviado por juglenijr em 05/04/2005 - 17:47h

Com a ajuda de uns amigos encontramos a falta de uma ASPA no codigo rc.rsyncd

#!/bin/bash
#
# /etc/rc.d/rc.rsyncd
#

# Executável do rsync
RSYNC="/usr/bin/rsync"
# Opções de inicialização
RSYNC_OPTS="--config=/etc/rsyncd.conf --port=873"


case $1 in
start)
$RSYNC --daemon $RSYNC_OPTS
;;
stop)
killall rsync
;;
restart)
killall rsync
$RSYNC --daemon $RSYNC_OPTS
;;
*)
echo "Use: /etc/rc.d/rc.rsync {start|stop|restart}" ############## Aqui
esac

Esta esta correto agora

[10] Comentário enviado por juglenijr em 05/04/2005 - 19:09h

pessoal agora nao estou conseguindo usar o script do cliente, esta dando erro:

@ERROR: auth failed on module servidor-softcomp
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)
@ERROR: auth failed on module servidor-softcomp
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)
@ERROR: auth failed on module servidor-softcomp
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)

Fim do backup - Ter Abr 5 15:03:53 BRT 2005

Portugues ###################
falha ao autenticar no módulo servidor-softcomp conecção fechada inesperadamente ( recebidos 0 bytes)
erro na transmissão de dados do protocolo do rsync (código 12) em io.c(359)
###################

Acho estranho porque ele informa que o bkp finalizou

[11] Comentário enviado por crcorrea em 18/05/2006 - 15:04h

Nao descobre o motivo do erro descrito abaixo?
alguem teve este problema :

Inicio do backup - Thu May 18 14:57:27 BRT 2006
@ERROR: access denied to XXXXX from XXXX.operacao.xx(200.200.1004.00)
rsync: connection unexpectedly closed (85 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
Fim do backup - Thu May 18 14:57:28 BRT 2006

[12] Comentário enviado por rockstore6 em 19/07/2007 - 10:17h

muito bom gostei mas eu queria saber também c dar pra fazer back do sistema mesmo todinho saca do linux

[13] Comentário enviado por andromeda em 24/10/2007 - 10:14h

Muito bom mesmo!!!! Você manda muito bem Marcelo!!!!!
Aprendi muito nesse artigo!!!!

[]'s

[14] Comentário enviado por jeffr2 em 11/03/2014 - 13:24h

ressucitando o topico, alguem me ajude por favor.. o rsyncd.secrets é obrigatorio? nao ha uma forma do sistema utilizar o root por padrao?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts