Replicação de arquivos
Publicado por Ricardo Lino Olonca (última atualização em 22/05/2013)
[ Hits: 9.097 ]
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
Enviando e-mail localmente após o backup para monitoramento
Backup e envio do arquivo + md5sum para o FTP da escolha do usuário
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Gestão de Ambiente em uma rede Linux (2)
Ajuda Pra Melhoria do NFTABLES. (7)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (4)