Comparer deux dossiers sur Mac et voir ce qui diffère

Le Finder ne sait pas comparer deux dossiers. Vous avez copié un dossier sur un disque externe, un NAS ou un cloud et vous voulez savoir si la copie est complète ? Vous avez deux versions d'un projet et vous voulez voir ce qui a changé ? Sur Mac, trois moyens s'offrent à vous : la commande diff dans le Terminal, l'app FileMerge d'Apple (fournie avec Xcode), ou un gestionnaire de fichiers doté d'un outil de comparaison, comme Folia Files. Tous trois listent les fichiers présents d'un seul côté et ceux qui existent des deux côtés mais diffèrent.
Pourquoi le Finder ne vous le dira pas
Le Finder s'en approche au mieux avec Lire les informations (⌘I) sur chaque dossier, qui en donne la taille et le nombre d'éléments. Des chiffres identiques laissent penser que les dossiers sont pareils, sans le prouver : un fichier peut changer sans changer de taille, comme un fichier texte où l'on a corrigé une lettre. Et si les chiffres diffèrent, rien ne dit quels fichiers manquent. Il ne reste qu'à ouvrir les deux dossiers côte à côte et à vérifier les noms un par un.
Comparer deux dossiers dans le Terminal avec diff
macOS contient la commande diff ; avec deux options, elle compare des dossiers entiers :
diff -rq ~/Pictures/Islande /Volumes/Sauvegarde/Islande
-r descend dans chaque sous-dossier, et -q se contente de dire quels fichiers diffèrent, au lieu d'afficher ce qui a changé à l'intérieur de chacun. Pour ne pas taper les chemins, tapez diff -rq , puis glissez chaque dossier du Finder dans la fenêtre du Terminal.
La réponse contient deux sortes de lignes :
Files /Users/alex/Pictures/Islande/IMG_4021.jpg and /Volumes/Sauvegarde/Islande/IMG_4021.jpg differ
Only in /Users/alex/Pictures/Islande: IMG_4048.jpg
Only in désigne un fichier ou un dossier présent d'un seul côté (pour un dossier, son contenu n'est pas détaillé). Files … differ signifie que le fichier est des deux côtés, sous le même nom et au même endroit, avec un contenu différent. Si diff n'affiche rien, les deux dossiers contiennent les mêmes fichiers, avec le même contenu.
Quelques points à savoir :
difflit les fichiers pour les comparer. C'est exact (les dates ne comptent pas), mais lent sur une grosse photothèque, des vidéos ou un disque réseau.- Les fichiers
.DS_Storecachés du Finder diffèrent souvent d'une copie à l'autre. Écartez-les avec-x .DS_Store. - Pour vérifier seulement les noms, sans lire un seul fichier (rapide, même sur un disque lent), comparez les deux listes de fichiers :
diff <(cd ~/Pictures/Islande && find . | sort) <(cd /Volumes/Sauvegarde/Islande && find . | sort)
Les lignes qui commencent par < n'existent que dans le premier dossier, celles qui commencent par > que dans le second.
Comparer des dossiers avec FileMerge
FileMerge est l'app de comparaison d'Apple. Elle est gratuite, mais fournie avec Xcode, l'outil des développeurs d'Apple, un gros téléchargement sur le Mac App Store ; les Command Line Tools, plus légers, ne la contiennent pas. Une fois Xcode installé :
- Ouvrez FileMerge depuis le menu d'Xcode, Xcode › Open Developer Tool › FileMerge (Xcode n'existe qu'en anglais), ou tapez
opendiffsuivi des deux dossiers dans le Terminal. - Choisissez un dossier à gauche et un à droite, puis cliquez sur Compare.
FileMerge liste les fichiers des deux dossiers : les fichiers identiques en gris, ceux qui diffèrent ou qui n'existent que d'un côté en noir. Double-cliquez sur un fichier pour voir ses deux versions ligne par ligne. L'app est faite pour le code : pour un fichier texte, elle montre exactement ce qui a changé, mais pour une photo, une vidéo ou un PDF, elle ne peut que dire qu'ils diffèrent.
Comparer deux dossiers dans Folia Files
Folia Files a un outil Comparer qui présente le résultat dans un tableau que l'on peut trier et qui copie ce qui manque, dans un sens ou dans l'autre. Il est dans les deux versions, celle du site et celle du Mac App Store.
- Ouvrez les deux dossiers dans deux panneaux, côte à côte (afficher deux dossiers côte à côte sur Mac). C'est facultatif, mais l'outil Comparer part des dossiers des deux premiers panneaux.
- Choisissez Outils › Comparer… (⇧⌘K), ou cliquez sur Outils dans la barre d'outils, puis sur Comparer. L'outil s'ouvre dans un onglet.
- Vérifiez les dossiers Gauche et Droite. Choisir… en prend un autre ; les flèches entre les deux les inversent.
- Cliquez sur Comparer.

