15 votes

Vérifier l'exactitude des fichiers copiés

Après avoir copié, disons, 50+ Go (30 000 fichiers de différents formats) de fichiers d'un disque dur interne vers un disque externe, y a-t-il un moyen de savoir si tout a été copié correctement ? De plus, si je m'arrête entre-temps en annulant l'opération et que je dis ensuite fusionner si vous poursuivez l'opération, l'exactitude de l'opération sera-t-elle affectée ?

Je pourrais utiliser des applications comme back-in-time mais je suis très pointilleux en matière de copie de fichiers et pour la prochaine fois, j'ai l'intention d'utiliser copy opération et dire merge au lieu de replace . Est-il conseillé de copier un grand nombre de fichiers ?

20voto

Daniel Moore Points 193

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 sont plus gourmandes en ressources CPU 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 TB/heure avec md5 et une vitesse de lecture de 300 MB/s.


Exemple de calcul de sommes de contrôle et de leur stockage dans un fichier :

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

Paramètres :

  • r - récursif
  • l - utiliser des chemins relatifs
  • c - spécifier la fonction de hachage
  • . - récursif à partir du répertoire courant
  • > - redirige la sortie vers le fichier spécifié

Voir le page de manuel .


Exemple de vérification des 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 incompatibilités, de multiples v s signifie plus verbeux)
  • k - fichier de hachages connus

Notez qu'en mars 2016 hashdeep semble être abandonné .

15voto

Mark Harrison Points 77152

Cela semble être la tâche parfaite pour rsync . Rsync compare et copie les différences.

El rsync L'utilité m'est venue à l'esprit en voyant votre question. En faisant quelque chose comme ci-dessous, on pourrait rapidement voir quels fichiers se trouvent dans le répertoire a mais pas dans b :

$ 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 L'algorithme delta de l'entreprise est optimisé pour ce type d'utilisation. Alors si vous voulez faire b correspond au contenu de a vous pouvez simplement supprimer le -n pour effectuer la synchronisation proprement dite.

Quelques questions connexes :

8voto

Amanda Points 8437

Si les applications GUI suggérées sur le site Outil de comparaison de fichiers et de répertoires ? ne le font pas pour vous, essayez diff -rq /path/to/one /path/to/other pour parcourir les deux répertoires tranquillement, en enregistrant seulement les différences à l'écran.

3voto

puneet Points 1292

La situation que vous évoquez est trop complexe. Bien que vous puissiez écrire un script pour calculer le MD5 de tous les fichiers que vous voulez copier et plus tard 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

0voto

Hans Points 1

Pour ce qui est de la question "si tout a été copié correctement", j'utilise un cp (ou mv) modifié qui inclut le checksumming (optionnellement stocké dans xattr, donc il ne doit être calculé qu'une seule fois pour la source). http://sourceforge.net/projects/crcsum/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X