Ho notato che il post originale è piuttosto vecchio, tuttavia, penso che queste informazioni possano comunque essere utili per coloro che cercano una soluzione per verificare che i file vengano copiati correttamente. Rsync potrebbe essere il metodo migliore per copiare dati e le risposte fornite in questo thread sono buone, tuttavia per coloro che non hanno esperienza con Linux, proverò a fornire una spiegazione più dettagliata.
Scenario: hai appena copiato i dati da un disco a un altro, con molte sottodirectory e file. Si desidera verificare che tutti i dati siano stati copiati correttamente.
Verificare innanzitutto che md5deep sia installato eseguendo il comando md5deep -v
.
Se ricevi un messaggio che dice qualcosa come "comando non trovato", installa md5deep apt-get install md5deep
.
Si presume che tu voglia gestire solo i file normali. Se si desidera gestire altri tipi di file, fare riferimento al flag -o nel manuale md5deep. ( man md5deep
)
Ora sei a posto e supponiamo che tu abbia copiato i file da /mnt/orginal
a /mnt/backup
, sostituirli con tutte le directory che stai utilizzando.
Prima modifica alla directory di origine, questa è l'origine originale per i file copiati o sottoposti a backup:
cd /mnt/orginal
Quindi crea un checksum per ogni file:
md5deep -rel -o f . >> /tmp/checksums.md5
Questo comando ha spiegato:
-r
abilita la modalità ricorsiva
-e
visualizza l'indicatore di avanzamento
-l
abilita i percorsi dei file relativi.
-o f
funziona solo su file regolari (non bloccare dispositivi, named pipe ecc.)
.
dice a md5deep di avviarsi nella directory corrente.
>> /tmp/checksums.md5
dice a md5deep di reindirizzare tutto l'output a /tmp/checksums.md5
.
Nota, se si desidera sovrascrivere il contenuto nelle versioni precedenti di /tmp/checksums.md5
, utilizzare >
e non>>
Si noti che questo comando potrebbe richiedere del tempo, a seconda della velocità io e della dimensione dei dati. Potresti sperimentare nice e / o ionice per aumentare le prestazioni di md5deep, ma questo non rientra nell'ambito di questa risposta.
Al termine della creazione delle somme di controllo, ora hai un file con voci simili a:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-2013/etc2/78c01fdc78 /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
La prima colonna è la somma di controllo md5 e la seconda colonna è il percorso relativo al file a cui appartiene il checksum.
Se vuoi vedere quanti file esistono nel file checksum, emetti il comando:
wc /tmp/checksums.md5 -l
Ora, vuoi verificare che i dati copiati siano corretti:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
L'unica differenza rispetto a quando abbiamo creato i checksum è -X che visualizza l'hash corrente di un file se la voce nel file checksums.md5 non corrisponde. Quindi alla fine del test, se /tmp/compare.result
è vuoto, puoi fidarti che tutti i file vengono copiati correttamente poiché il checksum corrisponde.
Nota che solo i file elencati nel /tmp/checksums.md5
file verranno controllati per un checksum corretto, se ci sono altri file nella /mnt/backup
directory, md5deep non ti avviserà di questi.
Appunti:
Non è necessario utilizzare il reindirizzamento per archiviare i file di output. Fare riferimento al manuale di md5deep per ulteriori informazioni.
Potrebbe essere necessario eseguire i comandi md5deep come root, a seconda delle autorizzazioni dei file che si stanno gestendo.
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
Grazie mille.