[FUG-BR] sincronização de servidores (rsync via ssh)
Carlos Eduardo G. Carvalho (Cartola)
cartoleba em gmail.com
Segunda Maio 30 19:57:03 BRT 2011
Oi Irado,
não sei se entendi bem sua dúvida, mas eu uso um script com rsync + expect
para fazer backup de um servidor onde hospedo coisas. Não é o mesmo
objetivo, mas acho que atenderia, bastando parametrizá-lo. Segue ele sem as
senhas e nomes reais.
------
#!/bin/sh
# atualiza com limite de velocidade passado por $1
if [ "$1" = "" ]; then
BW=""
else
BW="--bwlimit=$1"
fi
LOG_DIR="/tmp/bkp_cartola"
DATA=`date +%Y%m%d`
mkdir -p $LOG_DIR
LOG_GERAL="$LOG_DIR/log-$DATA.txt"
# Que diretorios serao backupeados
DIRS_BKP="dir1 dir2 dir3 dir4 dir5"
cd /dados/salvar
TESTE=`pwd`
if [ "$TESTE" != "/dados/salvar" ]; then
echo "Erro, nao foi possivel ir ao diretorio de backup." >> $LOG_GERAL
fi
for DIR in $DIRS_BKP; do
LOG="$LOG_DIR/log-$DIR-$DATA.txt"
TESTE=`grep "Total bytes received" $LOG 2> /dev/null`
if [ "$TESTE" != "" ]; then
echo "Backup de $DIR de $DATA ja realizado." >> $LOG_GERAL
else
/usr/local/bin/expect -f - > $LOG 2> $LOG << EOF
set timeout -1
spawn /usr/local/bin
rsync -e "ssh -p 2222" -z -a -v --delete --size-only --progress --stats $BW
usuario em servidor.com:/home/usuario/public_html/$DIR .
match_max 100000
expect -exact "password: "
send -- "*suasenha*"
expect eof
EOF
fi
done
# Limpando logs antigos
find $LOG_DIR -name log-\* -mtime +4 -delete
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Em 30 de maio de 2011 17:55, irado furioso com tudo <irado em bsd.com.br>escreveu:
> buenas, povo.
>
> preciso fazer espelhamento entre duas máqunas; o inicial já foi feito
> (dump/restore) e as máquinas estão identicas (não hardware, mas os
> sistemas)
> só que agora preciso que fiquem sincronizadas entre si, de modo a poder
> substitui-las caso a MASTER tenha problemas. Imagino que NÃO precisarei
> (por
> ex) me preocupar com o '/' e demais, mas apenas com o /var/ e /usr/local e,
> ainda assim, sem os *logs* e outros que eventualmente não são uteis.
>
> a documentação/orientação que tenho encontrado no google ou é MUITO antiga
> ou confusa ou ambas (rs); estou imaginando alguma coisa assim:
>
> rsync /path ::ssh em servidor.na.casa.do.chapéu "restore"
> diretamente.no.local.do.primeiro.path
> [...] diversos repetecos..
> fim.
>
>
> é possível que haja documentação mais recente mas, se pelo menos me
> esclarecerem:
>
> nos rsyncd.conf TODAS as orientações que encontrei falam de um único path
> (normalmente o '/'); é possível colocar-se paths diversos, um por linha,
> por
> exemplo? ou há algum outro modo de se fazer (script?)
>
> enfim, taí a dúvida.
>
> TIA.
>
> --
>
> saudações,
> irado furioso com tudo
> mais crimes são cometidos em nome das religiões do que em nome do ateismo.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
Mais detalhes sobre a lista de discussão freebsd