Comment vérifier qu'un fichier a été copié ?
Publi� le 22 novembre 2006

Il existe une méthode simple pour savoir si la copie d'un fichier s'est bien déroulée. Il suffit de comparer le contenu de la source et de la destination. Pour cela, il existe des utilitaires gratuits comme cmp.

Pour les répertoires, il y a plusieurs méthodes qui sont plus ou moins rapides et sûres. Par ordre croissant de rapidité (et décroissant de sûreté) :

1) on copie la destination quelque part sur le disque pour vérifier que tout est lisible. Inutile de charger le disque dur, on peut copier dans le périphérique virtuel /dev/null qui correspond à une corbeille en quelque sorte. La commande cp ne permet pas de copier dans un périphérique. On utilisera, par exemple, un utilitaire très pratique : cpio.


$ cpio --help
Usage
: cpio [OPTION...] [destination-directory]
GNU `cpio' copies files to and from archives

Examples:
  # Copy files named in name-list to the archive
  cpio -o < name-list
[> archive]
  # Extract files from the archive
  cpio -i
[< archive]
  # Copy files named in name-list to destination-directory
  cpio -p destination-directory < name-list

Voici la commande :


$ find /repertoire_source/ | cpio -ov >/dev/null

2) on vérifie en plus la taille des fichiers

3) on calcule un code de hachage (CRC32, MD5, etc.) pour chaque fichier copié et on compare avec la source.

4) on vérifie le contenu. Notez que cela peut prendre énormément de temps en fonction du poids de ce contenu. Là on utilise la fonction "récursive" de diff.


$ diff -r repertoire_source repertoire_destination

Le 3) est un bon compromis en rapidité et sûreté.