backup linux shell script

1. backup linux shell script

Diego Felipe Bento Lopes de Oliveira
dfelipenm

(usa CentOS)

Enviado em 13/04/2011 - 14:36h

Pessoal, boa tarde, tudo bom?
Eu tenho aqui na empresa alguns scripts prontos para backup em linux (distro. Centos) e tenho no servidor um hd interno de 2 tb que eu formatei, deixei ele prontinho para o uso, inclusive o pessoal ja está salvando os arquivos nele, pois esta compartilhado pelo samba.
O script não está conseguindo encontrar o caminho onde ficarão os arquivos a serem backupeados, que no caso fica em /mnt/hd_novo/Arquivos rem.
ele dá o seguinte erro:


tar: /mnt/hd_novo\r: Atencao: Nao e possi­vel stat: Arquivo ou diretorio nao encontrado


Mas pelo linux consigo acessar esse diretorio normalmente.
Se precisarem de uma copia do script e de como estão os arquivos de configuração deles eu envio.
Muito Obrigado.



  


2. Re: backup linux shell script

Daniel Fernandes
volcom

(usa Debian)

Enviado em 13/04/2011 - 14:42h

Nos mostre o script!

Mas tente remover o "espaço" que existe em /mnt/hd_novo/Arquivos rem alterando para /mnt/hd_novo/Arquivos_rem por exemplo.


3. script

Diego Felipe Bento Lopes de Oliveira
dfelipenm

(usa CentOS)

Enviado em 13/04/2011 - 14:53h

olha o script

#!/bin/sh
#
# Identificação dos arquivos
IDENTIFICA=Backup_rh

# Numero de dias do ciclo de backup
DIAS=7

# E-mail do administrador
ADMIN=filoauto@bkp

# A partir de onde ficarão os arquivos
PREFIX=/Publico/backup/rh

# Onde os arquivos de backup e logs ficarão armazenados
DIR_DESTINO=/Publico/backup/rh

# Lista de arquivos a não serem backupeados
EXCLUDE=$PREFIX/etc/exclude.list

# Arquivos temporário do script
TEMP=/tmp/.backup.$$

# Arquivos de controle do GNU/Tar
INC=$PREFIX/etc/incremental.conf

# Formato da data
DATA=$(date +%d-%m-%Y-%a)

# Arquivo com a lista de diretórios a serem backupeados
LISTA=$(cat $PREFIX/etc/list.conf | grep ^\/ | sort | uniq)

# Arquivos gerado pelo script para controle de incremento
CONFIG=$PREFIX/etc/backup.conf

VOLTA=0
if [ ! -e $CONFIG ] ; then
touch $CONFIG
NUMERO=1
else
cp -f $CONFIG $CONFIG.bak
LINHAS=$(cat $CONFIG | grep ^[0-9] | wc -l)
[ $LINHAS -eq $((DIAS+1)) ] && VOLTA=1
FIRST=$(cat $CONFIG | grep ^[0-9]- | head -1)
LAST=$(cat $CONFIG | grep ^[0-9]- | tail -1)
OLD=$(echo $LAST | cut -f1 -d"-")
OLD=${OLD:-0}
BACKUP_OLD=$(echo $FIRST | cut -f1 -d"-")
FILE_OLD=$(echo $FIRST)
if [ $OLD -eq $DIAS ] ; then
NUMERO=1
mv -f $INC $INC.bak
else
NUMERO=$((OLD+1))
fi
fi

DESTINO=$DIR_DESTINO/$IDENTIFICA-$NUMERO-$DATA

SEND_MAIL () {
sendmail $ADMIN << FIMEMAIL
Subject: Backup CL $(date +%d-%m-%Y)

Backup realizado no arquivo: $DESTINO.tar.gz

FIMEMAIL
}

df -h > $DESTINO.log
tar --totals --ignore-failed-read --exclude-from=$EXCLUDE -zcvg $INC -f $DESTINO.tar.gz $LISTA >> $DESTINO.log 2>&1
df -h >> $DESTINO.log
SEND_MAIL $DESTINO.log
echo $NUMERO-$DATA >> $CONFIG
if [ $VOLTA -eq 1 ] ; then
rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.tar.gz
rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.log
sed 1d $CONFIG > $TEMP
mv -f $TEMP $CONFIG
fi


4. script de backup

Diego Felipe Bento Lopes de Oliveira
dfelipenm

(usa CentOS)

Enviado em 13/04/2011 - 14:55h

o arquivo list.conf tá com a seguinte linha:

/mnt/rhf/


(nesse caso, to usando o exemplo do backup do rh que também não tá funcionando, mas não é hd externo, é unidade de rede mapeada (samba))

também acessa o caminho, mas na hora de fazer o backup não vai nem a pau, dá o mesmo erro que postei anteriormente.


5. Re: backup linux shell script

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/04/2011 - 01:55h

Não vejo erros no seu script a não ser que deverias usar aspas duplas nas declarações de variáveis que contém variaveis:

# variavel numerica
VAR_0=2

# methodo correto para variaveis do tipo string
VAR_1='any'

# method correto para variaveis que contem outras variáveis
VAR_2="${VAR_1}other"

Faça estas modificações e passe-nos o resultado


6. backup linux shell script

Diego Felipe Bento Lopes de Oliveira
dfelipenm

(usa CentOS)

Enviado em 16/04/2011 - 11:44h

apesar de aparentemente as variaveis estarem erradas, esse mesmo script funciona nos outros backups, isso que eh estranho, eu queria saber se existe alguma limitação nesse script que faça com que ele não funcione com unidades mapeadas, como por exemplo /mnt/rh...


7. Re: backup linux shell script

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/04/2011 - 14:39h

faça um "debug", assim vc ve o script executando linha por linha para ver em qual parte da erro

# bash -xv script_backup.sh

e como disseram, coloque as variaveis dentro de aspas duplas "$variavel"


8. O comando tar não aceita caminhos absolutos

Júlio Hoffimann Mendes
julio_hoffimann

(usa Ubuntu)

Enviado em 16/04/2011 - 15:22h

Oi Diego,

Estou sem tempo para ler o script com calma, mas o provável erro está no arquivo list.conf, ele não deve conter caminhos absolutos, o tar não suporta, por incrível que pareça.

Abraço!




9. Re: backup linux shell script

Diego Felipe Bento Lopes de Oliveira
dfelipenm

(usa CentOS)

Enviado em 16/04/2011 - 16:23h

caminho absoluto significa que ele não vai backupear se naum tiver dentro de uma pasta? é isso?


10. Caminho absoluto

Júlio Hoffimann Mendes
julio_hoffimann

(usa Ubuntu)

Enviado em 16/04/2011 - 16:43h

Diego,

Caminhos absolutos são aqueles que começam com '/', caminhos relativos você tira por complemento. ;-)

Quando precisei fazer backups de arquivos em um diretório usei a opção -C do tar, com ela você muda para o diretório e informa os caminhos relativos.

Abraço!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts