Script para apagar arquivos antigos

1. Script para apagar arquivos antigos

Dionata Suzin
dsmi

(usa CentOS)

Enviado em 31/12/2013 - 08:01h

Buenas, Pessoal estou com um problema para apagar diretórios antigos do meu backup, tenho um script que faz os backup`s, porem na hora de excluir, alguns arquivos ele não consegue excluir, mas quando executo os comandos na mão fora do script ele apaga os diretórios corretamente, segue o script de limpeza de backup caso alguém possa me ajudar a corrigir agradeço, como já falei são apenas alguns diretórios que ele não consegue excluir, da erro de diretório não vazio, porem todos os diretórios tem conteúdo, e boa parte deles são removidos com sucesso


#Variáveis Limpa Backup
DIR="/mnt/"
DIAS="5"
CMD="find $DIR -name "bkp_*" -type d -mtime +$DIAS"

#Log
ARQ="/tmp/bkp_old.log"

#Variaveis envia e-mails
EMAIL_FROM="ti@cedilrs.com.br"
EMAIL_TO="ti@cedilrs.com.br"
SERVIDOR_SMTP="smtp.cedilrs.com.br:587"
SENHA=***********
ASSUNTO="$1"
MENSAGEM=$2

#Procedimentos de Limpeza
$CMD &> $ARQ 2> /dev/null
AUX=$(cat $ARQ | wc -l)
if [ $AUX = 0 ]; then
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "Exclusao de Back Ups antigos" -m "Nenhum Back up com mais de 5 dias para exclusao" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
else
$CMD | xargs rm -rf
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "Exclusao de Back Ups antigos" -m "Back Ups com mais de 5 dias excluidos" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
rm -rf $ARQ
fi



  


2. Re: Script para apagar arquivos antigos

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 02/01/2014 - 11:45h

Debugue o seu script executando da seguinte forma:

"sh -x seu_script.sh"

Ele vai apontar onde está ocorrendo o erro!




3. Re: Script para apagar arquivos antigos

Dionata Suzin
dsmi

(usa CentOS)

Enviado em 03/01/2014 - 08:16h

Na verdade acredito que seja algo relacionado a permissões, pois algumas pastas exclui outras não, e não ao script propriamente dito, pois basicamente ele mapeia a origem e o destino e copia um para o outro, vou postar uma rotina de backup para entenderem melhor o meu problema.


#variaveis BackUp
#Data
DATA=$(date +%d-%m-%Y_%Hh%Mm)

#Administrativo
DIR26="/mnt/newadmOR"
DIR27="/mnt/newadmDEST"

#Log
LOG="/tmp/log-backup-$DATA.log"

#Variaveis envia e-mails
EMAIL_FROM="ti@cedilrs.com.br"
EMAIL_TO="ti@cedilrs.com.br"
SERVIDOR_SMTP="smtp.cedilrs.com.br:587"
SENHA=***********
ASSUNTO="$1"
MENSAGEM=$2

#Administrativo
if [ ! -d $DIR26 ]; then
mkdir $DIR26
echo "Diretorio Administrativo criado!"
elif [ -d $DIR26 ]; then
echo "Diretorio Administrativo OK!"
else
echo "Erro ao criar diretorio Administrativo!"
cd ~
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "Erro no Backup" -m "Erro ao criar diretorio /mnt/newadmOR contate o Administrador" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
fi

if [ ! -d $DIR27 ]; then
mkdir $DIR27
echo "Diretorio backup Administrativo criado!"
elif [ -d $DIR27 ]; then
echo "Diretorio backup Administrativo OK!"
else
echo "Erro ao criar diretorio de destino backup Administrativo!"
cd ~
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "Erro no Backup" -m "Erro ao criar diretorio /mnt/newadm contate o administrador" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
fi

#Administrativo
mount -t cifs -o username=operador.backup,password=*********** //10.1.1.5/adm /mnt/newadmOR 2> /dev/null
mount -t cifs -o username=admin,password=********* //10.1.1.254/backup/adm /mnt/newadmDEST 2> /dev/null

#Administrativo
AUX=$(ls $DIR26 | wc -l)
if [ $AUX = 1 ]; then
echo "Erro ao montar unidade de backup Administrativo!"
cd ~
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "Erro no Backup" -m "Erro ao montar unidade de Backup do Administrtivo contate o administrador" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
else
cp -rfv $DIR26 $DIR27/bkp_$DATA &> $LOG
echo "Criado log de backup $LOG"
cd ~
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "Back Up com Sucesso" -m "Back up do Administrativo Realizado com Sucesso" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA
fi


para resolver pensei em fazer o seguinte, como a unidade onde é realizado o backup é um "Storage" vou criar um disco nele e adicionar a minha VM, ai ao invés de mapear o destino, faço o mapeamento apenas da origem, e copio para uma partição local, acredito que desta maneira fica mais fácil trabalhar com as permissões, como podem ver no exemplo, utilizei o user admin do nosso NAS para montar a unidade mas mesmo assim algumas pastas ele não consegue excluir,

fiz o debug do script como sugerido pelo colega mas não retornou nenhum erro, apenas o seguinte

rm: não foi possível remover "/mnt/faturamentoDEST/bkp_28-12-2013_03h42m/LUANA/SCAN/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/faturamentoDEST/bkp_29-12-2013_03h35m/LUANA/SCAN/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/faturamentoDEST/bkp_30-12-2013_03h13m/LUANA/SCAN/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/faturamentoDEST/bkp_31-12-2013_03h13m/LUANA/SCAN/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/faturamentoDEST/bkp_01-01-2014_03h09m/LUANA/SCAN/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/administrativoDEST/bkp_29-12-2013_03h35m/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/administrativoDEST/bkp_30-12-2013_03h13m/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/administrativoDEST/bkp_31-12-2013_03h13m/.Thumbnails": Diretório não vazio
rm: não foi possível remover "/mnt/administrativoDEST/bkp_01-01-2014_03h09m/.Thumbnails": Diretório não vazio

que é o que me retornava mesmo sem o debug

obrigado!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts