Commande UNIX: plus rapide que diff

J’ai longtemps fait des sauvegardes sur deux disques externes. Et ces lecteurs me rendent fou.

Bien que les informations générales stockées sur 2 lecteurs soient identiques, leur taille de fichier est différente, à cause des fichiers cachés (comme .DS_Store). Jusqu’à présent, j’ai utilisé la taille du répertoire racine pour être sûr que ces deux sauvegardes sont identiques. Si les deux racines indiquent la même taille en octets, je suis sûr qu’elles sont identiques. Mais les fichiers cachés sont vraiment pénibles.

J’ai essayé d’utiliser diff, de cette façon:

diff -rq -x '.*' dir1 dir2 

Mais c’est incroyablement lent . Je vous en prie, les gars, aidez-moi à trouver un moyen de vérifier si deux répertoires énormes contiennent les mêmes données.

Mon idée est de faire une commande récursive qui ne comparerait que les noms de fichiers + tailles de fichiers. Cela devrait être beaucoup plus rapide que diff, qui compare chaque fichier.

PS: la sauvegarde a plus de 700 Go.

Vous pouvez utiliser rsync pour vous montrer ce qui est différent avec quelque chose du genre:

 rsync -aHv --delete --dry-run dir1/ dir2/ 

Ce n’est pas forcément le format de sortie le plus utile si vous voulez le traiter avec d’autres utilitaires, mais pour une évaluation humaine, ça va …

Vous pouvez envisager de calculer une sum de contrôle sur les deux lecteurs et de comparer la sortie. cela devrait être beaucoup plus rapide que diff, même si cela prendra du temps à courir.

Essayer:

 $ find -s somedir -not -path '*/\.*' -type f -exec md5sum {} \; | md5sum 

Vous pouvez voir dans la commande find que les fichiers cachés sont ignorés.

Vous pouvez également penser à un moyen de calculer la taille du répertoire sans fichiers cachés.

Référencé à partir de: https://unix.stackexchange.com/questions/35832/how-do-i-get-the-md5-sum-of-a-directorys-contents-as-one-sum