Comment comparer le contenu de deux dossiers et les synchroniser

Supposons que vous ayez créé une tâche de sauvegarde XCopy, SyncToy ou tout autre outil pour copier en miroir un certain répertoire vers un emplacement différent. Si vous utilisez Microsoft SyncToy, il est possible que parfois les fichiers ou les dossiers soient manquants dans la destination, ou que le dossier de destination contienne des fichiers ou des dossiers supplémentaires qui ne se trouvent pas dans le dossier source.

Cet article vous explique comment comparer la structure de répertoires (ainsi que les fichiers) dans deux chemins de répertoires différents pour vous assurer que vous disposez d'une réplique exacte ou d'une copie miroir de la source. Certaines des méthodes ci-dessous expliquent également comment synchroniser des éléments dans deux dossiers après avoir comparé.

Il existe 12 méthodes de comparaison de dossiers (pour Windows) abordées dans cet article. Choisissez celui qui vous convient le mieux. Si vous devez vérifier l'intégrité des fichiers après la synchronisation, utilisez l'une des procédures de vérification de somme de contrôle de hachage répertoriées ci-dessous.

Comparez le contenu de deux dossiers à l'aide de WinDiff de Microsoft

WinDiff est un outil de comparaison de fichiers graphiques de Microsoft qui a été publié pour la première fois en 1992 et mis à jour par la suite. Se il vous plaît tenir! Ne soyez pas surpris par l'année de la sortie initiale.

WinDiff est toujours génial et il fonctionne parfaitement bien dans Windows 10, mais pas de support Unicode. Il a un énorme potentiel. WinDiff peut comparer des fichiers ASCII et binaires, comparer deux répertoires et synchroniser les dossiers (dossier gauche → dossier droit, ou vice-versa).

Lien de téléchargement WinDiff (miroir local). La dernière version mise à jour de WinDiff est 5.2.3790.0 avec le cachet Date modifié montrant 4-7-2016.

Vous pouvez également télécharger WinDiff dans le cadre du package des outils de support de Windows XP et extraire son contenu à l'aide de 7-Zip.

Pour effectuer une comparaison de répertoires à l'aide de WinDiff:

  1. Démarrez Windiff.exe.
  2. Dans le menu Fichier, cliquez sur Comparer les répertoires.
  3. Dans la boîte de dialogue Sélectionner les répertoires, tapez les deux noms de dossier que vous souhaitez comparer dans les zones Dir1 et Dir2. Si vous souhaitez comparer les fichiers de ces dossiers de manière récursive, cochez la case Inclure les sous-répertoires .

Les résultats ou la fenêtre de contour par défaut montrent des fichiers identiques ainsi que les différences. Vous pouvez masquer des fichiers identiques en désactivant Afficher les fichiers identiques dans le menu Options.

Comme vous pouvez le voir, WinDiff ne compare pas seulement les noms de fichiers mais compare également le contenu des fichiers aux deux emplacements et met en évidence les modifications si le contenu des fichiers est différent.

Un double-clic sur l'élément «différent» ouvre la vue de comparaison avec codage couleur. Les résultats codés par couleur indiquent les différences de fichier.

WinDiff peut faire des comparaisons ASCII et binaires. Cela signifie que WinDiff ne s'appuie pas sur une date modifiée mais compare le contenu réel des fichiers.

Par exemple, j'ai modifié un caractère dans un fichier texte dans le dossier de destination (dossier de droite). J'ai remplacé un point d'exclamation par deux points, et la taille du fichier est exactement la même (1 127 octets) dans les deux emplacements. WinDiff l'a ramassé et a montré que les fichiers sont différents.

Pour enregistrer les différences de comparaison de répertoires dans un fichier, cliquez sur Enregistrer la liste des fichiers dans le menu Fichier. Tapez un nom de fichier avec un chemin complet sans guillemets doubles.

Décochez les fichiers identiques et les options Inclure les sommes de contrôle, puis cliquez sur OK. Le fichier de sortie ressemblera à ceci:

 - D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019: E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 - inclut gauche uniquement, droite uniquement, fichiers différents. \ accesschk.exe uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ compare-folder.txt uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ Fta-1803-w10.txt uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ Ssh-commandes-utile .txt uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ dell-supportassist.png uniquement dans D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ disable-theme-sync-ramesh.png différent (E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 est plus récent). \ 05 \ file-explorer- not-highlight-files.png uniquement dans D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ firefox-oubliez-ce-site-4.png differe nt (E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 est plus récent). \ 05 \ msconfig-disable-services-non-microsoft.png uniquement dans D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ windows-store-error-0x800706d9.png uniquement dans D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ notepad-bing-search .png uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ rundll32-refresh-commands.txt uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ 404chk.vbs uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ actxprxy-missing -issues.txt uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ apps.png uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ articles.vbs uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ upl oads \ 2019. \ 06 \ archives \ bash-sh.vbs uniquement dans E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019-17 fichiers répertoriés 

Étant donné que le fichier de sortie est au format délimité par des tabulations, vous devriez pouvoir importer facilement dans Microsoft Office Excel ou Google Sheets.

Notez que vous pouvez démarrer WinDiff directement avec les chemins source et de destination comme commutateurs supplémentaires pour la comparaison de répertoires. Par exemple, le lancement de windiff.exe "c:\source" "d:\destination" lancerait l'outil et comparerait immédiatement ces deux chemins de dossier.

Commutateurs de ligne de commande WinDiff

