-->

quarta-feira, 25 de fevereiro de 2009

Dando uma acelerada nos backups com o Winrar.

Neste post eu vou discutir o fato de que o Winrar tenta comprimir até o que já está comprimido e como evitar isso.

Por default, o Winrar não diferencia arquivos por tipo. Ele tenta comprimir qualquer coisa, mesmo que as chances de compressão sejam pouquíssimas ou nulas. Tem um arquivo *.rar na lista? Ele tenta comprimir com a mesma paciência reservada para um *.bmp.

E isso pode ser um problemão para o usuário.

Como exemplo eu escolhi ao acaso um diretório de 190MB de fotos da minha câmera digital e mandei o Winrar comprimir para outro drive, usando compressão normal. O processo levou 6 minutos, ocupando 100% da CPU do meu PC, e produziu um arquivo de... 190MB.

Para ser justo, houve um ganho sim. Mas é preciso olhar nos números miúdos:

Original: 200.180.515 bytes
RAR: 200.144.574 bytes

Seis minutos para ganhar 36KB. Nem que eu fosse distribuir esse arquivo pela internet para mil pessoas esse ganho me interessaria. E olha que esse diretório é uma fração de um diretório maior de 13GB, só com imagens. Pelas minhas contas, se o RAR passasse por esse diretório inteiro ia levar quase 6 horas para ganhar menos de 3MB.

Por sorte, existem pelo menos dois meios de evitar que o Winrar faça isso.

Ao comprimir, mude o método de compressão para Armazenar (store):




Isso tem um inconveniente: todos os arquivos são armazenados sem compressão, mesmo que o Winrar encontre algo que seja altamente comprimível na pasta, como um arquivo *.wav. Por isso tem utilidade limitada. Por exemplo, a cópia offline que tenho do meu site inteiro tem 1GB numa mistura grande de arquivos não comprimíveis (jpg, zip, rar) com arquivos comprimíveis (html, bmp, wav) e seria improdutivo para mim ter que separar os arquivos por tipo para depois comprimir.

Isso nos leva ao segundo método, que eu considero bem melhor:




O Winrar não vai perder mais tempo tentando comprimir nenhum dos tipos de arquivo listados acima à medida que os for encontrando e vai simplesmente guardá-los dentro do .RAR. Os tipos de arquivos são separados com espaços. Se você usa o Cobian Backup já deve ter percebido que ele lhe dá essa opção também de listar os tipos de arquivo que não devem ser comprimidos.

Você pode definir uma lista a cada compressão ou pode definir uma lista que vai ser usada por default em todas as compressões. Para isso siga o caminho (Winrar 3.70):

Opções -> Configurações -> Compressão -> Criar Padrão -> Arquivos

Se quiser automatizar isso ainda mais, isso fica armazenado no Registro em:

HKEY_CURRENT_USER\Software\WinRAR\Profiles\0\StoreNames

Exemplo de arquivo .reg para aplicar em dois cliques:
---------------- recorte aqui ------------------------
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\WinRAR\Profiles\0]
"StoreNames"="*.rar *.zip *.7z *.cbr *.cbz *.jpg *.mp3 *.wma *.wmv *.avi *.mkv *.divx *.mpeg *.mpg *.ogm *.ogg *.rmvb *.mp4 *.aac *.m4a *.m4v *.vob

---------------- recorte aqui ------------------------

Infelizmente não parece haver um jeito fácil de dizer ao Winrar para ignorar também os arquivos de multivolumes que ele cria, porque para isso eu precisaria de uma máscara muito genérica do tipo *.r??, que pode atingir outros tipos de arquivo.

E usando "Armazenar" o Winrar levou apenas 30 segundos (contra seis minutos) para processar aquele diretório de 190MB do meu exemplo.

Um comentário:

Siga as regras do blog ou seu comentário será ignorado.