Comparaison de fichiers — Wikipédia

Example d'interface de comparaison de fichiers.

En informatique, la comparaison de fichiers consiste à comparer leur contenu, en isolant leurs différences de leur contenu commun. Le résultat de la comparaison peut être affiché en environnement graphique GUI, en mode texte, ou comme partie de tâches plus larges en réseau, dans un système de fichiers ou un système de gestion de versions.

Les programmes de comparaison de fichiers les plus largement utilisés sont diff, cmp (Unix) (en) ou WinMerge.

De nombreux éditeurs de texte[1] et logiciels de traitement de texte[2] utilisent la comparaison de fichiers pour mettre en évidence les modifications apportées à un document.

Méthodes[modifier | modifier le code]

La plupart des outils de comparaison de fichiers utilisent la plus longue sous-séquence commune entre deux fichiers pour la supprimer ou l'insérer selon le besoin de présentation.

Un algorithme de comparaison spécifique est par ailleurs breveté[3].

Le protocole de mise à jour à distance rsync utilise la fonction de hachage Rolling hash (en) pour comparer deux fichiers sur deux ordinateurs distants.

Par ailleurs, la comparaison de fichiers pour le traitement de texte se limite généralement au niveau des mots alors que des algorithmes au niveau de la ligne sont généralement utilisés pour la plupart des outils de programmation.

Enfin, certaines applications peuvent la situer au niveau du Byte ou d'un caractère[4].

Logique sous-jacente[modifier | modifier le code]

La comparaison de fichiers est utilisée pour de multiples raisons. Pour la comparaison de fichiers binaires, la comparaison au niveau byte est certainement la meilleure. Mais pour la comparaison de fichiers texte, une comparaison visuelle étape par étape est généralement utilisée[5]. Cela confère à l'utilisateur la possibilité de décider quel fichier privilégier ; s'il faut par exemple fusionner le contenu de plusieurs fichiers pour refléter la somme des différences ou contributions ; ou également s'il faut les conserver tels quels pour y revenir ultérieurement; ces mécanismes apparaissent comme une forme de contrôle des versions[6] Ce contrôle des versions est également important à des fins de sauvegarde.

La comparaison de fichiers est aussi importante, et probablement partie intégrante de la synchronisation de fichiers et/ou de la sauvegarde. La corruption des données est un point crucial des méthodes de sauvegarde. Ce problème peut théoriquement intervenir sans avertissement ou sans que l'utilisateur en ait conscience. C'est pourquoi les outils de sauvegarde intègrent la plupart du temps des mécanismes de comparaison de fichiers[7].

Historique[modifier | modifier le code]

À l'origine et bien avant la comparaison de fichiers, certaines machines permettaient de comparer des bandes magnétiques ou des cartes perforées. La machine IBM 704 par exemple pouvait déterminer si un jeu de cartes perforées était équivalent par des opérations de reproduction. En 1957, John Van Gardner a développé un système pour comparer les sommes de contrôle des parties d'un code Fortran déjà chargées, et ce afin de déboguer les problèmes de compilation sur une machine IBM 704[8].

Notes et références[modifier | modifier le code]

  1. (en) Exemple du mode Diff pour GNU Emacs
  2. (en) LibreOffice
  3. (en) Brevet U.S. 7031972
  4. (en) Exemple du logiciel privateur BBEdit.
  5. À noter que la comparaison visuelle est également nécessaire pour les fichiers de programmes, typiquement du code source, qui sont basées sur des langages de programmation et sont donc lisibles par l'homme ou pouvant être traités par des scripts.
  6. (en) Exemple des outils vc-dwim et vc-chlog du projet GNU.
  7. (en) Exemple d'une sauvegarde avec SystemRescueCd et rsync.
  8. (en) [PDF] « Fortran And The Genesis Of Project Intercept » - par John Van Gardner

Articles connexes[modifier | modifier le code]