Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

c0de

Shell script, compactar e recriar arquivos de log

Recommended Posts

Boa tarde,

 

fiz um script shell que duplica o arquivo original, recria o arquivo original para que o log recomesse e compacta a copia. Mas ao recriar o arquivo, não grava mais nada em log, mesmo alterando a permissão do arquivo. Gostaria de saber como limpar o arquivo original sem ter que recriá-lo.

Ex.:

arquivo_original.log (300 linhas)

 

DUPLICA ARQUIVO

arquivo_original.log (300 linhas)

arquivo_temp.log (300 linhas)

 

RECRIA ARQUIVO ORIGINAL

arquivo_original.log (0 linhas)

arquivo_temp.log

 

COMPACTA A COPIA

arquivo_original.log

arquivo_temp.tar.gz

 

o script segue abaixo:

#!/bin/bash
DATAATUAL=$(date +%Y%m%d)
DIRETORIOBACKUP=/var/www/backup/sites_logs/
DIRETORIO=$1
SITE=$2
arquivo_original=production.log
arquivo_temp=production_temp.log
arquivo_compactado='log_production_'$SITE'_'$DATAATUAL'.tar.gz'

if [ -d $1 ]
then
	echo "Verificando existencia do arquivo..."
	if [ -f $DIRETORIO$arquivo_original ]
	then
		cd $DIRETORIO
		echo "Movendo e renomeando para "$arquivo_temp
		mv $arquivo_original $arquivo_temp
		echo "Criando novo production.log..."
		echo "." > $arquivo_original
		chmod 775 $arquivo_original
		echo "Compactando "$arquivo_temp" para "$arquivo_compactado
		tar -cvzf $arquivo_compactado $arquivo_temp
		echo "Removendo "$arquivo_temp
		rm -f $arquivo_temp
		mv $arquivo_compactado $DIRETORIOBACKUP$arquivo_compactado
	else 
		echo "Nao foi possivel fazer backup de "$DIRETORIOBACKUP$arquivo_original
	fi
else
	echo "Informe o diretorio onde o arquivo se encontra"
fi

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tentou inves de mover (mv) fazer apenas uma cópia (cp)?

 

Desta forma você não precisa fazer alguns procedimentos, por exemplo:

 

#!/bin/bash
DATAATUAL=$(date +%Y%m%d)
DIRETORIOBACKUP=/var/www/backup/sites_logs/
DIRETORIO=$1
SITE=$2
arquivo_original=production.log
arquivo_temp=production_temp.log
arquivo_compactado='log_production_'$SITE'_'$DATAATUAL'.tar.gz'

if [ -d $1 ]
then
	echo "Verificando existencia do arquivo..."
	if [ -f $DIRETORIO$arquivo_original ]
	then
		cd $DIRETORIO
		echo "Copiando para "$arquivo_temp
		cp $arquivo_original $arquivo_temp
		echo "Apagando production.log..."
		echo "" > $arquivo_original
		echo "Compactando "$arquivo_temp" para "$arquivo_compactado
		tar -cvzf $arquivo_compactado $arquivo_temp
		echo "Removendo "$arquivo_temp
		rm -f $arquivo_temp
		mv $arquivo_compactado $DIRETORIOBACKUP$arquivo_compactado
	else
		echo "Nao foi possivel fazer backup de "$DIRETORIOBACKUP$arquivo_original
	fi
else
	echo "Informe o diretorio onde o arquivo se encontra"
fi

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.