Chaque fichier reçoit l'un de ces quatre états :
- Différent : des deux côtés, mais pas pareil ;
- Seulement à gauche et Seulement à droite : absent de l'autre dossier ;
- Identique : le même des deux côtés.
Les boutons au-dessus de la liste comptent les fichiers de chaque état et filtrent la liste. Les fichiers identiques sont d'abord masqués : ce que vous voyez, c'est ce qui demande votre attention ; cliquez sur Identique pour les afficher aussi. Les colonnes Gauche, Modifié (gauche), Droite et Modifié (droite) donnent la taille et la date de chaque côté : vous voyez quelle copie est la plus récente.

Rapide ou exact
Par défaut, Folia Files ne lit pas les fichiers : deux fichiers sont Identique quand ils ont la même taille et la même date de modification, à deux secondes près. C'est rapide, même pour des milliers de photos.
Cochez Comparer le contenu (plus lent, exact) quand les dates ne sont pas fiables. Une copie qui n'a pas gardé les dates d'origine (faite avec cp sans -p, ou téléchargée de nouveau depuis le site d'un cloud, par exemple) fait paraître chaque fichier Différent. Avec cette option, les fichiers de même taille sont comparés par leur empreinte SHA-256 et les dates sont ignorées. Des fichiers de tailles différentes sont toujours Différent.
Quelques règles encore :
- Un sous-dossier présent des deux côtés n'apparaît pas lui-même : ses fichiers, si, avec leur chemin dans le dossier.
- Un dossier présent d'un seul côté apparaît une fois, comme Dossier, sans son contenu.
- Les fichiers cachés sont laissés de côté, sauf si vous cochez Fichiers masqués, et les fichiers
.DS_Storedu Finder sont toujours ignorés. - Les fichiers sont associés par leur chemin. Un fichier renommé dans un dossier apparaît deux fois : Seulement à gauche sous un nom, Seulement à droite sous l'autre.
Copier ce qui manque
Sélectionnez des lignes (⌘-clic ou ⇧-clic pour en prendre plusieurs) et cliquez sur Copier la sélection vers la droite → ou ← Vers la gauche, en bas de l'outil. Les mêmes commandes sont dans le menu du clic droit (Copier vers la droite →, ← Copier vers la gauche), à côté d'Afficher à gauche dans Folia Files et d'Afficher à droite dans Folia Files, qui vous amènent à ce fichier dans le panneau actif.
- Les sous-dossiers manquants sont créés de l'autre côté.
- Si le fichier y est déjà (un fichier Différent), Folia Files demande quoi faire. Garder les deux est le choix par défaut ; Si plus récent ne le remplace que si le fichier copié est plus récent ; Remplacer envoie l'ancienne version à la corbeille une fois la nouvelle entièrement copiée ; Ignorer n'y touche pas.
- Une fois la copie faite, la comparaison est relancée. Les fichiers copiés gardent leur date de modification : en général, ils deviennent Identique et quittent la liste. Les copies sont notées dans l'historique Opérations, comme toute autre copie.
Voir ce qui a changé dans un fichier
Double-cliquez sur un fichier Différent, ou faites un clic droit dessus et choisissez Voir les différences. L'outil passe à sa vue Fichiers et montre les deux versions d'un fichier texte côte à côte, ligne par ligne : les lignes retirées en rouge, les lignes ajoutées en vert, avec le nombre de lignes ajoutées et retirées. Pour les autres fichiers, photos ou PDF par exemple, il dit s'ils sont identiques, avec leur taille.
Lequel choisir
- Une vérification rapide et exacte, si le Terminal ne vous fait pas peur :
diff -rq. - Deux versions de code ou de fichiers texte, si vous avez Xcode : FileMerge.
- Vérifier qu'une copie ou une sauvegarde est complète et la corriger sur-le-champ, surtout avec des photos et des documents : l'outil Comparer de Folia Files.
Si vous recopiez les mêmes différences chaque semaine, une synchronisation le fera pour vous : voyez comment synchroniser deux dossiers sur Mac. Et pour les copies que vous ferez désormais, Folia Files peut vérifier chaque fichier en le copiant : cochez Réglages › Fichiers et réseau › Vérifier chaque fichier copié sur un autre disque (relu et comparé, plus lent).


