Après avoir copié, disons plus de 50 Go (30 000 fichiers, y compris différents formats) de fichiers d’un disque dur interne vers un lecteur externe. Existe-t-il un moyen de savoir si tout a été copié correctement? De plus, si je m'arrête entre les deux en annulant l'opération et que je dis plus tard fusion lors de la poursuite de l'opération, l'exactitude prendra-t-elle un coup?
Je pourrais utiliser des applications telles que back-in-time
mais je suis très difficile en copiant des fichiers et pour la prochaine fois, je compte utiliser l'opération copy
et dire merge
au lieu de replace
. Est-il conseillé de copier un grand nombre de fichiers?
J'utilise hashdeep pour vérifier les sauvegardes/restaurations et occasionnellement pour vérifier la corruption du système de fichiers dans un RAID.
La vitesse dépend des fonctions de hachage que vous utilisez (certaines utilisent plus le processeur que d’autres) ainsi que de la vitesse de lecture de vos disques. Sur mon système, hashdeep
peut traiter ou vérifier environ 1 To/heure avec une vitesse de lecture md5 et 300 Mo/s.
Exemple de calcul des sommes de contrôle et de leur stockage dans un fichier:
cd my-data
hashdeep -rlc md5 . > ~/checksums.txt
Paramètres:
r
- récursifl
- utilise des chemins relatifsc
- spécifie la fonction de hachage.
- récursif à partir du répertoire en cours>
- redirige la sortie vers le fichier spécifiéVoir le page de manuel .
Exemple de vérification de sommes de contrôle et d’impression d’une liste de différences:
$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
Files matched: 40914
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
Paramètres:
a
- audit (comparer avec la liste des sommes de contrôle connues)v
- verbose (pour obtenir une liste des incohérences, plusieurs v
s signifie plus prolixe)k
- fichier de hachages connusNotez que depuis mars 2016, hashdeep
semble être abandonné .
Cela semble être la tâche idéale pour rsync . Rsync compare et copie les diffs.
L'utilitaire rsync
m'est apparu lorsque j'ai vu votre question. Faire quelque chose comme ci-dessous pourrait rapidement montrer quels fichiers sont dans le répertoire a
mais pas dans b
name__:
$ rsync -rcnv a/* b/
-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files
that would be updated
-v will print the output to stdout verbosely
C'est une bonne option car vous pouvez également comparer le contenu des fichiers pour vous assurer qu'ils correspondent. rsync
name L'algorithme delta de __ est optimisé pour ce type de cas d'utilisation. Ensuite, si vous souhaitez que b
corresponde au contenu de a
name__, vous pouvez simplement supprimer l'option -n
pour effectuer la synchronisation réelle.
Quelques questions connexes:
Si les applications de l'interface graphique suggérées ci-dessus à Outil de comparaison de fichiers et de répertoires? ne le faites pas à votre place, essayez diff -rq /path/to/one /path/to/other
pour lire à travers les deux répertoires en silence, en enregistrant uniquement les différences avec l'écran.
La situation que vous dites est trop complexe. Bien que vous puissiez écrire un script pour calculer le MD5 de tous les fichiers que vous voulez copier, puis les comparer avec ceux copiés:
Si vous voulez quelque chose de simple et rapide (cela ne fonctionnera pas dans des scénarios très complexes), vous pouvez utiliser Meld
Sudo apt-get install meld
Sur le "si tout a été copié correctement", j'utilise un cp modifié (ou mv) qui inclut checksumming (éventuellement stocké dans xattr, il ne doit donc être calculé qu'une seule fois pour la source) http: // sourceforge .net/projects/crcsum /