Replicação de arquivos
Publicado por Ricardo Lino Olonca (última atualização em 22/05/2013)
[ Hits: 9.127 ]
Homepage: ricardoolonca.blogspot.com.br
Tenho um servidor de mídia com cerca de 2 TB de arquivos e precisava manter/criar uma réplica desse servidor para o caso de uma pane. E, claro, precisava manter os arquivos sincronizados.
Tentei algumas soluções, como rsync, mas este demorava muito e se fosse colocado no cron acontecia de encavalar vários processos do rsync. Tentei também usar o inosync, mas alguns arquivos de cache geravam problemas. Então criei esse script que deve ser colocado no /etc/init.d e rodar como serviço.
Basicamente ele roda com prioridade baixa, não afetando o desempenho do servidor. Pode fazer o sincronismo para vários servidores ao mesmo tempo beneficiando-se do cache de leitura do disco, e ainda impede que vários processos de rsync sejam encavalados. Em meu ambiente um arquivo leva cerca de 5 minutos para ser replicado para o outro servidor, mas esse valor ainda pode ser melhorado. A única ressalva é fazer com que o servidor origem se autentique no destino através de troca de chaves. Altere as variáveis de acordo com o teu ambiente.
#!/bin/bash ### BEGIN INIT INFO # Provides: rsync_server # Required-Start: networking # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Sincronismo dos arquivos entre os Frontend Master e Slave ### END INIT INFO # Feito do Ricardo Lino Olonca em 18/04/2013 # Versao Beta 0.1.1 ############################## # Variáveis # Pasta a ser copiada ORIGEM=/home/ricardo/ # Pasta destino DESTINO=/home/ricardoolonca/ # Pasta a serem excluídas da cópia # O caminho deve ser relativo a pasta ORIGEM EXCLUDE=" .aMule/ .VirtualBox/ .local/share/Trash/ Programas/ Música/ Vídeos/ .mozilla/firefox/ht1sguqp.default/Cache/ .wine/ .cache/ .aqemu/ .ssh/ " # Prioridade do processo # Quanto maior, mais lento ele será NICE=19 # Caminho do programa rsync RSYNC=/usr/bin/rsync # Tempo de espera para uma nova cópia, em segundos TEMPO=60 # Usuário usado na sncronização USUARIO=ricardoolonca # Servidor de destino SERVIDORDESTINO=' 10.50.0.32 172.20.1.127 ' ############################## # Inicio do programa processo(){ for i in $EXCLUDE do x="--exclude=$i $x" done if [ -r $ORIGEM ] && [ -x $RSYNC ] then while true do for i in $SERVIDORDESTINO do nice -$NICE $RSYNC -avrp --delete $ORIGEM $USUARIO@$i:$DESTINO $x >/dev/null 2>/dev/null & done for i in $SERVIDORDESTINO do while true do ps wax | grep rsync | grep $i 2>/dev/null >/dev/null if [ $? -eq 0 ] then sleep 60 else break fi done done sleep $TEMPO done else echo Há um erro na configuração fi } case $1 in "start") processo & ;; "stop") echo Parando o daemon de sincronização dos arquivos do site id=`ps wax | grep $0 | grep start | sed s/^" "//g | cut -d" " -f1 | head -1` kill $id ;; "restart") ps wax $0 stop sleep 5 $0 start ;; "status") ps wax | grep $0 | grep -v grep | grep -v status >/dev/null if [ $? -eq 0 ] then echo Daemon de sincronismo dos arquivos rodando else echo Daemon de sincronismo dos arquivos parado fi ;; *) echo "Daemon de sincronismo dos arquivos do site" echo "Uso: $0 <start|stop|restart|status>" esac
Backup utilizando rsync com envio do log e informativo via e-mail
Configuração de backup com rsync sem senha
Script Backup com Log e envio por Email
Backup de banco de dados MySQL
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Sem espaço na partição home (2)
O que você está ouvindo agora? [2] (190)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (5)