Replicação de arquivos
Publicado por Ricardo Lino Olonca (última atualização em 22/05/2013)
[ Hits: 9.195 ]
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
Criptografando arquivos para enviar pra sua nuvem
DriveTool.sh: um script para cópia rápida e segura de arquivos para unidades flash USB
Backup de arquivos e banco de dados com envio de e-mail
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (18)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









