Qual a melhor maneira de comparar árvores de diretórios enormes

5

Como posso comparar árvores de diretórios de tamanho enorme?

Estou pensando que uma ferramenta gratuita para fazer um instantâneo da estrutura do sistema de arquivos (listagem de arquivos e diretórios, seu tamanho e timestamps) seria ideal para que eu pudesse comparar o instantâneo com outro criado posteriormente.

Treecomp seria ótimo para isso, mas com uma árvore enorme (quero dizer realmente enorme!) ele cai porque ele tenta mantê-lo na memória (4GB de memória não são suficientes) ...

Eu trabalhei em torno do problema, dividindo os instantâneos em pedaços e comparar essas peças. Mas isso é entediante e o problema pode ser resolvido melhor.

Existe outra ferramenta gratuita (melhor também de código aberto) que eu posso experimentar? Ou há outra maneira de fazer isso que eu estou negligenciando?

O sistema operacional pode ser Linux ou Windows.

    
por jdehaan 30.09.2009 / 11:11

11 respostas

2

Vou tentar expandir um pouco sobre como fazer isso com o Total Commander (espero ter entendido o que você quer fazer).

  • instale o plug-in DiskDir (coloquei um link direto para o plugin, se preferir, você pode ir para < a página de plugins e procure pelo plugin DiskDir
  • depois que o plugin for instalado, "empacote" o diretório que você deseja acompanhar com Alt + F5 e selecione "lst" na lista suspensa na parte Packer da caixa de diálogo; isso criará um "pacote" que você pode inserir pressionando enter, como se fosse digitar um diretório e mostrará o conteúdo completo do diretório
  • ao comparar os resultados, vá para o diretório original no painel esquerdo e insira o instantâneo desejado no painel direito
  • use a função "Sincronizar Dirs", localizada no menu Comandos
  • na janela Sincronizar diretórios, desmarque comparar por conteúdo, marque Subdirecionais e Ignorar data (ou não, se a data da alteração for importante) e execute a comparação
  • A janela
  • mostrará arquivos iguais (neste caso, não por conteúdo, apenas por tamanho), arquivos diferentes e arquivos ausentes no lado esquerdo / direito

Como o instantâneo é um arquivo de texto simples e você não está comparando por conteúdo, ele deve ser rápido, mas nunca o usei para um diretório realmente grande.

Isso é útil se você não está fazendo backups, mas apenas deseja fazer um instantâneo do conteúdo do diretório em algum momento. Se você fizer backups, poderá usar a mesma ferramenta (Sincronizar dirs) para comparar também por conteúdo.

Há também uma versão estendida do plugin DiskDir, o link de download está no primeiro post . Esta versão permite que você tenha pacotes (como zip, 7z ...) como diretórios no instantâneo. Isso, obviamente, aumentaria o tempo para fazer um instantâneo.

    
por 30.09.2009 / 14:30
5

você pode simplesmente usar no terminal

du -a

Isso retornará todos os arquivos em todas as subpastas, incluindo os tamanhos, então apenas compare os arquivos

Para salvar os dados em um arquivo de texto

du -a > dump.txt

Então você pode usar apenas algo como diff para comparar os arquivos

Isto é para o linux: D

    
por 30.09.2009 / 12:53
2

Eu usei hashes MD5 e diff para comparar árvores no passado. É lento mas vai encontrar arquivos alterados nos casos em que as datas não são confiáveis. Também é portátil para que você possa transferir o índice em vez de comparar arquivos pela rede.

find /path/to/check -type f | xargs md5sum > after.txt

diff before.txt after.txt > diffs.txt
    
por 30.09.2009 / 17:14
1

Você pode usar o prompt de comando para despejar a listagem:

DIR /S >Listing1.txt

(você pode ajustar as opções se quiser, mas esta sintaxe básica provavelmente é boa o suficiente)

Para comparar as duas listagens, use qualquer ferramenta de comparação de arquivos, como o WinDiff ou o CompareIt etc. A WikiPedia tem uma lista dessas ferramentas aqui: link

    
por 30.09.2009 / 11:53
1

Uma semana atrás tire o primeiro instantâneo:

rsync --archive /the/source/ /var/snapshot1/

Agora tire um segundo instantâneo:

rsync --archive /the/source/ /var/snapshot2/

e compare-os:

rsync --archive --list-only /var/snapshot1/ /var/snapshot2/
    
por 22.01.2013 / 23:26
0

Eu fiz isso no Total Commander, usando o recurso de diretório sincronizar. Dados de 1,2 TB em duas unidades.

    
por 30.09.2009 / 11:29
0

Freecommander tem a opção de comparar duas pastas diferentes.

    
por 30.09.2009 / 11:32
0

Você também pode tentar:

Impressora de Diretórios da Karen

Karen's Directory Printer can print the name of every file on a drive, along with the file's size, date and time of last modification, and attributes (Read-Only, Hidden, System and Archive)! And now, the list of files can be sorted by name, size, date created, date last modified, or date of last access.

Gerador de listas de arquivos

FLG is a free File List Generator. It searches the directory tree for the files with the requested criteria and produces a list in HTML format.

    
por 30.09.2009 / 11:32
0

Você já tentou Voltar no tempo ?

É uma ferramenta GNU / Linux que faz um instantâneo de um sistema de arquivos usando links físicos ou cópias físicas de arquivos e diretórios.

É muito configurável e tem um daemon e partes da GUI que são executados separadamente.

    
por 26.12.2011 / 12:50
0

Você já tentou fundir ? Eu não tenho idéia se é bom para árvores enormes, mas você pode sempre tentar:)

Meld is a visual diff and merge tool targeted at developers. Meld helps you compare files, directories, and version controlled projects. It provides two- and three-way comparison of both files and directories, and has support for many popular version control systems.

Meld helps you review code changes and understand patches. It might even help you to figure out what is going on in that merge you keep avoiding.

    
por 30.09.2009 / 15:07
0

Você pode verificar Além da comparação .

Não é grátis, mas você pode testá-lo por 30 dias (dias úteis, não dias após a instalação). Talvez seja tempo suficiente para realizar sua tarefa.

    
por 22.01.2013 / 22:53