Domanda

Ho una grande directory che contiene solo cose in CS e Math. Ha una dimensione superiore a 16 GB. I tipi sono text, png, pdf e chm. Al momento ho due rami: un ramo di mio fratello e mio. I file iniziali erano gli stessi. Ho bisogno di confrontarli. Ho provato ad usare Git, ma c'è un lungo tempo di caricamento.

Qual è il modo migliore per confrontare due grandi directory?

[Soluzione mista]

  1. Esegui un " ls -R > & Different_files quot; in entrambe le directory [1]
  2. " sdiff < (echo file1 | md5deep) < (echo file2 | md5deep) " [2]

Cosa ne pensi? Qualche inconveniente?

[1] grazie a Paul Tomblin [2] grazie mille a tutti i ripetitori!

È stato utile?

Soluzione

Come confrontare 2 cartelle senza comandi / prodotti preesistenti:

Basta creare un programma che scansiona ogni directory e crea un hash di file per ogni file. Emette un file con ogni percorso relativo e l'hash del file.

Esegui questo programma su entrambe le cartelle.

Quindi confronta semplicemente i 2 file di output per vedere se sono uguali. Per confrontare quei 2 file basta caricarli in una stringa e fare un confronto di stringhe.

L'algoritmo di hashing che usi non ha importanza. Puoi usare MD5, SHA, CRC, ... È inoltre possibile utilizzare la dimensione del file nei file di output per ridurre il rischio di collisioni.

Come confrontare 2 cartelle con comandi / prodotti preesistenti:

Ora se vuoi solo un programma che lo faccia, usa diff -r o windiff per sistemi basati su Windows.

Altri suggerimenti

Usa fslint: sito web . Una delle opzioni dello strumento è & Quot; Duplicati & Quot ;. Secondo la descrizione dal sito: Una delle funzionalità più comunemente utilizzate di FSlint è la capacità di trovare file duplicati. Il modo più semplice per rimuovere lanugine da un disco rigido è scartare eventuali file duplicati che possono esistere. Spesso un utente di computer potrebbe non sapere di avere quattro, cinque o più copie dello stesso brano esatto nella propria raccolta musicale con nomi o directory diversi. Qualsiasi tipo di file, che si tratti di musica, foto o documenti di lavoro, può essere facilmente copiato e replicato sul tuo computer. Man mano che i duplicati vengono raccolti, si consumano nello spazio disponibile sul disco rigido. La prima opzione di menu offerta da FSlint ti consente di trovare e rimuovere questi file duplicati.

Usa md5deep per creare elenchi md5sum ricorsivi di ogni file in quelle directory.

È possibile utilizzare uno strumento diff per confrontare gli elenchi generati.

Stai solo cercando di scoprire quali file sono presenti in uno che non è nell'altro e viceversa? Un paio di suggerimenti:

  1. Esegui un " ls -R " in entrambe le directory, reindirizza ai file e diff i file.

  2. Esegui un " rsync -n " tra loro per vedere cosa rsync avrebbe dovuto copiare se gli fosse stato permesso di copiare. (-n significa che non esegui rsync, mostra solo cosa farebbe se lo avessi eseguito senza il -n)

Vorrei diff confrontando l'output di md5sum * | sort

Questo ti porterà ai file diversi / mancanti

So che a questa domanda è già stata data una risposta, tuttavia se non hai intenzione di scrivere tu stesso un tale strumento, c'è un progetto open source molto ben funzionante con il nome di tardiff disponibile su sourceforge che sostanzialmente fa esattamente quello che vuoi, e supporta persino la creazione automatica di patch (ovviamente in formato tar) per tenere conto delle differenze.

Spero che questo aiuti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top