[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