Replicação de arquivos
Publicado por Ricardo Lino Olonca (última atualização em 22/05/2013)
[ Hits: 9.215 ]
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
BTRFS - Gerenciamento de snapshot por quantidade
rotate.sh - Rotaciona arquivos de acordo com a data
rsyncdev-pt_BR_v6.sh - Um baixador automático de ISOs de Sabayon Linux, versão 6
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (2)
Erro no suitable vídeo mode (15)
VOL já não é mais como antes? (14)