Voici la liste complète des commutateurs de ligne de commande WinDiff.

 Utilisation: windiff [options] path1 [path2] Options: -D Compare un seul répertoire. -F [drapeaux] savefile Enregistrer le fichier composite dans 'savefile'. Les `` drapeaux '' peuvent être constitués d'un ou plusieurs de I (identiques), L (gauche), R (droite), F (gauche déplacée), G (droite déplacée), S (similaire gauche), A (similaire à droite), X (quitter après avoir enregistré la liste). (par exemple, -FLF enregistre la liste des lignes gauches ou déplacées). -I fichier Lit la liste des fichiers à comparer, à partir du fichier d'entrée spécifié. Chaque ligne peut contenir un ou deux noms de fichiers, séparés par des espaces (avec guillemets, si les noms de fichiers contiennent des espaces). Utilisez "-" comme nom de fichier pour lire depuis stdin. Si une ligne ne contient qu'un seul nom de fichier, le fichier est comparé à lui-même. -N nom NET SEND notification à «nom» à la fin de la comparaison. -O Vue d'ensemble (pas d'extension automatique). -P Comparaison perverse: casse les lignes sur la ponctuation. -S [drapeaux] savefile Enregistrer la liste des fichiers dans 'savefile'. Les «drapeaux» peuvent être constitués d'un ou plusieurs de S (même), L (gauche), R (droite), D (différent), X (quitter après avoir enregistré la liste). (par exemple, -SLD enregistre la liste des fichiers gauches ou différents). -T Compare le sous-arbre entier. 

Pour enregistrer le rapport de comparaison dans un fichier à l'aide du commutateur -S . Voici des exemples:

Enregistrez la liste des fichiers identiques dans diff.txt:

 -SS D: \ sortie \ diff.txt c: \ dossier1 d: \ dossier2 

Enregistrez la liste des différents fichiers dans diff.txt:

 -SD D: \ output \ diff.txt c: \ folder1 d: \ folder2 

Enregistrez la liste des fichiers de gauche uniquement dans diff.txt:

 -SL D: \ output \ diff.txt c: \ folder1 d: \ folder2 

Enregistre la liste des fichiers accessibles uniquement à droite dans diff.txt:

 -SR D: \ output \ diff.txt c: \ folder1 d: \ folder2 

Enregistre la liste des fichiers uniquement à gauche ET à droite uniquement dans diff.txt:

 -SLR D: \ output \ diff.txt c: \ folder1 d: \ folder2 

Pour quitter WinDiff automatiquement après avoir enregistré le rapport de comparaison, ajoutez le commutateur X, comme ci-dessous:

Enregistrez la liste des fichiers accessibles uniquement à droite dans diff.txt et quittez WinDiff

 -SRX D: \ output \ diff.txt c: \ folder1 d: \ folder2 

Enregistrez la liste des fichiers uniquement à gauche ET à droite uniquement dans diff.txt et quittez WinDiff

 -SLRX D: \ output \ diff.txt c: \ folder1 d: \ folder2 

Pour générer les 5 fichiers «journaux» individuels, vous devez exécuter WinDiff 5 fois.

Exemple:

 windiff -SSX identique.txt c: \ folder1 d: \ folder2 windiff -SDX different.txt c: \ folder1 d: \ folder2 windiff -SLX left-only.txt c: \ folder1 d: \ folder2 windiff -SRX right-only .txt c: \ folder1 d: \ folder2 windiff -SLRX left-right-only.txt c: \ folder1 d: \ folder2 

Voir aussi Contenu du fichier d'aide de WinDiff (windiff.hlp) au format HTML.

Synchroniser les dossiers avec WinDiff

Quoi de plus? WinDiff peut également copier les fichiers manquants ou différents à gauche (dossier 1) ou à droite (dossier 2). Faire cela,

  1. Dans le menu Fichier, sélectionnez Copier les fichiers
  2. Tapez le chemin du dossier où vous souhaitez copier les fichiers manquants / différents.

    Important: n'utilisez pas de guillemets doubles autour du chemin du dossier même si le chemin du dossier contient des espaces. WinDiff ne parvient pas à copier les fichiers si vous ajoutez des guillemets doubles au chemin d'accès.

  3. Choisissez la copie de l'emplacement (arbre de gauche à arbre de droite ou vice-versa)
  4. Décochez Fichiers identiques et cliquez sur OK.

    WinDiff synchronise maintenant le dossier en copiant récursivement les fichiers manquants et modifiés à l'emplacement spécifié (gauche → droite).

Malgré l'excellente comparaison ASCII et binaire et les capacités de synchronisation de base, WinDiff est souvent un outil sous-estimé parmi les informaticiens. En effet, il arbore une interface utilisateur obsolète et ne prend pas en charge Unicode. Mais WinDiff est suffisant pour la plupart d'entre nous, en particulier ceux qui utilisent le système d'exploitation en anglais.

Microsoft a un article de la base de connaissances sur WinDiff, intitulé Comment utiliser l'utilitaire Windiff.exe que vous pouvez consulter.

Comparez le contenu de deux dossiers à l'aide de WinMerge

Voici comment comparer deux dossiers avec des sous-dossiers, à l'aide de WinMerge.

WinMerge est un outil de différenciation et de fusion Open Source pour Windows. Il peut comparer les dossiers et les fichiers, présentant des différences dans un format de texte visuel facile à comprendre et à gérer. Utilisons-le pour comparer le contenu de deux dossiers avec leurs sous-dossiers (c'est-à-dire récursivement).

  1. Démarrez WinMerge. Dans le menu Fichier, cliquez sur Ouvrir

  2. Parcourez pour sélectionner le 1er dossier et le 2e dossier à comparer.
  3. Assurez-vous que le filtre est défini sur *.* Afin que tous les fichiers soient comparés. L'option «Inclure les sous-dossiers» (compare récursivement) est activée par défaut. Si vous souhaitez comparer les fichiers du répertoire de niveau supérieur uniquement, décochez l'option.
  4. Cliquez sur Comparer

    WinMerge génère des résultats de comparaison de dossiers, mettant en évidence les différences de couleur jaune.

  5. Dans le menu Outils, cliquez sur Personnaliser les colonnes… . Choisissez les colonnes que vous souhaitez, telles que Left size Right size, Left date Right date parmi les nombreuses autres options de colonne fournies.

  6. Développez l'entrée «Les dossiers sont différents » en double-cliquant dessus. Il affiche la liste des fichiers différents, « uniquement à gauche », «à droite uniquement » ainsi que les fichiers identiques .

    Remarque: Vous pouvez choisir de masquer les fichiers et dossiers identiques en décochant «Afficher les éléments identiques» dans le menu Affichage de WinMerge.

L'avantage d'utiliser WinMerge est qu'il propose cinq méthodes de comparaison de fichiers différentes:
  1. Contenu complet (par défaut): comparaison complète des fichiers par contenu, avec toutes les cloches et les sifflets. Cette méthode appelle des plugins et utilise le moteur diffutils pour une différenciation entièrement précise et une détection de bloc déplacé. Il s'agit de la méthode la plus complète et recommandée.
  2. Contenu rapide: comparaison allégée des fichiers par contenu. Cette méthode utilise un code de comparaison de fichiers rationalisé qui ignore les plugins et la détection des blocs déplacés. Cette méthode est plus rapide que le contenu complet, car elle ne charge pas les fichiers. Son inconvénient est que les filtres de ligne ne sont pas appliqués lors de la comparaison. Par exemple, cette méthode considère le fichier comme différent même si les filtres de ligne sont définis pour ignorer toutes les différences dans les fichiers.
  3. Date de modification: compare uniquement les dates de modification sur les fichiers, il est donc beaucoup plus rapide que l'une des méthodes de contenu. Mais évidemment, elle n'est aussi précise que les dates de modification.
  4. Date et taille modifiées: semblable à la date modifiée, mais vérifie également la taille des fichiers lorsque les dates sont identiques.
  5. Taille: compare uniquement les tailles de fichier, il est donc rapide mais pas aussi précis que les méthodes de contenu.

WinMerge prend en charge de nombreux commutateurs de ligne de commande. Consultez le manuel WinMerge pour la liste complète des commutateurs de ligne de commande pris en charge.

Synchroniser les dossiers avec WinMerge

Si vous avez décoché la case Afficher les éléments identiques dans le menu Affichage de WinMerge, il ne montre que la liste des fichiers modifiés, uniquement à gauche et à droite. Il est facile de synchroniser les éléments de gauche à droite ou vice versa.

Tout ce que vous avez à faire est de sélectionner les fichiers (ou tout sélectionner), faites un clic droit sur la sélection et cliquez sur Copier. Dans le sous-menu Copier, choisissez l'une des options:

  1. De gauche à droite: copiez les fichiers sélectionnés du dossier de gauche vers la droite.
  2. De gauche à…: copiez les fichiers du dossier de gauche dans un autre dossier.
  3. De droite à gauche: copiez les fichiers sélectionnés du dossier de droite vers la gauche.
  4. Droit à… : copiez les fichiers du dossier de droite dans un autre dossier.


Méthode 3: Comment comparer des fichiers dans deux dossiers à l'aide de FreeFileSync

FreeFileSync est un logiciel de comparaison et de synchronisation de dossiers open source qui crée et gère des copies de sauvegarde de tous vos fichiers importants.

  1. Téléchargez FreeFileSync et installez-le.
  2. Pour comparer les dossiers par contenu de fichier au lieu de la taille du fichier ou de la date de modification, choisissez Contenu du fichier dans les options de comparaison. La comparaison par taille de fichier sera cependant beaucoup plus rapide et nécessitera moins de ressources.
  3. Sélectionnez le dossier de gauche et le dossier de droite.
  4. Cliquez sur le bouton Comparer (Contenu du fichier) .

    Il compare les éléments des deux dossiers de manière récursive et affiche la liste des fichiers nouveaux et modifiés.

    Les fichiers identiques sont masqués dans la sortie. Il affiche les fichiers de gauche uniquement, les fichiers différents et les fichiers de droite uniquement par défaut, et les options peuvent être basculées à l'aide des boutons en bas de la fenêtre FreeFileSync.

Synchroniser les dossiers à l'aide de FreeFileSync

FreeFileSync offre les options de synchronisation suivantes similaires à Microsoft SyncToy.

  1. Synchronisation bidirectionnelle: identifiez et appliquez les modifications des deux côtés. Les suppressions, déplacements et conflits sont détectés à l'aide d'une base de données.
  2. Miroir: le miroir est la synchronisation gauche → droite. Le dossier droit deviendra une copie miroir du dossier gauche. C'est la même chose que l'option Echo de Microsoft SyncToy et la ligne de commande robocopy / mir. Les fichiers et dossiers supplémentaires dans le dossier de droite sont supprimés et différents fichiers sont remplacés.
  3. Mise à jour: cette option de synchronisation effectue une synchronisation du dossier gauche → du dossier droit similaire à l'option Miroir . Cependant, cette option ne supprime pas les fichiers et dossiers supplémentaires dans la bonne arborescence de dossiers. Il est similaire à l'option Contribute de Microsoft SyncToy.
  4. Personnalisé: en plus des trois options prédéfinies ci-dessus, l'option Personnalisé vous permet de choisir votre action par défaut sur la façon de traiter un fichier de gauche uniquement, un fichier modifié ou le fichier de droite uniquement. Par exemple, vous pouvez le configurer pour supprimer des fichiers identiques si votre exigence est de n'avoir que des fichiers uniques (éliminer les doublons) dans les dossiers de gauche et de droite. Dans la plupart des cas, vous n'avez pas besoin de choisir le paramètre personnalisé, sauf si vous avez une exigence particulière.

Par défaut, il effectue une synchronisation bidirectionnelle. Personnellement, je préfère la sauvegarde miroir pour mes projets de site Web et l'option de sauvegarde de mise à jour pour les documents. Choisissez l'une des options de synchronisation en conséquence.

Dans les résultats de la comparaison, tous les fichiers sont sélectionnés par défaut. Vous pouvez exclure un fichier de la synchronisation en décochant la case à côté du nom du fichier ou via le menu contextuel.

  • Pour synchroniser tous les éléments affichés sur la liste, cliquez sur le bouton Synchroniser en haut.
  • Pour synchroniser un fichier particulier ou un ensemble de fichiers, excluez tous les éléments (temporairement) via le menu contextuel, puis activez la case à cocher pour les fichiers sélectionnés, cliquez avec le bouton droit sur la sélection, puis cliquez sur Synchroniser la sélection, puis cliquez sur Démarrer .

C'est tout! Vos dossiers sont maintenant synchronisés et les opérations de copie / mise à jour / suppression sont enregistrées par FreeFileSync.

Comparer et synchroniser un dossier local contre. Dossier FTP récursivement

FreeFileSync peut également comparer un dossier local à Google Drive, ou un dossier local à un dossier de votre serveur FTP en utilisant récursivement une connexion FTP ou SFTP. Voici comment comparer et synchroniser un dossier et des sous-dossiers locaux avec un dossier sur votre serveur FTP.

Il vous suffit de cliquer sur le bouton Accéder au stockage en ligne à côté du bouton Parcourir dans le volet gauche ou sur le côté droit. Cliquer sur ce bouton ouvre la boîte de dialogue suivante:

Saisissez vos informations de connexion FTP ou SFTP, vos informations d'identification et le chemin du répertoire FTP à comparer avec votre dossier local.

Une fois cela fait, vous êtes maintenant de retour à la fenêtre de comparaison.

Choisissez la taille du fichier ou la méthode de comparaison du temps et de la taille du fichier . Cette dernière méthode de comparaison est plus fiable.

Sélectionnez la variante de synchronisation. J'ai réglé le mien sur une synchronisation bidirectionnelle (au lieu de Mirror ) à cet effet.

Une fois configuré, cliquez sur Comparer. Vous verrez la liste des fichiers manquants et différents dans la gauche ainsi que le dossier de droite.

Cliquez sur le bouton Synchroniser pour copier les fichiers dans les deux sens, car la synchronisation bidirectionnelle a été sélectionnée. Si vous souhaitez mettre à jour uniquement l'emplacement FTP, choisissez plutôt la synchronisation miroir .

Exécutez FreeFileSync en tant que travail par lots | Synchronisation en ligne de commande

Vous pouvez enregistrer la configuration ci-dessus dans un travail par lots et l'exécuter via la ligne de commande ou le planificateur. Pour enregistrer la configuration et l'exécuter à l'aide de la ligne de commande, procédez comme suit:

  1. Cliquez sur l'option Enregistrer en tant que tâche par lots… dans le menu Fichier.

  2. Vous pouvez configurer le travail par lots pour qu'il s'exécute de manière réduite et fermer automatiquement la fenêtre une fois la synchronisation terminée.

  3. Enregistrez le fichier de travail par lots dans un dossier de votre choix, par exemple d: \ BatchRun.ffs_batch
  4. Ensuite, pour synchroniser les dossiers à l'aide de la ligne de commande, utilisez la syntaxe de ligne de commande suivante:
     C: \ Program Files \ FreeFileSync \ FreeFileSync.exe d: \ BatchRun.ffs_batch 

    Vous pouvez créer un fichier de commandes Windows ou exécuter la commande ci-dessus via le Planificateur de tâches à intervalles périodiques comme vous le souhaitez.

Conseil: FreeFileSync peut également synchroniser des dossiers avec Google Drive.


Méthode 4: comment comparer des fichiers dans deux dossiers à l'aide de TotalCommander

Total Commander est un gestionnaire de fichiers pour Windows qui vous permet de copier, déplacer ou supprimer des fichiers. Total Commander peut faire bien plus que cela. Il peut emballer et décompresser des fichiers, accéder à des serveurs FTP, comparer des fichiers par contenu, etc.

  1. Démarrez Total Commander et sélectionnez le dossier de gauche et le dossier de droite à comparer.
  2. Dans le menu Commandes, cliquez sur Synchroniser les répertoires…

    Avec la boîte de dialogue Synchroniser les répertoires, vous pouvez comparer deux répertoires, y compris des sous-répertoires, puis copier les fichiers avec des différences dans le répertoire cible ou tout autre répertoire.

    Si vous choisissez l'option Asymétrique, elle fait du dossier de droite un miroir de la gauche - similaire à la ligne de commande RoboCopy / MIR ou à l'option Echo Microsoft SyncToy. Autrement dit, l'option copie les fichiers manquants ou différents dans le dossier de droite, et tous les fichiers et dossiers supplémentaires sur la droite sont supprimés.

    Vous pouvez choisir d'afficher des fichiers identiques ou uniquement les différents fichiers dans la sortie.

    Les options de comparaison / synchronisation de Total Commander sont expliquées ci-dessous.

    AsymétriqueSi cette option est cochée, il est supposé qu'une copie du côté gauche doit être créée sur le côté droit. Les fichiers qui n'existent pas sur le côté gauche seront marqués pour suppression sur le côté droit. Cette option est destinée aux sauvegardes.
    SubdirsCompare également les sous-répertoires des deux répertoires choisis.
    par contenuCompare le contenu des fichiers qui ont la même taille et la même date. Il vérifie que les fichiers ont également le même contenu.
  3. Sélectionnez les options de comparaison "Sous-répertoires", "par contenu".

    Important: si la case à cocher Ignorer la date est activée, Total Commander ne parvient pas à trouver les fichiers différents / modifiés même si les tailles de fichier sont différentes. Il semble que ce soit un bug dans Total Commander, et je peux le reproduire à chaque fois.

  4. Dans la section Afficher, désactivez les fichiers égaux (indiqués par le symbole = ) et activez les trois autres boutons.
  5. Activez les options Singles et Duplicates .
  6. Appuyez sur le bouton Comparer

Total Commander - Dossier compare les arguments de ligne de commande

Pour démarrer «Synchroniser les répertoires», vous pouvez utiliser la syntaxe de ligne de commande suivante:

 TOTALCMD64.EXE / S = S d: \ folder_1 d: \ folder_2 

Ensuite, configurez les options et appuyez sur le bouton Comparer .

Pour démarrer «Synchroniser les répertoires» et comparer immédiatement les dossiers, utilisez cette syntaxe:

 TOTALCMD64.EXE / S = S: = d: \ folder_1 d: \ folder_2 

(la comparaison commencera avec les répertoires passés et les dernières options utilisées.)

Facultativement, vous pouvez également saisir un nom de paramètres sous la forme /S=S:SettingsName afin que la comparaison démarre immédiatement en fonction de ce paramètre précédemment enregistré.

Synchroniser les dossiers à l'aide de TotalCommander

  1. Dans la fenêtre de comparaison, sélectionnez les fichiers que vous souhaitez copier. Cela se fait en cliquant sur la case à cocher entre les deux colonnes de comparaison, ou en sélectionnant l'une des options dans le menu contextuel.

    Par défaut, la fonction sélectionnera tous les fichiers les plus récents à copier. Pour désélectionner un fichier afin d'éviter qu'il ne soit copié ou synchronisé, double-cliquez sur la flèche. Pour désélectionner plusieurs fichiers, sélectionnez-les, cliquez avec le bouton droit sur les éléments et choisissez Supprimer la sélection

    Important: Si l'option Asymétrique n'est pas activée, si un fichier du dossier de droite est plus récent que celui du dossier de gauche, la synchronisation s'exécutera de droite à gauche pour ce fichier. Pour le changer dans l'autre sens, cliquez sur la flèche à côté du fichier, ce qui fait basculer le sens de synchronisation.

    Alternativement, vous pouvez cliquer avec le bouton droit sur le fichier et choisir Inverser la direction de copie pour changer la direction de synchronisation.

  2. Cliquez sur Synchroniser . Cela ouvrira une boîte de dialogue pour copier les fichiers sélectionnés.

    Par défaut, il se synchronise dans les deux sens. Si vous souhaitez synchroniser dans un sens - par exemple, dossier gauche → dossier droit, désactivez la case à cocher de droite à gauche et vice versa.

Conseil: À l'aide de Total Commander, vous pouvez même synchroniser un répertoire local et un répertoire sur un serveur FTP.


Méthode 5: comparer et synchroniser des dossiers en temps réel à l'aide de DSynchronize

DSynchronize est un bel outil à l'aide duquel vous pouvez synchroniser deux dossiers manuellement ou automatiquement en temps réel. Cet outil fournit de nombreuses options que tout autre outil de synchronisation de dossiers pour vous permettre de configurer la façon dont les fichiers sont synchronisés.

  1. Lancez DSynchronize et configurez les dossiers source et de destination.
  2. Vous pouvez attribuer un nom de tâche personnalisé (pour une automatisation ultérieure) en cliquant sur le bouton JOBS. Définissons le nom du travail comme Uploads
  3. Pour la synchronisation miroir, assurez-vous que la synchronisation bidirectionnelle est désactivée.
  4. Pour effectuer une comparaison (uniquement) sans synchroniser les deux dossiers, activez l'option Aperçu de la synchronisation dans la section Général.

  5. Cliquez sur le bouton Synchroniser pour afficher la liste des fichiers nouveaux, mis à jour et manquants aux deux emplacements.

Synchroniser les dossiers

Pour synchroniser les dossiers, décochez l'option Aperçu de la synchronisation sous la section Général et cliquez sur Synchroniser . Il effectue une synchronisation en mode miroir par défaut. Le mode miroir a été discuté dans cet article plus tôt. Le mode miroir garantit que le dossier de droite est exactement le même que le dossier de gauche. Tous les répertoires et fichiers supplémentaires dans la destination sont supprimés automatiquement.

Synchronisation en temps réel

Pour synchroniser deux dossiers en temps réel:

  1. Cliquez sur la synchronisation en temps réel dans la section Minuterie.
  2. Configurez les paramètres de synchronisation en temps réel comme vous le souhaitez. J'ai utilisé les paramètres par défaut.

    Par défaut, il synchronise automatiquement les dossiers au bout de 10 secondes. Vous pouvez le configurer pour différer ou planifier son exécution à des intervalles spécifiés.

  3. Cochez la case Surveiller les sous-dossiers pour synchroniser récursivement les dossiers.

J'ai copié certains fichiers dans le dossier de gauche (source) et en 10 secondes, les éléments ont été synchronisés automatiquement dans le dossier de droite. Vous pouvez voir que dans ce GIF animé:

Et les modifications (ajouts et suppressions de fichiers ou de dossiers) sont enregistrées dans la fenêtre principale.

Lorsque la synchronisation en temps réel est activée, il surveille les modifications de fichiers et le programme se trouve dans la zone de notification en attente de modifications. Cela ne prend pas beaucoup de ressources CPU ou de mémoire. La dernière fois que j'ai vérifié, il n'utilisait que 10 Mo de mémoire.

Voici la liste des principales caractéristiques de DSynchronize:

  • Synchronisation standard et minuterie.
  • Synchronisation en temps réel.
  • Synchronisation bidirectionnelle.
  • Synchronisation transactionnelle (par le journal de NTFS).
  • Filtre sélectif (vous pouvez exclure des fichiers ou des dossiers uniques).
  • Démarrez en tant que service (le programme n'a pas besoin de se connecter).
  • Prend en charge les liens symboliques et les liens matériels.
  • Prend en charge les jonctions et les points de montage.
  • Prend en charge ACL.
  • Journal envoyé par e-mail.
  • Sauvegarde de la version précédente des fichiers remplacés.
  • Comparaison d'octet à octet.
  • Prend en charge plusieurs tâches, chacune avec ses paramètres et ses chemins de synchronisation.
  • Consommation minimale de ressources (RAM et CPU).

Prise en charge de la ligne de commande

Vous pouvez utiliser la ligne de commande suivante pour automatiser DSynchronize:

/START = Démarrer la synchronisation avec les dernières options enregistrées.

/STARTJOB "JobName" = Lancer la synchronisation avec les options de travail sélectionnées).

/MINIMIZE = Démarre minimisé dans la barre de plateau.

/HIDDEN = Ne pas afficher d'icône dans la barre des bacs.

/NOSECURITYCHECK = Ne fait pas de vérification de sécurité avant la synchronisation.

/NOMONITORCHECK = Ne pas vérifier la résolution du moniteur.

/AUTOREALTIME = Démarre minimisé, effectuez une synchronisation standard et activez RealTime.

/SOMEFILE.INI = Commence à utiliser le fichier INI sélectionné.

Le nom du travail peut être personnalisé en cliquant sur le bouton JOBS en haut de la fenêtre principale du programme.

Par exemple, pour synchroniser automatiquement deux dossiers (un travail précédemment enregistré nommé «Uploads»), j'exécuterais cette commande:

 "D: \ dsynchronize \ DSynchronize.exe" / STARTJOB "Uploads" / MINIMIZE 

Pour synchroniser les deux dossiers (tâche nommée «Uploads) et activer la synchronisation en temps réel, exécutez:

 "D: \ dsynchronize \ DSynchronize.exe" / STARTJOB "Uploads" / AUTOREALTIME 

La commande ci-dessus synchronise les deux dossiers nommés dans le travail et active automatiquement la surveillance en temps réel. Vous pouvez voir l'icône de surveillance en temps réel dans la zone de notification.

C'est tout!


Méthode 6: comparer deux dossiers avec l'utilitaire HashMyFiles à l'aide de la somme de contrôle de hachage de fichier

HashMyFiles est un petit utilitaire qui calcule les sommes de contrôle de hachage pour vos fichiers. Il peut calculer le hachage des fichiers dans un dossier et ses sous-dossiers de manière récursive. HashMyFiles vous permet d'enregistrer les résultats dans un fichier. Il peut également calculer la somme de contrôle du hachage via le menu contextuel.

Si PowerShell n'est pas votre tasse de thé, utilisez l'utilitaire HashMyFiles de Nirsoft.net pour comparer les hachages de fichiers.

Vous pouvez enregistrer les noms de fichier et la sortie de hachage correspondante pour l'arborescence de dossiers source dans source.txt . De même, enregistrez les entrées de l'arborescence de dossiers de destination sous destination.txt .

Dans cet exemple, nous allons comparer les fichiers des dossiers suivants:

 D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 

Suivez ces étapes pour générer des hachages de fichiers à l'aide de HashMyFiles et comparez-les:

  1. Téléchargez HashMyFiles et exécutez-le.
  2. Dans le menu Options, cliquez sur Types de hachage et sélectionnez SHA-256

  3. Dans le menu Affichage, cliquez sur Choisir les colonnes

  4. Dans les paramètres de colonne, activez les options SHA-256, Chemin complet et Taille de fichier . Cliquez sur OK.
  5. Cliquez sur le menu Fichier et sélectionnez Ajouter un dossier
  6. Sélectionnez le dossier source pour la comparaison.

  7. Cliquez pour sélectionner Ajouter des fichiers dans des sous - dossiers, puis cliquez sur OK.
  8. Triez les résultats par colonne Chemin complet et sélectionnez toutes les entrées.
  9. Dans le menu Fichier, cliquez sur Enregistrer les éléments sélectionnés
  10. Enregistrez la liste dans un fichier nommé source.txt
  11. Effacez les résultats en sélectionnant Effacer tout dans le menu Fichier.
  12. Répétez les étapes ci-dessus, et cette fois sélectionnez le dossier de destination, enregistrez la liste dans destination.txt
  13. Maintenant, modifiez les fichiers source.txt et destination.txt à l' aide du Bloc-notes et supprimez les chemins de base. À l'aide de l'option Rechercher dans le Bloc-notes, recherchez chaque occurrence du chemin de base ci-dessous et remplacez-la par une chaîne vide.
     D: \ Sites Web \ Winhelponline \ blog \ wp-content \ 
  14. De même dans le fichier destination.txt, supprimez ce chemin de base:
     E: \ Sauvegarde synchronisée RameshPC \ Sites Web \ Winhelponline \ blog \ wp-content \ 

    Vous pouvez également rechercher et supprimer les symboles = utilisés comme séparateurs.

    Voici à quoi ressemblent maintenant les fichiers:

  15. Maintenant, lancez WinDiff ou votre outil de comparaison de fichiers préféré pour voir les différences.

Vous verrez la liste des différents fichiers, des fichiers supplémentaires et des fichiers manquants.


Méthode 7: comment comparer des fichiers dans deux dossiers à l'aide de Robocopy

Voyons maintenant comment utiliser l'utilitaire de console Robocopy intégré pour comparer le contenu de deux dossiers.

Robocopy («Copie de fichier robuste pour Windows») est un excellent outil de copie de fichiers intégré à Windows qui possède d'énormes capacités. Les capacités de Robocopy vont au-delà des commandes Windows Copy et XCopy intégrées. RoboCopy est la plus préférable de toutes les méthodes de ligne de commande, car Robocopy compare non seulement les noms de fichiers mais également la dernière heure modifiée. Il rapporte la liste des fichiers modifiés et des nouveaux fichiers / dossiers dans les chemins source et de destination.

Parmi ses excellentes fonctionnalités, citons la copie en mode «miroir» (similaire à l'option « Echo » de Microsoft SyncToy), la possibilité de réessayer la copie en cas d'interruptions du réseau, la copie multithread, etc. À part la copie de fichiers, nous pouvons utiliser Robocopy pour comparer simplement le contenu de deux dossiers (récursivement) et enregistrez les différences sans rien copier, comme un essai à sec .

Scénario

Les fichiers de mon site Web sont régulièrement synchronisés sur un disque dur externe ( E:\ ). À des fins d'illustration, vérifions si ces deux dossiers sont identiques. Dans cet exemple, nous allons comparer les dossiers suivants, récursivement (c'est-à-dire avec les sous-dossiers, une comparaison approfondie):

 D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads et E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads 
  1. Ouvrez une fenêtre d'invite de commandes.
  2. Exécutez la commande suivante et appuyez sur ENTRÉE:
     robocopy "D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads" "E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads" / L / TS / MIR / LOG: D: \ Diff.txt 

    Les résultats de la commande ci-dessus sont enregistrés dans le fichier D:\Diff.txt .

  3. Quittez la fenêtre d'invite de commandes.

Détails sur les commutateurs de ligne de commande Robocopy utilisés

  • /L :: List uniquement - ne copiez pas, n'horodatez pas et ne supprimez aucun fichier. Cette option est utilisée uniquement à des fins de journalisation; pour un essai à sec.
  • /MIR :: MIRror une arborescence de répertoires (équivalent à / E plus / PURGE). Puisque nous l'utilisons avec le commutateur /L, aucun fichier / dossier ne sera réellement copié.
  • /TS :: inclure les horodatages du fichier source dans la sortie.
  • /LOG:file :: état de sortie dans le fichier LOG (écraser le journal existant).

Dans cet exemple, nous écrivons la sortie dans D:\Diff.txt . Voici à quoi ressemble le journal:

  ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Monday, April 8, 2019 5:06:10 PM Source : D:\Websites\Winhelponline\blog\wp-content\uploads\ Dest : E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\ Files : *.* Options : *.* /TS /L /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /R:1000000 /W:30 ------------------------------------------------------------------------------ 583 D:\Websites\Winhelponline\blog\wp-content\uploads\ *EXTRA Dir -1 E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\2019\videos\ *EXTRA File 821886 2019/04/07 07:19:24 tiktok-superman-dance.mp4 3 D:\Websites\Winhelponline\blog\wp-content\uploads\2019\Scripts\ Older 210 2019/04/08 10:54:59 0x80071A91.vbs Newer 211 2019/04/08 11:35:32 ErrCodeFinder.vbs New File 211 2019/04/08 11:35:32 Sample.vbs 211 D:\Websites\Winhelponline\blog\wp-content\uploads\h1-10\ 83 D:\Websites\Winhelponline\blog\wp-content\uploads\h1-11\ 1 D:\Websites\Winhelponline\blog\wp-content\uploads\reg\ 9 D:\Websites\Winhelponline\blog\wp-content\uploads\temp\ ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 113 0 113 0 0 1 Files : 4125 3 4122 0 0 1 Bytes : 59.96 m 632 59.95 m 0 0 802.6 k Times : 0:00:00 0:00:00 0:00:00 0:00:00 Ended : Monday, April 8, 2019 5:06:10 PM 

Vous pouvez clairement voir les répertoires et fichiers supplémentaires dans la source ainsi que les dossiers de destination. En outre, il compare l'horodatage et vous indique si les fichiers sont plus anciens ou plus récents (par rapport au même fichier dans votre destination).

Dans cet exemple, voici les différences repérées:

  1. * EXTRA Dir : un répertoire supplémentaire existe dans la destination mais pas dans la source.
  2. * Fichier EXTRA : un fichier supplémentaire existe dans la destination mais pas dans la source.
  3. Plus ancien : ce fichier est plus ancien que celui de la destination.
  4. Plus récent : ce fichier est plus récent que celui de la destination.
  5. Nouveau fichier : ce fichier n'existe pas dans la destination. Il est également appelé fichier Lonely

Liste complète des classifications des fichiers RoboCopy:

 ----------- ----------- ---------------- ------------ --- ------------- ------------ Classifi_ Existe dans Existe dans Source / Dest Source / Dest Source / Destation Source Destination File Times File Tailles Attributes ----------- ----------- ---------------- ------------ --- ------------- ------------ Plus récent Oui Oui Src> dest n / an / a Plus ancien Oui Oui Src <dest n / an / a Nouveau Oui Non n / an / an / a Extra Non Oui n / an / an / a Modifié Oui Oui Égal Différent n / a Même Oui Oui Égal Égal Égal Ajusté Oui Oui Égal Égal Différent Non Correspondu Oui (fichier) Oui (répertoire) n / an / an / a ----------- ----------- ---------------- ------ --------- ------------- ------------ 

Remarque: Un fichier Tweaked est défini comme étant un fichier existant à la fois dans la source et la destination, avec une taille et un horodatage identiques, mais des paramètres d'attribut différents.

Robocopy est un outil étonnant pour comparer et synchroniser des fichiers dans deux dossiers (ainsi que des sous-dossiers de plusieurs niveaux) et répertorier les différences dans un fichier journal.

Synchroniser des dossiers à l'aide de Robocopy

Pour synchroniser les dossiers ( uniquement à partir du dossier gauche → droit) avec RoboCopy, utilisez la même syntaxe de ligne de commande que nous avons utilisée précédemment pour comparer les dossiers, mais cette fois sans le commutateur /L (liste uniquement).

RoboCopy effectue une synchronisation unidirectionnelle (à partir du dossier Gauche → Droite)

Le mode de copie miroir de RoboCopy ( /MIR ) est similaire à la fonction « Echo » de Microsoft SyncToy. N'oubliez pas que RoboCopy ne fait qu'une synchronisation gauche → droite - PAS une synchronisation bidirectionnelle.

Il est important de noter que le commutateur /MIR supprime également tous les fichiers et répertoires supplémentaires dans l'arborescence des dossiers de destination. Les fichiers / dossiers «Extra» sont des éléments présents dans la destination mais pas présents dans le chemin source. La commande /MIR (miroir) garantit que la structure du dossier de destination (et les fichiers) est une copie exacte de la source.

Utilisez la syntaxe de ligne de commande suivante pour synchroniser les éléments du dossier gauche → droit:

 robocopy dossier_source dossier_destination / MIR / MT 

Le commutateur /MT consiste à effectuer une copie multithread pour une opération de copie ultra-rapide. C'est un commutateur optionnel, mais extrêmement utile.

Le statut de synchronisation est sorti dans la console pour chaque élément traité, et les statistiques sont affichées à la fin de la sortie.

Pour enregistrer la sortie dans un fichier, utilisez cette syntaxe:

 robocopy dossier_source dossier_destination / MIR / MT / TS /LOG:D:\Diff.txt 

Automatisez les commandes à l'aide d'un fichier batch

Vous pouvez ajouter toutes les commandes Robocopy au Bloc-notes et l'enregistrer en tant que fichier batch Windows (avec l'extension .bat ). Double-cliquez simplement sur le fichier batch lorsque vous souhaitez synchroniser les dossiers mentionnés. Vous pouvez même exécuter le fichier de commandes aux intervalles requis à l'aide du Planificateur de tâches.


Méthode 8: comparer deux dossiers à l'aide de la somme de contrôle de hachage de fichier avec l'utilitaire FCIV

En utilisant l'algorithme de hachage cryptographique - par exemple, MD5, SHA-1, vous pouvez vérifier si deux fichiers sont identiques ou non. La somme de contrôle est une valeur de hachage utilisée pour effectuer des contrôles d'intégrité des données sur les fichiers. C'est une sorte de signature pour un fichier.

L'outil Microsoft File Checksum Integrity Verifier (FCIV) est un utilitaire de ligne de commande qui calcule les hachages cryptographiques MD5 ou SHA1 pour les fichiers. Vous pouvez exporter la liste des fichiers avec leurs hachages MD5 ou SHA1 dans une base de données XML, puis comparer les fichiers du dossier cible avec les hachages stockés dans le fichier de base de données XML.

Cette méthode est particulièrement utile après avoir utilisé l'une des méthodes ci-dessus - par exemple, Robocopy ou WinDiff pour synchroniser deux dossiers, et que vous souhaitez vérifier l'intégrité de chaque fichier de destination en comparant le hachage / les sommes de contrôle du fichier avec celui de l'emplacement source.

Scénario:

Comparons récursivement le contenu des dossiers suivants à l'aide de FCIV:

 D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads E: \ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads 

Téléchargez Microsoft File Checksum Integrity Verifier à partir du Centre de téléchargement Microsoft officiel et extrayez fciv.exe dans un dossier - par exemple, d:\tools . Suivez ensuite l'une de ces méthodes:

Option 1

  1. Ouvrez une fenêtre d'invite de commandes et utilisez cette syntaxe de ligne de commande:
     d: \ tools \ fciv.exe -r -add "D: \ Websites \ Winhelponline \ blog \ wp-content \ uploads" -bp "D: \ Websites \ Winhelponline \ blog \ wp-content" -sha1 -xml d: \ hashdb.xml 

    La ligne de commande ci-dessus calcule le hachage SHA1 pour chaque fichier de manière récursive et génère les noms de fichier et les hachages correspondants dans un fichier hashdb.xml nommé hashdb.xml .

    Le paramètre -bp est utilisé pour spécifier le chemin de base à supprimer du nom de chemin complet. Il garantit que le chemin de base n'est pas inclus dans la sortie XML afin que vous puissiez comparer les éléments du chemin du dossier de destination ayant exactement la même structure de dossiers.

    Voici à quoi ressemblerait le contenu du fichier XML:

  2. Maintenant, dans la fenêtre d'invite de commandes, basculez vers le dossier de destination en exécutant la commande suivante:
     cd / d "E: \ Sauvegarde synchronisée RameshPC \ Sites Web \ Winhelponline \ blog \ wp-content" 
  3. Ensuite, exécutez la commande suivante et appuyez sur ENTRÉE:
     d: \ tools \ fciv.exe -v -sha1 -xml D: \ hashdb.xml 

    La commande ci-dessus vérifie vos fichiers de destination par rapport aux sommes de contrôle de hachage que vous avez capturées précédemment dans le fichier XML hashdb.xml .

    Dans la sortie, la liste des fichiers modifiés (basée sur la somme de contrôle de hachage) et la liste des fichiers manquants (dans la destination) sont affichées:

    Voici un exemple de sortie.

     Démarrage de la vérification des sommes de contrôle: date / horodatage Liste des fichiers modifiés: ----------------------- uploads \ 2019 \ 05 \ w10-extended-search-settings.png Le hachage est: 8dac0a4400d2b700f81bf70c189e49eb6a620a2f Il doit être: cc2a1523ef070dc2e498dbf5f8cf5edac1b6900d Impossible de hacher les fichiers téléchargés \ 2019 \ 05 \ windiff-header.png Erreur msg: le système ne peut pas trouver le fichier. Code d'erreur: 2 Impossible de hacher les téléchargements de fichiers \ 2019 \ 05 \ windows-store-error-0x800706d9.png Erreur msg: le système ne peut pas trouver le fichier spécifié. Code d'erreur: 2 uploads \ 2019 \ 05 \ w10-advanced-search-settings.png Le hachage est: 8dac0a4400d2b700f81bf70c189e49eb6a620a2f Il doit être: cc2a1523ef070dc2e498dbf5f8cf5edac1b6900d Impossible \ Hash \ file 05 télécharger \ Hash fichier de fichiers d'erreur \ Hash le fichier spécifié. Code d'erreur: 2 Impossible de hacher les téléchargements de fichiers \ 2019 \ 05 \ windows-store-error-0x800706d9.png Erreur msg: le système ne peut pas trouver le fichier spécifié. Code d'erreur: 2 Vérification finale: horodatage 

La méthode ci-dessus est très utile pour vérifier l'intégrité des fichiers correspondants dans le dossier de destination. Mais il n'affiche pas la liste des fichiers supplémentaires dans la destination. C'est là que l' option 2 ci-dessous présente un avantage supplémentaire.

Option 2

Rather than outputting the files list and checksums to an XML database, you can output the items in the source and destination to separate text files. Then the text files can be compared using WinDiff, WinMerge, DiffChecker.com or WinCompare utility.

Run these commands from a Command Prompt window.

 fciv -r "D:\Websites\Winhelponline\blog\wp-content\uploads" -bp "D:\Websites\Winhelponline\blog\wp-content" >d:\source.txt fciv -r "e:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads" -bp "e:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content" >d:\destination.txt 

Then, compare the two files source.txt and destination.txt using a file compare tool like WinDiff, WinMerge, DiffChecker.com, DiffMerge or WinCompare.

You'll see the list of missing files, extra files and modified files (based on the computed checksum) in the two folder locations.

I synchronized the two folders using RoboCopy and then compared the folders again using FCIV hash checksum. They're now identical!


Method 9: Compare Two Folders Using PowerShell

Using PowerShell you can recursively compare two folders easily.

Start PowerShell. Copy the following snippet and paste them all in the PowerShell window, and press ENTER

Enter the source folder and destination folders, replacing the source_folder_path and dest_folder_path placeholders respectively.

 $Folder1 = "source_folder_path" $Folder2 = "dest_folder_path" function Get-Directories ($path) { $PathLength = $path.length Get-ChildItem $path -Recurse | % { Add-Member -InputObject $_ -MemberType NoteProperty -Name RelativePath -Value $_.FullName.substring($PathLength+1) $_ } } Compare-Object (Get-Directories $Folder1) (Get-Directories $Folder2) -Property RelativePath | Sort RelativePath, Name -desc 

You'll see an output like this:

The side indicator <= means the file or folder exists only in the source. ie, missing in the destination.

The side indicator => means the file or folder exists only in the destination. ie, missing in the source.

Editor's note: The above code compares only the file names without matching any other details like size, date modified, etc. PowerShell has the capability to do a hash-comparison of items in two folders and output the results, which is described in the next method.

Sync folders

With some 10 additional lines of PowerShell code, you can even copy the different or missing files from source → destination, or vice versa. For more information, see Sync Files And Folders With PowerShell.


Method 10: Compare Two Folders Using PowerShell with File Hash Checksum

To compare files in two locations using file hash checksum, you can use PowerShell. PowerShell by default uses the SHA-256 algorithm, which you can change using the -Algorithm parameter. As said earlier, hash checksum is a kind of signature for a file which is unique.

In this example, we're going to compare the following folders:

 D:\Websites\Winhelponline\blog\wp-content\uploads\2019 E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\2019 

Use the following command-line to compute the hash for files in the source folder and output the results to source.txt file.

 Get-ChildItem 'D:\Websites\Winhelponline\blog\wp-content\uploads\2019' -Recurse | Get-FileHash | Select Path, Hash | export-csv d:\source.txt -Delimiter "`t" -NoTypeInformation 

Then, run the following command to remove the base paths from the file.

 (gc -path d:\source.txt -raw) -replace 'D:\\Websites\\Winhelponline\\blog\\wp-content\\', '' | Out-File d:\source.txt 

The list of file names (with relative path) along with the SHA-256 hashes are outputted to the source.txt file.

Similarly, run the commands for computing hashes for items in the destination, and then remove the base paths from destinations.txt :

 Get-ChildItem 'E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\2019' -Recurse | Get-FileHash | Select Path, Hash | export-csv d:\destination.txt -Delimiter "`t" -NoTypeInformation 
 (gc -path d:\destination.txt -raw) -replace 'E:\\RameshPC-Synced Backup\\Websites\\Winhelponline\\blog\\wp-content\\', '' | Out-File d:\destination.txt 

The above command computes the hash for each file in the destination folder recursively, and the output is written to d:\destination.txt

Compare using PowerShell

Next, compare the files using the following PowerShell command:

 Compare-Object -ReferenceObject $(Get-Content d:\source.txt) -DifferenceObject $(Get-Content d:\destination.txt) | fl 

It shows the different files and the location of each item denoted by the symbols <= or => for left folder and right folder respectively. The output also shows extra files in the source as well as the destination.

Compare using WinDiff

Alternately, you can run WinDiff and compare d:\source.txt and d:\destination.txt . You can use the following WinDiff command-line to compare the files:

 d:\Tools\windiff.exe d:\source.txt d:\destination.txt 

The WinDiff output shows differences highlighted in yellow/red. From the above screenshot, we can infer that the file 0xc1900101-error.png is different. Also, the destination folder or the right folder (denoted by the symbols !> in WinDiff) has an extra file named 1h.txt .

PowerShell supports many hash algorithms and so it has an advantage over the FCIV.exe tool. The Microsoft FCIV tool supports MD5 and SHA-1 algorithms only, which are outdated and can be ineffective due to collision issues, albeit very rarely. SHA-1 collision means that two files have identical SHA-1 hashes but different content. So, SHA-256 may be the preferred algorithm for file or folder comparison in a production environment.


Note that the command-line methods 11 & 12 below only help you compare the structure of two directories along with files. They don't compare file sizes or modified date to know which is the newer. They only do a plain comparison based on file names and you wouldn't know if one of the destination files becomes corrupt during a copy operation. In a production environment, you may need to use other tools or methods if you need to verify the integrity of your files in the source and destination folders, to make sure they are the exact same copies.

Method 11: List the folder structure using TREE command

To compare two directories along with sub-directories, the good old TREE command comes extremely handy. Suppose you want to compare the two folders (including file names) D:\SOURCE and D:\DEST, follow these steps:

  1. Open a Command Prompt window.
  2. Type these commands:
     TREE D:\SOURCE /A /F >D:\SOURCE.TXT 
     TREE D:\DEST /A /F >D:\DEST.TXT 

    This outputs each of the command results to separate text files in your D:\ drive's root directory. The text files will have your directory structure in a tree format, which makes it easy for comparison work.

    Quick Tip: To compare only the directories, remove the /F flag.
  3. Next, fire up your text comparison utility like WinDiff, WinMerge or DiffMerge. Alternately, you can compare the two text files online via diffchecker.com.
  4. Go to DiffChecker.com and paste the contents of d:\source.txt in one column, and D:\DEST.txt in another column. Click Find differences .

    Directory comparison

    Directory and files comparison

Method 12: List folder structure using the DIR Command

To compare the contents of two directories, another command-line you can use is the DIR command.

Use the following command-line syntax to generate the list of files in a directory recursively. You can then compare it using a compare tool or DiffMerge.

 DIR D:\SOURCE /S /AD /B >D:\SOURCE.TXT 
 DIR D:\DEST /S /AD /B >D:\DEST.TXT 
Quick Tip: To include files along with the directory listing, remove the “/AD” flag.

There is one problem though, when using the DIR command. It lists full directory and file paths in the output, as below:

  1. D:\Source\Apr\Week1
  2. D:\Source\Apr\Week2
  3. D:\DEST\Apr\Week1
  4. D:\DEST\Apr\Week2

In that case, you'll need to remove the comparison base paths D:\SOURCE\ and D:\DEST\ in the respective text files by editing them with Notepad. To bulk replace text, use the Replace option in Notepad and remove every occurrence of the base path.

Once done, save the files and compare the contents online via DiffChecker or using an offline text-comparison tool like WinDiff or WinMerge.

Directory comparison – List generated using DIR instead of TREE

I bet you'll find directory contents output generated using TREE to be much easier and far neater than DIR .


Hope the above methods helped you quickly compare the contents of two folders recursively, identify missing and modified files and reconcile differences.

Let's know your comments!

Articles Connexes