Eu já mencionei várias vezes o
Treediff tanto aqui neste blog quanto em outros lugares, mas só agora arrumei disposição para criar um post sobre ele. Como o assunto é extenso e eu tenho pressa para publicar este post porque está "segurando" a publicação de outros, eu poderei editá-lo consideravelmente no futuro.
Explicando por alto, Treediff é um programa de comparação de diretórios. Nada de especial até aí, pois com essa finalidade existem programas aos montes. Porém Treediff tem características simples mas únicas (e relevantes para mim) que eu jamais encontrei juntas em nenhum outro software. Ele pode salvar "snapshots" na forma de arquivos ASCII de toda a estrutura do diretório analisado com data, hora, tamanho e CRC32 de cada arquivo. Esses snapshots podem ser usados a qualquer tempo para comparação com a mesma estrutura de diretórios ou qualquer outra supostamente semelhante.
Talvez fique mais fácil entender se eu explicar o que faço com ele:
- 99% das vezes (nem sempre eu lembro) em que gravo um CD ou DVD, inclusive para clientes, gravo junto um snapshot de todo o seu conteúdo. Depois eu posso conferir o que foi gravado e ter certeza de que o conteúdo é 100% fiel ao que eu queria gravar. O primeiro teste eu sempre faço imediatamente após a gravação e assim me garanto contra qualquer susto provocado por gravador, software ou mídia quando um dia eu for precisar dos discos;
- Também faço uma cópia do snapshot em outro lugar, porque caso eu perca a mídia eu saberei exatamente o que havia nela. E poderei comparar o snapshot com outras versões do mesmo conteúdo para saber exatamente o que preciso restaurar para reconstruir a mídia perdida. Isso é especialmente valioso com meus DVDs de drivers e ferramentas;
- Eu faço snapshots de meus HDDs inteiros e deixo guardados. Se um dia eu desconfiar de uma possível infecção por file infector, posso comparar o conteúdo atual do drive com o snapshot para ter certeza. O conteúdo dos meus HDDs é mutante, claro, mas a ação de file infectors segue padrões do tipo: somente arquivos EXE estão diferentes, que são muito fáceis de flagrar quando se tem um snapshot;
- Eu ando com um pendrive de 4GB (eu usava um DVD, mas é um saco manter atualizado) lotado dos programas e ferramentas mais usados, cuja integridade pode ser verificada em qualquer computador, porque ele carrega também o Treediff e seu próprio snapshot;
- Quando eu troco o HDD e preciso mover meus dados, antes faço um snapshot da estrutura, copio os dados para o novo HDD e comparo a cópia com o snapshot. Só confio no novo HDD e apago a origem se estiver perfeito. Também faço um teste desse tipo ao trocar de placa-mãe. Mas a última vez em que eu flagrei dados corrompidos nesse teste ainda se usava drivespace/doublespace. A confiabilidade dos drives e interfaces atuais é fantástica;
- Eu posso pedir que alguém faça um snapshot de um disco que ele tem e me mandar por e-mail (dificilmente passa dos 100KB) para poder comparar com um disco meu;
- Em teoria (ainda não precisei fazer isso) eu posso manter snapshots da partição de sistema e saber com certa facilidade se algo foi corrompido ou infectado. Isso só funciona, claro, com partições de sistema pequenas, organizadas e com o Windows Update desligado;
Eu gravo snapshots também nos DVD-Video, mas como o Nero 6.x (meu programa de gravação preferido) não permite que você adicione em um DVD-Video nada mais que os arquivos normatizados, me impedindo de colocar um snapshot no disco, eu só uso o
ImgTool Burn (que não tem essa frescura) para fazer esse tipo de gravação.
Treediff é capaz de ler os
headers de diversos compactadores (ZIP, RAR, ARJ, etc), assim você consegue comparar um certo grupo de arquivos com o que está dentro de um arquivo compactado sem precisar extrair o conteúdo.
O relatório do Treediff usa um esquema de cores muito fácil de entender para mostrar as diferenças:
Como o Treediff mostra a velocidade com que lê os arquivos e seu algoritmo é muito rápido, eu também o uso como ferramenta para medir a velocidade de HDDs. No exemplo abaixo o Treediff está lendo arquivos a 90MB/s.
Como usar, em poucas palavras
- Para apenas criar o snapshot de uma estrutura, abra-a clicando em New Dir e depois tecle CTRL+T. Terminado o processo, salve com File Set -> Save New set as Snapshot.
- Para comparar, use os botões correspondentes no topo da janela. Você precisa abrir um "New...", um "Old..." e depois clicar em Diff.
Configurações (por alto)
Options - Status: É assim que configuro o meu. Selecionar
Checked Move FIles fará com que Treediff tente encontrar arquivos que foram movidos, mas isso pode retardar muito operações se o número de arquivos for muito grande (dezenas de milhares).
Options - Scanning : O meu fica configurado desse jeito. É importante sempre selecionar
System Files, Hidden Files e
Hidden Directories, porque não é default. Quando eu quero uma comparação rápida, só para ver se dois diretórios estão sincronizados, eu desmarco
Calculate CRC, porque isso acelera
muito a comparação. Mas normalmente eu mantenho selecionado. Note que em
Include filemask você pode pedir a Treediff para comparar apenas um tipo de arquivo. Isso é útil para procurar pela ação de
file infectors.
Você também pode configurar "ferramentas" para rodar nos resultados. No exemplo abaixo, eu configurei o Treediff para rodar meu programa
MyBinComp para analisar byte-a-byte os arquivos reportados como diferentes. Para evocar o programa configurado aqui basta clicar sobre a linha onde houve uma diferença e teclar CTRL+U.
Exemplos de status
Comparação perfeita. Existe um "inserted" no exemplo abaixo, mas isso ocorre por causa da minha adição do snapshot na mídia depois de ter feito o snapshot (obviamente).
Problema com datas. Note que
Identical é zero, mas
Differs também é. Como é altamente improvável que todos os 12054 arquivos tenham sido atualizados mas não sejam diferentes, você provavelmente está com uma timezone configurada incorretamente.
Inserted praticamente igual a deleted: Você pode ter renomeado uma pasta e Treediff considera que são duas coisas diferentes.
Todo programa concorrente do Treediff que eu já testei tem
um ou mais dos seguintes problemas:
- Compara, mas não salva snapshot;
- Se faz snapshot, usa um formato proprietário (Beyond Compare) que além de não poder ser verificado/editado com o Notepad (às vezes é útil fazer isso) me deixa com a preocupação de que um dia eu não possa mais ler minhas centenas de snapshots. O formato do Treediff é tão fácil de ler que tenho planos (que empurro com a barriga há anos) de criar minha própria versão do programa, com alguns recursos extras.
- Quer salvar um snapshot por arquivo ou por diretório. Sem a opção de salvar um apenas por estrutura;
Problemas que você pode encontrar:
- Treediff pode ter problemas com arquivos de mais de 4GB;
- Se o Treediff reportar que os arquivos apresentam uma diferença de 2s nos horários, isso se deve à granularidade do campo de 16bits que armazena a informação de data/hora no sistema de arquivos (acho que só ocorre em FAT/FAT32). É normal e pode ser ignorado. Inclusive me parece que a versão mais recente do Treediff leva isso em conta, porque faz muito tempo que não encontro esse problema.
- Se o Treediff reportar uma diferença consistente, precisa e inesperada de uma ou mais horas (até os segundos batem, mas as horas não) em todas as datas, verifique se a TimeZone do seu Windows está correta (GMT-3, geralmente);
- É incomum, mas normal que o Treediff acuse diferenças inesperadas em arquivos IFO e BUP (e somente nesses) de DVD-Video gravado em casa:
Nota: Para quem não sabe, arquivos BUP são BackUPs dos respectivos arquivos IFO. Uma salvaguarda do padrão DVD-Video porque um erro neles pode ser catástrófico para a exibição.
Não é culpa da mídia. Não importa quantas vezes você regravar, Treediff vai acusar o mesmo erro. E note como o CRC32 de cada BUP continua idêntico ao do respectivo IFO mesmo na versão alterada. Isso indica modificação deliberada e não corrupção ou erro de leitura. Depois de muito apanhar com esse problema eu cheguei à conclusão de que o programa de gravação automaticamente corrige alguns pequenos erros de autoração (realocação) antes de gravar. Isso acontece com uma pequena fração dos discos e sempre quando eu estou usando o ImgTool Burn.
Limitações (e aperfeiçoamentos que gostaria de fazer).
- A versão shareware manipula uma quantidade praticamente ilimitada (supostamente, 260 milhões) de arquivos, mas só exibe no relatório dois ou três mil. Na janela de status as diferenças são contadas corretamente, mas você pode não ser capaz de ver que arquivos são diferentes. Filtros também são desligados quando existem mais de 2317 arquivos. Snapshots são salvos e comparações são feitas com todos os arquivos, felizmente.
- Você não pode comparar usando apenas um ramo de um snapshot. Assim se eu tiver o snaphot de um HDD inteiro e quiser verificar a integridade de um diretório eu até posso, mas Treediff vai acusar a falta de todos os outros arquivos. E pode ser difícil separar isso. Ou até impossível, se forem muitos arquivos e você estiver usando a versão shareware;
- Edit: Não tem sinalização sonora para quando uma tarefa termina.
Alguma coisa não ficou clara? Comente. A clareza deste post é importante porque vou apontar todos os meus links referindo-se ao Treediff para ele. E vou fazer mais nos próximos dias.
Edit: como
este, no Sete Problemas.