Dúvida find no script

1. Dúvida find no script

carlos Henrique Sá
kheavy

(usa Debian)

Enviado em 09/07/2014 - 11:16h

Bom dia,

tenho um script que executa vários find um deles localiza e compacta os arquivos para um tar.gz outro exclui os arquivos que já foram compactados, pois se estão compactados não preciso mais deles :D

Se eu colocar os dois finds um abaixo do outro, primeiro o que compacta e depois o que exclui... ele cria um arquivo tar.gz em branco. e exclui os arquivos.
Se eu separo em 2 blocos como esta atualmente, ele compacta os arquivos mas não apaga os arquivos.

algem tem alguma ideia do que estou fazendo errado??


segue o script



##!/bin/bash
#Script de backup cdr
#2013-12-26 data de criação
#2014-06-27 ultima correção

#var
SHELL=/bin/sh
PATH=/sbin:/usr/sbin:/usr/bin:/bin
DIR=/var/boreal/cdr
BKPFILE=cdr-$(date +%W).tar.gz
CSV_LIMIT=7 #7 dias
BKP_LIMIT=56 #8 SEMANAS
LOG=/usr/local/boreal/bin/bkp/bkp-CDR.log

echo "------------INCICIANDO BACKUP------------" >> $LOG
echo `date +%Y-%m-%d` >> $LOG

bkp(){
echo "----------COPIAS----------" >> $LOG
for TNX in $(cat /usr/local/boreal/bin/bkp/tnx.txt)
do
DES=`echo $TNX | cut -f2 -d:`
A=`echo $TNX | cut -f3 -d:`
#localiza arquivos e compacta
echo "---$DES--$A---" >> $LOG
echo "Localizando arquivos antigos e compactando de $DIR/$DES" >> $LOG
find "$DIR"/"$DES" -name *.csv -mtime +$CSV_LIMIT | tar --files-from - -cvzpf "$DIR"/"$DES"/"$BKPFILE"
done
}
bkp
recicla(){
echo "----------EXCLUSAO----------" >> $LOG
for TNX in $(cat /usr/local/boreal/bin/bkp/tnx.txt)
do
#Excluindo os arquivos antigos
echo "---$DES--$A---" >> $LOG
echo "Localizando e excluindo aqruivos de backup com mais de $BKP_LIMIT dias" >> $LOG
find "$DIR"/"$DES" -name "cdr*" -mtime +$BKP_LIMIT >> $LOG
find "$DIR"/"$DES" -name "cdr*" -mtime +$BKP_LIMIT -exec rm -rf {} \;
sleep 1
echo "Apagando arquivos .csv com mais de $CSV_LIMIT dias" >> $LOG
find "$DIR"/"$DES" -name "*.csv" -mtime +$CSV_LIMIT >> $LOG
find "$DIR"/"$DES" -name "*.csv" -mtime +$CSV_LIMIT -exec rm -rf {} \;
done
}
recicla


echo "----------------FIM BACKUP---------------" >> $LOG




  


2. Re: Dúvida find no script

Fernando
phoemur

(usa Debian)

Enviado em 09/07/2014 - 18:42h


man tar



--remove-files
remove files after adding them to the archive


eu usaria esta opção do tar para remover já neste comando os arquivos adicionados...
por exemplo:

find "$DIR"/"$DES" -name *.csv -mtime +$CSV_LIMIT | tar --files-from - -cvzpf --remove-files "$DIR"/"$DES"/"$BKPFILE"




3. Re: Dúvida find no script

carlos Henrique Sá
kheavy

(usa Debian)

Enviado em 10/07/2014 - 09:22h

Obrigado não conhecia essa opção vou usa-la.

abraços


4. Re: Dúvida find no script

carlos Henrique Sá
kheavy

(usa Debian)

Enviado em 10/07/2014 - 14:02h

phoemur escreveu:


man tar



--remove-files
remove files after adding them to the archive


eu usaria esta opção do tar para remover já neste comando os arquivos adicionados...
por exemplo:

find "$DIR"/"$DES" -name *.csv -mtime +$CSV_LIMIT | tar --files-from - -cvzpf --remove-files "$DIR"/"$DES"/"$BKPFILE"



Cara o argumento do comando tar funcionou perfeitamente quando digitado diretamente no shell porém ao colocar no script cria um arquivo vazio e exclui os arquivos que deveria ter copiado :(

não sei pq acontece isso no script não funciona mas se executo os comandos no shell funciona perfeitamente tanto da maneira que eu tinha feito, quanto essa sua opção, que por sinal é mil vezes mais fácil de implementar ;)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts