Replicação de arquivos
Publicado por Ricardo Lino Olonca (última atualização em 22/05/2013)
[ Hits: 9.030 ]
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 do PostgreSQL 8.3 e aviso por e-mail
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
firefox nao guarda meus logins nos sites (1)
Instalar debian testing (13) "por cima" do debian 12 (2)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)