Sto cercando un modo rapido per confrontare i contenuti della directory. È possibile eseguire un md5sum (o checksum equivalente) di un'intera directory?
Usando Ubuntu Linux
Sto cercando un modo rapido per confrontare i contenuti della directory. È possibile eseguire un md5sum (o checksum equivalente) di un'intera directory?
Usando Ubuntu Linux
Risposte:
Sicuro - md5sum directory/*
Se hai bisogno di qualcosa di un po 'più flessibile (ad esempio, per la ricorsione della directory o il confronto hash), prova md5deep.
apt-get install md5deep
md5deep -r directory
Per confrontare una struttura di directory, puoi dargli un elenco di hash da confrontare con:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Ciò produrrà tutti i file nella directory2 che non corrispondono alla directory1.
Questo non mostrerà i file che sono stati rimossi dalla directory1 o i file che sono stati aggiunti alla directory2.
-j0
che disabilita il multithreading (vedi la pagina man).
md5deep
con sudo apt-get install md5deep
on Ubuntu 16.04
ma quando ho provato a leggere la pagina man mi ha detto che> Nessuna voce manuale per md5deep
Se vuoi vedere cosa c'è di diverso (se non altro) tra due directory, rsync sarebbe una buona scelta.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Questo elencherà tutti i file che sono diversi.
diff -qr /source/directory/ /destination/directory/
mostrerebbe anche file diversi.
username@hostname:/destination/directory
penso di aver risposto a questo prima con questa risposta:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
dà: b1a5b654afee985d5daccd42d41e19b2877d66b1
l'idea è di eseguire l'hashing di tutti i file ritagliare gli hash uno per riga, ordinarli e hash che producono un singolo hash. questo non dipende dai nomi dei file.
L' applicazione cfv è abbastanza utile, non solo può controllare e creare checksum MD5, ma può anche fare CRC32, sha1, torrent, par, par2.
per creare un file checksum CRC32 per tutti i file nella directory corrente:
cfv -C
per creare un file checksum MD5 per tutti i file nella directory corrente:
cfv -C -t md5 -f "directory corrente.md5sums"
Per creare un file checksum separato per ogni sottodirectory:
cfv -C -r
Per creare un file di checksum "super" contenente file in tutte le sottodirectory:
cfv -C -rr
Ho usato l'hashdeep, come spiegato in questa risposta askubuntu: Verifica la correttezza dei file copiati :
Per calcolare i checksum:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Per verificare ed elencare le differenze:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
Questo ha un vantaggio rispetto a md5deep in quanto mostrerà i file rinominati (spostati), aggiunti e rimossi, oltre a evitare il problema con i file di lunghezza 0 indicati in fondo a http://www.meridiandiscovery.com/how- a / validating-copy-results-using-md5deep .
Questo ha funzionato per me: (eseguilo nella directory che ti interessa)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
È possibile creare somme MD5 di ogni singolo file, ordinare questi checksum in ordine alfabetico e averli (con o senza newline). Poiché MD5 è crittografico, dovrebbe funzionare perfettamente con gli hash degli hash.
Dovrebbe esserci un certo ordine per le cose, altrimenti otterrai risultati diversi per directory uguali.
E si dovrebbe considerare che l'aggiunta di alcuni file in una directory cambierà completamente il risultato, anche se era solo un .directory
di .DS_Store
file.
Come caso specifico, supponiamo che tu voglia copiare alcuni file da directory1 a directory2 e quindi vuoi verificare una copia corretta usando un confronto md5.
Primo. cd in directory1 e digitare:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
che creerà un file di riferimento contenente una somma md5 per ciascun file nella directory1. Una volta fatto, tutto ciò che devi fare è cd in directory2 e digitare:
md5sum -c ~/Desktop/md5sum.txt
Il programma md5sum recupera ogni percorso dal file md5sum.txt, calcola il md5sum di quel file nella cartella di destinazione e poi lo confronta con la somma che ha archiviato nel file.
Una volta completato il processo, otterrai un riepilogo del tipo "Così tanti file non corrispondono" o qualcosa del genere.
Ho avuto la necessità di verificare l'integrità dei backup / mirror che contengono un gran numero di file e ho finito per scrivere un programma da riga di comando chiamato MassHash. È scritto in Python. È anche disponibile un GTK + Launcher. Potresti volerlo controllare...