Script para backup via RSync em 2 destinos diferentes

1. Script para backup via RSync em 2 destinos diferentes

Rogerio Jose Lopes
rogeriojlopes

(usa CentOS)

Enviado em 29/10/2014 - 23:30h

Caros

Boa noite

Estou com o seguinte problema. Tenho um script que faz o backup via RSync de 3 servidores e suas Shares.

Acontece que devido um problema de espaço (não posso expandir o volume no momento) tenho que utilizar outros filesystems além do que já estava no script.

Assim eu alterei o mesmo para verificar a Share e comparar com o um determinado valor, se for X fazer a sincronização em A, se for Y fazer a sincronização em B. Mas o mesmo não funciona. Alguém pode me apontar onde estou errando?

De antemão agradeço e segue o script abaixo:

#!/bin/bash
#
# backup.sh
#
# Faz o backup dos servidores da rede, criando um subdiretorio para cada
# um dos diretorios exportados via rsyncd.
#
# Criado em: 14/10/04
# Última modificacao em: 29/10/15


BACKUP_DIR="/backup3/semanal"
BACKUP_DIR2="/backup6/semanal"
BACKUP_SERVERS=" 192.168.0.240 192.168.0.1 192.168.0.197 "

for SERVER in ${BACKUP_SERVERS}; do

# cria o diretorio do backup TODOS se nao existir
if [ ! -d ${BACKUP_DIR}/${SERVER} ]; then
mkdir ${BACKUP_DIR}/${SERVER}
fi

# cria o diretorio do backup COMUN-DGE se nao existir
if [ ! -d ${BACKUP_DIR2}/${SERVER} ]; then
mkdir ${BACKUP_DIR2}/${SERVER}
fi

# entra no diretorio do servidor correspondente
cd ${BACKUP_DIR}/${SERVER}

# descobre os diretorios exportados
SHARES=`rsync ${SERVER}:: | awk "{ print $1 }"`

for SHARE in $SHARES; do
# Verifica se é a pasta PUBLIC
# if [ ${SHARE} -eq "Public\" ; then
# Verifica a origem se é Todos ou Comun-DGE
if [ ${SHARE} -eq "Comunicação/" or ${SHARE} eq "dge/" ] ; then
# Cria o diretorio para cada compartilhamento (se não existir) e entra nele .
if [ ! -d ${BACKUP_DIR2}/${SERVER}/${SHARE} ]; then
mkdir ${BACKUP_DIR2}/${SERVER}/${SHARE}
fi
cd ${BACKUP_DIR2}/${SERVER}/${SHARE}
# Faz o backup do compartilhamento
echo "Iniciando backup do compartilhamento" ${SHARE}
rsync -vurgoapl --delete-excluded ${SERVER}::${SHARE}
else
# Cria o diretorio para cada compartilhamento (se não existir) e entra nele .
if [ ! -d ${BACKUP_DIR}/${SERVER}/${SHARE} ]; then
mkdir ${BACKUP_DIR}/${SERVER}/${SHARE}
fi
cd ${BACKUP_DIR}/${SERVER}/${SHARE}
# Faz o backup do compartilhamento
echo "Iniciando backup do compartilhamento" ${SHARE}
rsync -vurgoapl --delete-excluded ${SERVER}::${SHARE}
fi
#fi .
done
done



  


2. Re: Script para backup via RSync em 2 destinos diferentes

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 30/10/2014 - 20:24h

Há um erro na seguinte linha:

if [ ${SHARE} -eq "Comunicação/" or ${SHARE} eq "dge/" ] ; then

onde é "or" deveria ser "-o" e onde é "eq" deveria ser "=" (usa-se '=' para strings). Nessas situações eu prefiro a sintaxe:

if [ ${SHARE} = "Comunicação/" ] || [ ${SHARE} = "dge/" ] ; then

acredito que facilita a leitura.

Isso é um erro de sintaxe, então o shell deve ter cuspido algo nessa linha, você observou alguma coisa? Por causa do erro, o if é pulado e o else é sempre executado.

edit: "=" para string.

t+



3. Está quase

Rogerio Jose Lopes
rogeriojlopes

(usa CentOS)

Enviado em 03/11/2014 - 13:22h

Oi

Em primeiro lugar, caro daemonio/Marcos, obrigado. Ele não mais deu erro.. Por outro lado...

Ele não fez a cópia dos arquivos no segundo compartilhamento (???)

Há algo errado nesse trecho e ele não fez...

for SHARE in $SHARES; do
# Verifica a origem se é Todos ou Comun-DGE
if [ ${SHARE} = "Comunicação/" ] || [ ${SHARE} = "dge/" ] ; then
# Cria o diretorio para cada compartilhamento (se não existir) e entra nele .
if [ ! -d ${BACKUP_DIR2}/${SERVER}/${SHARE} ]; then
mkdir ${BACKUP_DIR2}/${SERVER}/${SHARE}
fi

cd ${BACKUP_DIR2}/${SERVER}/${SHARE}
# Faz o backup do compartilhamento
echo "Iniciando backup do compartilhamento" ${SHARE}
rsync -vurgoapl --delete-excluded ${SERVER}::${SHARE}
else
# Cria o diretorio para cada compartilhamento (se não existir) e entra nele .
if [ ! -d ${BACKUP_DIR}/${SERVER}/${SHARE} ]; then
mkdir ${BACKUP_DIR}/${SERVER}/${SHARE}
fi
cd ${BACKUP_DIR}/${SERVER}/${SHARE}
# Faz o backup do compartilhamento
echo "Iniciando backup do compartilhamento" ${SHARE}
rsync -vurgoapl --delete-excluded ${SERVER}::${SHARE}
fi

De novo agradeço

Rogerio






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts