você está aqui: Home  → Arquivo de Mensagens

Compressão de arquivos de log

Colaboração: Herbert G. Fischer

Data de Publicação: 06 de Maio de 2004

De vez em quando passamos por situações em que o armazenamento é mais importante que a capacidade de processamento e que precisamos registrar muitas informações em um curto prazo de tempo, fazendo com que os arquivos de log fiquem monumentais.

Eu me deparei com algo assim, num script de sincronia entre servidores web que fiz no meu trabalho. O script precisa rodar de 1 em 1 minuto, gerando um log razoavelmente espaçoso.

Com as ferramentas padrões de compactação do Linux, gzip e bzip2, descobri que é possível algo tecnicamente estranho. Concatenar pedaços de texto compactado num mesmo arquivo e ao descompactar, obter o texto na forma correta.

Na prática:

  % echo 123 | gzip -f >> teste.gz
  % echo 456 | gzip -f >> teste.gz
  % echo 789 | gzip -f >> teste.gz
  % echo 101 | gzip -f >> teste.gz
  % gunzip teste.gz
  % cat teste
  123
  456
  789
  101

Com bzip2 é a mesma coisa, exceto que os parâmetros são diferentes.

  echo 123 | bzip2 -z >> teste.bz2
  echo 456 | bzip2 -z >> teste.bz2
  echo 789 | bzip2 -z >> teste.bz2
  echo 101 | bzip2 -z >> teste.bz2
  
  bunzip2 teste.bz2

Bom... diante deste recurso, dentro do script, eu mando as linhas de log da execução atual para um arquivo temporário, compacto ele e concateno no arquivo definitivo. Depois apago o arquivo temporário. Fazendo assim, eu elimino um gargalo de chamadas aos compactadores.

Ahhh... já ia me esquecendo... Prefira usar o GZIP ao invés do BZIP2 caso seu processador esteja no gargalo. O BZIP2 compacta bem mais no uso padrão, mas também usa bem mais processamento.



 

 

Veja a relação completa dos artigos de Herbert G. Fischer

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script