2つのフォルダーの内容を比較して同期する方法

特定のディレクトリを別の場所にミラーコピーするためのバックアップタスクXCopy、SyncToy、またはその他のツールを作成したとします。 Microsoft SyncToyを使用している場合、ファイルまたはフォルダーが宛先にない場合や、宛先フォルダーにソースフォルダーにない追加のファイルまたはフォルダーがある可能性があります。

この記事では、2つの異なるディレクトリパスのディレクトリ構造(ファイルとともに)を比較して、ソースの正確なレプリカまたはミラーコピーがあることを確認する方法について説明します。 以下のいくつかの方法では、比較後に2つのフォルダー内のアイテムを同期する方法についても説明します。

この記事では、12のフォルダー比較方法(Windowsの場合)について説明します。 あなたに一番合うものを選んでください。 同期後にファイルの整合性を確認する必要がある場合は、次に示すハッシュチェックサム検証手順のいずれかを使用してください。

MicrosoftのWinDiffを使用して2つのフォルダーの内容を比較する

WinDiffは、1992年に最初にリリースされ、その後更新されたMicrosoftのグラフィカルファイル比較ツールです。 お待ちください! 最初のリリースの年にびっくりしないでください。

WinDiffはまだ素晴らしいですし、Windows 10でも完全に正常に動作しますが、Unicodeサポートはありません。 それは大きな可能性を秘めています。 WinDiffは、ASCIIファイルとバイナリファイルの比較、2つのディレクトリの比較、フォルダーの同期(左フォルダー→右フォルダー、またはその逆)を実行できます。

WinDiffダウンロードリンク(ローカルミラー)。 最後に更新されたWinDiffバージョンは5.2.3790.0で、日付変更スタンプは4-7-2016を示します。

Windows XPサポートツールパッケージの一部としてWinDiffをダウンロードし、7-Zipを使用してそのコンテンツを抽出することもできます。

WinDiffを使用してディレクトリ比較を行うには:

  1. Windiff.exeを起動します。
  2. [ファイル]メニューの[ディレクトリの比較]をクリックします。
  3. [ディレクトリの選択]ダイアログボックスで、Dir1ボックスとDir2ボックスに比較する2つのフォルダ名を入力します。 これらのフォルダ内のファイルを再帰的に比較する場合は、[ サブディレクトリを含める]チェックボックスをオンにします。

結果またはアウトラインウィンドウには、デフォルトで同一のファイルと相違点が表示されます。 [オプション]メニューの[ 同一ファイルの表示 ]を無効にすることで、同一ファイルを非表示にできます。

ご覧のとおり、WinDiffはファイル名を比較するだけでなく、両方の場所でファイルの内容を比較し、ファイルの内容が異なる場合は変更を強調表示します。

「別の」アイテムをダブルクリックすると、色分けされた比較ビューが開きます。 色分けされた結果は、ファイルの違いを示しています。

WinDiffはASCIIおよびバイナリ比較を実行できます。 つまり、WinDiffは変更された日付に依存せず、ファイルの実際の内容を比較します。

たとえば、宛先フォルダー(右フォルダー)内のテキストファイルの文字を変更しました。 感嘆符をコロンに置き換えたところ、どちらの場所でもファイルサイズはまったく同じ(1, 127バイト)です。 WinDiffはそれを取得し、ファイルが異なることを示しました。

ディレクトリ比較の違いをファイ​​ルに保存するには、[ファイル]メニューの[ファイルリストの保存 ]をクリックします 。 二重引用符なしの完全なパスでファイル名を入力します。

[ 同一ファイル ]および[ チェックサム含める ]オプションをオフにして、[OK]をクリックします。 出力ファイルは次のようになります。

 -D:\ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019:E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019-左のみ、右のみを含みます、異なるファイル。\ accesschk.exeのみE:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ compare-folders.txt only in E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ fta-1803-w10.txt in E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ ssh-commands-usefulのみE:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019内の.txtのみ。\ 05 \ dell-supportassist.png D:\ Websites \ Winhelponline \ blog \ wp-content \ uploads内のみ\ 2019。\ 05 \ disable-theme-sync-ramesh.png異なる(E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 is latest)。\ 05 \ file-explorer- not-highlight-files.pngはD:\ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019にのみあります。\ 05 \ firefox-forget-about-this-site-4.pngのみ nt(E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 is newer)。\ 05 \ msconfig-disable-services-non-microsoft.png only in D:\ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ 05 \ windows-store-error-0x800706d9.png in D:\ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ 06 \ notepad-bing-searchのみ.pngはE:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019にのみあります。\ 06 \ rundll32-refresh-commands.txt only in E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ 06 \ archives \ 404chk.vbs(E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019。\ 06 \ archives \ actxprxy-missingのみ) -issues.txtはE:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019にのみあります。\ 06 \ archives \ apps.pngはE:\ RameshPC-Synced Backup \ Websites \ Winhelponline \にのみありますblog \ wp-content \ uploads \ 2019。\ 06 \ archives \ articles.vbs only in E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ upl oads \ 2019。\ 06 \ archives \ bash-sh.vbs in E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads \ 2019-17個のファイルがリストされています 

出力ファイルはタブ区切り形式であるため、Microsoft Office ExcelまたはGoogleスプレッドシートに簡単にインポートできるはずです。

ディレクトリ比較の追加スイッチとして、ソースパスと宛先パスを使用してWinDiffを直接起動できることに注意してください。 たとえば、 windiff.exe "c:\source" "d:\destination"を起動すると、ツールが起動し、すぐにこれら2つのフォルダーパスを比較します。

WinDiffコマンドラインスイッチ

以下は、WinDiffコマンドラインスイッチの完全なリストです。

 使用法:windiff [オプション]パス1 [パス2]オプション:-D 1つのディレクトリのみを比較します。 -F [flags] savefile複合ファイルを「savefile」に保存します。 「フラグ」は、I(同一)、L(左)、R(右)、F(左端に移動)、G(右端に移動)、S(左端に類似)、A(右端に類似)、 X(リストの保存後に終了)。 (たとえば、-FLFは左または移動した左の行のリストを保存します)。 -I file指定された入力ファイルから、比較するファイルのリストを読み取ります。 各行には、スペースで区切られた1つまたは2つのファイル名を含めることができます(ファイル名にスペースが含まれている場合は、引用符で囲みます)。 stdinから読み取るファイル名として「-」を使用します。 行にファイル名が1つしかない場合、ファイルはそれ自体と比較されます。 -N name NET SEND通知を比較の最後に 'name'に送信します。 -Oアウトラインビュー(自動拡張なし)。 -P逆の比較:句読点で改行します。 -S [flags] savefileファイルのリストを「savefile」に保存します。 「フラグ」は、S(同じ)、L(左)、R(右)、D(異なる)、X(リストの保存後に終了)の1つ以上で構成されます。 (たとえば、-SLDは左または異なるファイルのリストを保存します)。 -Tサブツリー全体を比較します。 

-Sスイッチを使用して比較レポートをファイルに保存します。 以下に例を示します。

同一のファイルのリストをdiff.txtに保存します。

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

さまざまなファイルのリストをdiff.txtに保存します。

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

左のみのファイルのリストをdiff.txtに保存します。

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

権利のみのファイルのリストをdiff.txtに保存します。

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

左のみおよび右のみのファイルのリストをdiff.txtに保存します。

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

比較レポートの保存後にWinDiffを自動的に終了するには、以下のようにXスイッチを追加します。

右専用ファイルのリストをdiff.txtに保存し、WinDiffを終了します

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

左のみおよび右のみのファイルのリストをdiff.txtに保存し、WinDiffを終了します

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

5つの個別の「ログ」ファイルをすべて生成するには、WinDiffを5回実行する必要があります。

例:

 windiff -SSX同一。txtc:\ 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 

HTML形式のWinDiffヘルプファイルの内容(windiff.hlp)も参照してください。

WinDiffとフォルダーを同期する

そのうえ? WinDiffは、不足しているファイルや異なるファイルを左(フォルダ1)または右(フォルダ2)の場所にコピーすることもできます。 そうするために、

  1. [ファイル]メニューから[ ファイルのコピー ]を選択します
  2. 不足している/異なるファイルをコピーするフォルダーパスを入力します。

    重要:フォルダーパスにスペースが含まれている場合でも、フォルダーパスを二重引用符で囲まないでください。 パスに二重引用符を追加すると、WinDiffはファイルのコピーに失敗します。

  3. 場所からコピーを選択します(左ツリーから右ツリー、またはその逆)
  4. [ 同一ファイル ]をオフにして、[OK]をクリックします。

    WinDiffは、不足しているファイルと変更されたファイルを指定された場所に再帰的にコピーすることにより、フォルダーを同期します(左→右)。

優れたASCIIとバイナリの比較、および基本的な同期機能にもかかわらず、WinDiffは、IT担当者の間では過小評価されているツールです。 これは、旧式のユーザーインターフェイスを備えており、Unicodeのサポートがないためです。 しかし、WinDiffは、ほとんどの人、特に英語のOSを使用する人には十分です。

マイクロソフトには、WinDiffに関するナレッジベースの記事があり、「Windiff.exeユーティリティの使用方法」というタイトルが付いています。

WinMergeを使用して2つのフォルダーの内容を比較する

ここでは、WinMergeを使用して、2つのフォルダーをサブフォルダーと比較する方法を説明します。

WinMergeは、Windows用のオープンソースの差分およびマージツールです。 フォルダーとファイルの両方を比較して、理解と取り扱いが簡単な視覚的なテキスト形式で違いを提示できます。 これを使用して、2つのフォルダの内容をサブフォルダとともに(つまり、再帰的に)比較します。

  1. WinMergeを起動します。 [ファイル]メニューの[ 開く ]をクリックします

  2. 比較する1番目のフォルダー2番目のフォルダーを参照して選択します
  3. すべてのファイルが比較されるように、フィルターが*.*設定されていることを確認してください。 「サブフォルダーを含める」(再帰的に比較)オプションはデフォルトで有効になっています。 最上位のディレクトリにあるファイルのみを比較する場合は、オプションをオフにします。
  4. 比較をクリックします

    WinMergeはフォルダー比較結果を生成し、黄色の違いを強調表示します。

  5. [ ツール ]メニューの[ 列のカスタマイズ… ]をクリックします。 提供されている他の多数の列オプションから、 Left sizeRight sizeLeft dateRight dateなど、必要な列を選択します。

  6. フォルダが異なります 」エントリをダブルクリックして展開します。 異なるファイルのリスト、「 左のみ 」、「 右のみ 」、および同一のファイルも表示されます。

    注: WinMergeの[表示]メニューから[同一アイテムの表示]をオフにすると、同一のファイルとフォルダーを非表示にすることができます。

WinMergeを使用する利点は、5つの異なるファイル比較方法から選択できることです。
  1. 完全なコンテンツ(デフォルト):すべてのベルとホイッスルを含む、コンテンツごとのファイルの完全な比較。 このメソッドはプラグインを呼び出し、diffutilsエンジンを使用して、完全に正確な差分と移動ブロックの検出を行います。 これは最も完全で推奨される方法です。
  2. クイックコンテンツ:コンテンツごとのファイルのスリム化された比較。 このメソッドは、プラグインと移動ブロックの検出をスキップする合理化されたファイル比較コードを使用します。 この方法はファイルをロードしないため、フルコンテンツよりも高速です。 その欠点は、比較時にラインフィルターが適用されないことです。 たとえば、このメソッドは、ファイル内のすべての違いを無視するようにラインフィルターが設定されている場合でも、ファイルを別のものとして認識します。
  3. 変更日:ファイルの変更日のみを比較するため、どちらのコンテンツメソッドよりもはるかに高速です。 しかし、明らかに、修正日と同じくらい正確です。
  4. 変更日とサイズ:変更日と似ていますが、日付が同じ場合はファイルサイズもチェックします。
  5. サイズ:ファイルサイズのみを比較するため、高速ですがコンテンツメソッドほど正確ではありません。

WinMergeは、多くのコマンドラインスイッチをサポートしています。 サポートされているコマンドラインスイッチの完全なリストについては、WinMergeマニュアルをご覧ください。

WinMergeとフォルダーを同期する

WinMergeの[表示]メニューから[ 同一アイテムの表示]をオフにした場合、変更された左のみおよび右のみのファイルのリストのみが表示されます。 左から右へ、またはその逆からアイテムを同期するのは簡単です。

必要なのは、ファイルを選択(またはすべて選択)し、選択部分を右クリックして[コピー]をクリックすることだけです。 [コピー]サブメニューで、次のいずれかのオプションを選択します。

  1. 左から右:選択したファイルを左のフォルダから右にコピーします。
  2. 左から…:左のフォルダから他のフォルダにファイルをコピーします。
  3. 右から左:選択したファイルを右のフォルダから左にコピーします。
  4. Right to… :正しいフォルダから他のフォルダにファイルをコピーします。


方法3:FreeFileSyncを使用して2つのフォルダー内のファイルを比較する方法

FreeFileSyncは、すべての重要なファイルのバックアップコピーを作成および管理するオープンソースソフトウェアのフォルダー比較および同期ソフトウェアです。

  1. FreeFileSyncをダウンロードしてインストールします。
  2. ファイルサイズや変更日ではなくファイルの内容でフォルダーを比較するには、 [比較]オプションで[ファイルの内容]を選択します。 ただし、 ファイルサイズで比較すると、はるかに速く、リソースをあまり消費しません。
  3. 左側のフォルダーと右側のフォルダーを選択します。
  4. 比較(ファイル内容)ボタンをクリックします。

    2つのフォルダー内のアイテムを再帰的に比較し、新しいファイルと変更されたファイルのリストを表示します。

    同じファイルが出力に表示されません。 デフォルトでは、左のみのファイル、別のファイル、および右のみのファイルが表示され、FreeFileSyncウィンドウの下部にあるボタンを使用してオプションを切り替えることができます。

FreeFileSyncを使用してフォルダを同期する

FreeFileSyncは、Microsoft SyncToyと同様の次の同期オプションを提供します。

  1. 双方向の同期:変更を特定し、両側で適用します。 削除、移動、および競合は、データベースを使用して検出されます。
  2. ミラー:ミラーは左→右同期です。 右フォルダは、左フォルダのミラーコピーになります。 これは、Microsoft SyncToyのEchoオプション、およびrobocopy / mirコマンドラインと同じです。 右側のフォルダーにある余分なファイルとフォルダーが削除され、別のファイルが置き換えられます。
  3. 更新:この同期オプションは、 ミラーオプションと同様に、左フォルダー→右フォルダーの同期を行います。 ただし、このオプションでは、右側のフォルダーツリーにある余分なファイルとフォルダーは削除されません。 Microsoft SyncToyのContributeオプションに似ています。
  4. カスタム:上記の3つのプリセットオプションに加えて、 カスタムオプションでは、左のみのファイル、変更されたファイル、または右のみのファイルを処理する方法に関するデフォルトのアクションを選択できます。 たとえば、左右のフォルダーに一意のファイルのみを含める(重複を排除する)必要がある場合は、同一のファイルを削除するように構成できます。 ほとんどの場合、特別な要件がない限り、 カスタム設定を選択する必要はありません。

デフォルトでは、双方向の同期を行います。 個人的には、ウェブサイトプロジェクトにはミラーバックアップを、ドキュメントにはバックアップオプションを更新することを好みます。 それに応じて、同期オプションの1つを選択します。

比較結果では、デフォルトですべてのファイルが選択されています。 ファイル名の横にあるチェックボックスをオフにするか、右クリックメニューを使用して、ファイルを同期から除外できます。

  • リストに表示されているすべてのアイテムを同期するには、上部の[ 同期 ]ボタンをクリックします。
  • 特定のファイルまたは一連のファイルを同期するには、右クリックメニューから(一時的に)すべてのアイテムを除外し、選択したファイルのチェックボックスをオンにし、選択を右クリックして、[ 選択の同期 ]をクリックし、[ 開始 ]をクリックします。

それでおしまい! これでフォルダーが同期され、コピー/更新/削除操作がFreeFileSyncによってログに記録されます。

ローカルフォルダと比較して、同期します。 FTPフォルダーを再帰的に

FreeFileSyncは、ローカルフォルダーとGoogleドライブ、またはFTPまたはSFTP接続を使用してローカルサーバーとFTPサーバーのフォルダーを再帰的に比較することもできます。 ローカルフォルダーとサブフォルダーをFTPサーバー上のフォルダーと比較して同期する方法を次に示します。

必要なのは、左側のペインまたは右側の[参照]ボタンの横にある[ オンラインストレージにアクセス ]ボタンをクリックすることだけです。 このボタンをクリックすると、次のダイアログが開きます。

FTPまたはSFTP接続情報、資格情報、およびFTPフォルダーパスを入力して、ローカルフォルダーと比較します。

完了すると、比較ウィンドウに戻ります。

ファイルサイズまたはファイル時間とサイズの比較方法を選択しました。 後者の比較方法はより信頼できます。

同期バリアントを選択します。 私は、この目的のために( ミラーではなく) 双方向同期に設定しました。

設定したら、[比較]をクリックします。 左側と右側のフォルダーに、不足しているファイルとさまざまなファイルのリストが表示されます。

[双方向同期]が選択されているため、[ 同期 ]ボタンをクリックしてファイルを双方向でコピーします。 FTPロケーションのみを更新する場合は、代わりにミラー同期を選択します。

FreeFileSyncをバッチジョブとして実行する| コマンドライン同期

上記の構成をバッチジョブに保存し、コマンドラインまたはスケジューラを介して実行できます。 構成を保存し、コマンドラインを使用して実行するには、次の手順に従います。

  1. [ファイル]メニューの[ バッチジョブとして保存... ]オプションをクリックします

  2. バッチジョブを最小化して実行し、同期が完了すると自動的にウィンドウを閉じるように構成できます。

  3. バッチジョブファイルを任意のフォルダー(たとえば、 d:\ BatchRun.ffs_batch)に保存します。
  4. 次に、コマンドラインを使用してフォルダーを同期するには、次のコマンドライン構文を使用します。
     C:\ Program Files \ FreeFileSync \ FreeFileSync.exe d:\ BatchRun.ffs_batch 

    必要に応じて、Windowsバッチファイルを作成するか、タスクスケジューラを介して上記のコマンドを定期的に実行できます。

ヒント: FreeFileSyncは、Googleドライブに対してフォルダーを同期することもできます。


方法4:TotalCommanderを使用して2つのフォルダー内のファイルを比較する方法

Total Commanderは、ファイルをコピー、移動、または削除できるWindows用のファイルマネージャーです。 Total Commanderはそれ以上のことができます。 ファイルのパックとアンパック、FTPサーバーへのアクセス、コンテンツによるファイルの比較などができます。

  1. Total Commanderを起動し、左フォルダーと右フォルダーを選択して比較します。
  2. [ コマンド ]メニューの[ ディレクトリの同期… ]をクリックします

    [ dirs同期 ]ダイアログを使用すると、サブディレクトリを含む2つのディレクトリを相互に比較し、差分のあるファイルをターゲットディレクトリまたはその他のディレクトリにコピーできます。

    非対称オプションを選択すると、RoboCopy / MIRコマンドラインやMicrosoft SyncToyのEchoオプションと同様に、右側のフォルダーが左側のミラーになります。 つまり、このオプションでは、不足しているファイルや異なるファイルが正しいフォルダーにコピーされ、右側の余分なファイルやフォルダーは削除されます。

    同じファイルを表示するか、出力に異なるファイルのみを表示するかを選択できます。

    以下で説明するTotal Commanderの比較/同期オプション。

    非対称のこのオプションをオンにすると、左側のコピーが右側に作成されると想定されます。 左側に存在しないファイルは、右側に削除のマークが付けられます。 このオプションはバックアップ用です。
    サブディレクトリまた、選択した2つのディレクトリのサブディレクトリを比較します。
    内容によってサイズと日付が同じファイルの内容を比較します。 ファイルの内容も同じであることを確認します。
  3. 比較オプション「Subdirs」、「by content」を選択します。

    重要: 日付を無視するチェックボックスが有効になっている場合、Total Commanderはファイルサイズが異なっていても、異なる/変更されたファイルを見つけることができません。 Total Commanderのバグのようで、毎回再現できます。

  4. [表示]セクションで、 等しいファイル=記号で示される)を無効にし、他の3つのボタンを有効にします。
  5. 単一および重複オプションを有効にします。
  6. 比較ボタンを押します

Total Commander –フォルダー比較コマンドライン引数

「dirsの同期」を開始するには、次のコマンドライン構文を使用できます。

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

次に、オプションを設定し、 比較ボタンを押します。

「dirsの同期」を開始してすぐにフォルダーを比較するには、次の構文を使用します。

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

(比較は、渡されたディレクトリと最後に使用されたオプションから始まります。)

オプションで、 /S=S:SettingsName形式で設定名を入力して、以前に保存した設定に基づいて比較がすぐに開始されるようにすることもできます。

TotalCommanderを使用してフォルダーを同期する

  1. 比較ウィンドウで、コピーするファイルを選択します。 これは、2つの比較列の間のチェックボックスをクリックするか、右クリックメニューのオプションの1つを選択することによって行われます。

    デフォルトでは、この関数はコピーするすべての新しいファイルを選択します。 ファイルの選択を解除して、コピーまたは同期されないようにするには、矢印をダブルクリックします。 複数のファイルの選択を解除するには、ファイルを選択し、アイテムを右クリックして[選択を削除]を選択します

    重要: 非対称オプションが有効になっていない場合、右側のフォルダーにあるファイルが左側のフォルダーにあるファイルよりも新しいと、そのファイルに対して同期が右→左から実行されます。 逆に変更するには、ファイルの横にある矢印をクリックして、同期の方向を切り替えます。

    または、ファイルを右クリックして[ 逆方向コピー ]を選択し、同期方向を変更することもできます。

  2. [ 同期]をクリックします。 選択したファイルをコピーするためのダイアログボックスが開きます。

    デフォルトでは、両方の方法で同期されます。 左フォルダー→右フォルダーなど、一方向に同期する場合は、[ 右から左]チェックボックスの選択を解除します。逆も同様です。

ヒント: Total Commanderを使用すると、ローカルディレクトリとFTPサーバー上のディレクトリを同期することもできます。


方法5:DSynchronizeを使用してフォルダーをリアルタイムで比較および同期する

DSynchronizeは、2つのフォルダを手動または自動でリアルタイムに同期できる便利なツールです。 このツールは、ファイルの同期方法を構成するために、他のフォルダー同期ツールよりも多くのオプションを提供します。

  1. DSynchronizeを起動し、ソースフォルダーと宛先フォルダーを構成します。
  2. JOBSボタンをクリックすると、カスタムジョブ名を割り当てることができます(後で自動化するため)。 ジョブ名をUploads設定しましょう
  3. ミラー同期の場合、双方向同期が無効になっていることを確認してください。
  4. 2つのフォルダーを同期せずに比較(のみ)を行うには、[全般]セクションの[ 同期のプレビュー ]オプションを有効にします。

  5. [同期]ボタンをクリックして、両方の場所にある新しいファイル、更新されたファイル、不足しているファイルのリストを表示します。

フォルダを同期する

フォルダを同期するには、[ 全般 ]セクションの[ プレビューの同期 ]オプションをオフにして、[ 同期 ]をクリックします。 デフォルトではミラーモードで同期します。 ミラーモードについては、この記事の前半で説明しました。 ミラーモードでは、右側のフォルダーが左側のフォルダーとまったく同じになります。 宛先にある余分なディレクトリとファイルは自動的に削除されます。

リアルタイム同期

2つのフォルダをリアルタイムで同期するには:

  1. [タイマー]セクションの[ リアルタイム同期]をクリックします。
  2. 必要に応じて、リアルタイム同期設定を構成します。 デフォルトの設定を使用しました。

    デフォルトでは、10秒後に自動的にフォルダを同期します。 さらに延期するように構成したり、指定した間隔で実行するようにスケジュールしたりできます。

  3. [ サブフォルダーを監視する]チェックボックスをオンにして、フォルダーを再帰的に同期します。

一部のファイルを左側のフォルダー(ソース)にコピーしました。10秒以内に、アイテムは右側のフォルダーに自動的に同期されました。 あなたはこのアニメーションGIFでそれを見ることができます:

また、変更(ファイルまたはフォルダーの追加と削除)はメインウィンドウに記録されます。

リアルタイム同期が有効な場合、ファイルの変更を監視し、プログラムは通知領域に置かれて変更を待機します。 CPUリソースやメモリをあまり消費しません。 最後に確認したところ、メモリは約10 MBしか使用していませんでした。

DSynchronizeの主な機能は次のとおりです。

  • 標準およびタイマー同期。
  • リアルタイム同期。
  • 双方向同期。
  • トランザクション同期(NTFSのジャーナルによる)。
  • 選択的フィルター(単一のファイルまたはフォルダーを除外できます)。
  • サービスとして開始します(プログラムはログインする必要はありません)。
  • シンボリックリンクとハードリンクをサポートします。
  • ジャンクションとマウントポイントをサポートします。
  • ACLをサポートします。
  • メールで送信されたログ。
  • 置き換えられたファイルの以前のバージョンのバックアップ。
  • バイトごとの比較。
  • 複数のジョブをサポートし、それぞれに設定と同期パスがあります。
  • 最小リソース消費(RAMおよびCPU)。

コマンドラインのサポート

次のコマンドラインを使用してDSynchronizeを自動化できます。

/START =最後に保存されたオプションで同期を開始します。

/STARTJOB "JobName" =選択したジョブオプションで同期を開始します)。

/MINIMIZE = /MINIMIZE最小化を開始します。

/HIDDEN = /HIDDENアイコンを表示しません。

/NOSECURITYCHECK =同期前にセキュリティチェックを行いません。

/NOMONITORCHECK =モニターの解像度をチェックしません。

/AUTOREALTIME =最小化して起動し、標準の同期を行い、リアルタイムをアクティブにします。

/SOMEFILE.INI =選択したINIファイルの使用を開始します。

ジョブ名は、プログラムのメインウィンドウの上部にある[ジョブ]ボタンをクリックしてカスタマイズできます。

たとえば、2つのフォルダー(以前に保存した「アップロード」という名前のジョブ)を自動的に同期するには、次のコマンドを実行します。

 "D:\ dsynchronize \ DSynchronize.exe" / STARTJOB "アップロード" / MINIMIZE 

2つのフォルダー(「アップロード」という名前のジョブ)を同期し、リアルタイム同期をアクティブにするには、次のコマンドを実行します。

 "D:\ dsynchronize \ DSynchronize.exe" / STARTJOB "アップロード" / AUTOREALTIME 

上記のコマンドは、ジョブで指定された2つのフォルダーを同期し、リアルタイム監視を自動的にアクティブにします。 通知領域にリアルタイム監視アイコンが表示されます。

それでおしまい!


方法6:ファイルハッシュチェックサムを使用してHashMyFilesユーティリティで2つのフォルダーを比較する

HashMyFilesは、ファイルのハッシュチェックサムを計算する小さなユーティリティです。 フォルダーとそのサブフォルダー内のファイルのハッシュを再帰的に計算できます。 HashMyFilesを使用すると、結果をファイルに保存できます。 右クリックメニューからハッシュチェックサムを計算することもできます。

PowerShellがお好みでない場合は、Nirsoft.netのHashMyFilesユーティリティを使用してファイルハッシュを比較してください。

ソースフォルダーツリーのファイル名と対応するハッシュ出力をsource.txtに保存できます。 同様に、宛先フォルダツリーのエントリをdestination.txtとして保存します。

この例では、次のフォルダー内のファイルを比較します。

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

HashMyFilesを使用してファイルハッシュを生成し、それらを比較するには、 次の手順従います。

  1. HashMyFilesをダウンロードして実行します。
  2. [オプション]メニューから[ハッシュの種類]をクリックし、[ SHA-256 ]を選択します

  3. [表示]メニューの[ 列の選択 ]をクリックします

  4. [列の設定]で、オプション[ SHA-256 ]、[ 絶対 パス] 、および[ファイルサイズ ]を有効にします。 OKをクリックします。
  5. [ファイル]メニューをクリックし、[ フォルダの追加 ]を選択します
  6. 比較するソースフォルダを選択します。

  7. [ サブフォルダーにファイルを追加 ] クリックして選択し、[OK]をクリックします。
  8. 結果をフルパス順で並べ替え、すべてのエントリを選択します。
  9. [ファイル]メニューの[ 選択したアイテムを保存 ]をクリックします
  10. リストをsource.txtという名前のファイルに保存します
  11. [ファイル]メニューから[ すべてクリア ]を選択して、結果をクリアします。
  12. 上記の手順を繰り返し、今度は宛先フォルダーを選択して、リストをdestination.txtに保存します。
  13. 次に、メモ帳を使用してファイルsource.txtおよびdestination.txtを編集し、ベースパスを削除します。 メモ帳の[検索]オプションを使用して、以下のベースパスをすべて検索し、空の文字列に置き換えます。
     D:\ Websites \ Winhelponline \ blog \ wp-content \ 
  14. 同様に、 destination.txtファイルで、次のベースパスを削除します。
     E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ 

    セパレータとして使用されている=記号を見つけて削除することもできます。

    ファイルは次のようになります。

  15. 次に、WinDiffまたはお気に入りのファイル比較ツールを起動して、違いを確認します。

さまざまなファイル、追加ファイル、不足しているファイルのリストが表示されます。


方法7:Robocopyを使用して2つのフォルダー内のファイルを比較する方法

組み込みのRobocopyコンソールユーティリティを使用して、2つのフォルダの内容を比較する方法を見てみましょう。

Robocopy(「Windows用の堅牢なファイルコピー」)は、Windowsに組み込まれた優れたファイルコピーツールで、膨大な機能を備えています。 Robocopyの機能は、組み込みのWindowsコピーおよびXCopyコマンドを超えています。 Robocopyはファイル名だけでなく、最終変更時刻も比較するため、RoboCopyはすべてのコマンドラインメソッドの中で最も望ましい方法です。 変更されたファイルとソースおよび宛先パスの新しいファイル/フォルダーのリストを報告します。

その優れた機能には、「ミラー」モードのコピー(Microsoft SyncToyの「 Echo 」オプションと同様)、ネットワークが中断した場合にコピーを再試行する機能、マルチスレッドコピーなどがあります。ファイルのコピー以外に、Robocopyを使用して比較することもできます。 2つのフォルダーの内容(再帰的に)と、 模擬実行など、何もコピーせずに違いをログに記録します

シナリオ

私のWebサイトのファイルは、外付けハードドライブ( E:\ )に定期的に同期されます。 説明のために、これら2つのフォルダが同一であるかどうかを確認してみましょう。 この例では、次のフォルダーを再帰的に比較します(つまり、サブフォルダーとともに詳細比較を行います)。

 D:\ Websites \ Winhelponline \ blog \ wp-content \ uploadsおよびE:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content \ uploads 
  1. コマンドプロンプトウィンドウを開きます。
  2. 次のコマンドを実行し、Enterキーを押します。
     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 

    上記のコマンドの結果は、 D:\Diff.txtファイルに記録されます。

  3. コマンドプロンプトウィンドウを終了します。

使用されているRobocopyコマンドラインスイッチの詳細

  • /L ::リストのみ–ファイルのコピー、タイムスタンプ、削除は行わないでください。 このオプションは、ロギング目的でのみ使用されます。 ドライラン用。
  • /MIR ::ディレクトリツリーのミラーリング(/ E plus / PURGEと同等)。 /Lスイッチで使用しているため、実際にはファイル/フォルダーはコピーされません。
  • /TS ::出力にソースファイルのタイムスタンプを含めます。
  • /LOG:file ::ステータスをLOGファイルに出力します(既存のログを上書きします)。

この例では、出力をD:\Diff.txtます。 ログは次のようになります。

  ------------------------------------------------------------------------------- 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 

ソース内の追加のディレクトリとファイル、および宛先フォルダーを明確に確認できます。 また、タイムスタンプを比較して、ファイルが古いか新しいかを通知します(宛先の同じファイルと比較して)。

この例では、次のような違いがあります。

  1. * EXTRA Dir :追加のディレクトリーが宛先に存在しますが、ソースには存在しません。
  2. * EXTRAファイル :追加のファイルが宛先に存在しますが、ソースには存在しません。
  3. 古い :このファイルは、宛先のファイルと比較して古いです。
  4. Newer :このファイルは、宛先のファイルよりも新しいです。
  5. 新規ファイル :このファイル宛先に存在ませんLonelyファイルとも呼ばれます

RoboCopyファイル分類の完全なリスト:

 ----------- ----------- ---------------- ------------ --- ------------- ------------ Classifi_ Exists In Exists In Source / Dest Source / Dest Source / Dest cation Source Destination File Times File Sizes Attributes ----------- ----------- ---------------- ------------ --- ------------- ------------新しいはいはいSrc> dest n / an / a古いはいはいSrc <dest n / an / a新規はいいいえn / an / an / a追加いいえはいn / an / an / a変更はいはい等しい異なるn / a同じはいはい等しい等しい等しい調整済みはいはい等しい等しい異なる不一致はい(ファイル)はい(ディレクトリ)n / an / an / a ----------- ----------- ---------------- ------ --------- ------------- ------------ 

注: Tweakedファイルは、ソースと宛先の両方に存在し、サイズとタイムスタンプは同じですが、属性設定が異なるファイルとして定義されます。

Robocopyは、2つのフォルダー内のファイルを(複数レベルのサブフォルダーと共に)比較および同期し、その違いをログファイルに一覧表示する素晴らしいツールです。

Robocopyを使用してフォルダーを同期する

フォルダーを(左側→右側のフォルダーからのみ )RoboCopyと同期するには、以前にフォルダーの比較に使用したのと同じコマンドライン構文を使用しますが、今回は/L (リストのみ)スイッチを使用しません。

RoboCopyは一方向の同期を行います(左→右フォルダーから)

RoboCopyのミラーコピーモード( /MIR )は、Microsoft SyncToyの「 エコー 」機能に似ています。 RoboCopyは、左→右の同期のみを行います—双方向の同期は行いません

/MIRスイッチは、宛先フォルダーツリー内の余分なファイルとディレクトリ削除することに注意してください。 「追加」のファイル/フォルダーは、宛先には存在するが、ソースパスには存在しないアイテムです。 /MIR (ミラー)コマンドは、宛先フォルダー構造(およびファイル)がソースの正確なコピーであることを確認します。

次のコマンドライン構文を使用して、左→右フォルダーからアイテムを同期します。

 robocopy source_folder destination_folder / MIR / MT 

/MTスイッチは、超高速コピー操作のためにマルチスレッドコピーを実行するためのものです。 これはオプションのスイッチですが、非常に便利です。

同期ステータスは処理されたアイテムごとにコンソールに出力され、統計は出力の最後に表示されます。

出力をファイルに記録するには、次の構文を使用します。

 robocopy source_folder destination_folder / MIR / MT / TS /LOG:D:\Diff.txt 

バッチファイルを使用してコマンドを自動化する

すべてのRobocopyコマンドをメモ帳に追加して、Windowsバッチファイル(拡張子.bat )として保存できます。 上記のフォルダーを同期する場合は、バッチファイルをダブルクリックするだけです。 タスクスケジューラを使用して、必要な間隔でバッチファイルを実行することもできます。


方法8:FCIVユーティリティでファイルハッシュチェックサムを使用して2つのフォルダーを比較する

暗号化ハッシュアルゴリズム(MD5、SHA-1など)を使用すると、2つのファイルが同一かどうかを確認できます。 チェックサムは、ファイルのデータ整合性チェックを実行するために使用されるハッシュ値です。 これは、ファイルの署名の一種です。

Microsoft File Checksum Integrity Verifierツール(FCIV)は、ファイルのMD5またはSHA1暗号化ハッシュを計算するコマンドラインユーティリティです。 ファイルのリストとそのMD5またはSHA1ハッシュをXMLデータベースに出力し、ターゲットフォルダー内のファイルをXMLデータベースファイルに格納されているハッシュと比較できます。

この方法は、RobocopyやWinDiffなどの上記の方法のいずれかを使用して2つのフォルダーを同期し、ファイルのハッシュ/チェックサムとソースの場所のハッシュを比較して、各宛先ファイルの整合性を検証したい場合に特に役立ちます。

シナリオ:

FCIVを使用して、次のフォルダーの内容を再帰的に比較してみましょう。

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

Microsoft File Checksum Integrity Verifierを公式のMicrosoftダウンロードセンターからダウンロードし、 fciv.exeをフォルダー(例d:\tools抽出しd:\tools 。 次に、次のいずれかの方法に従います。

オプション1

  1. コマンドプロンプトウィンドウを開き、次のコマンドライン構文を使用します。
     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 

    上記のコマンドラインは、各ファイルのSHA1ハッシュを再帰的に計算し、ファイル名と対応するハッシュをhashdb.xmlという名前の.XMLファイルに出力します。

    -bpパラメーターは、フルパス名から削除するベースパスを指定するために使用されます。 これにより、ベースパスがXML出力に含まれなくなり、まったく同じフォルダー構造を持つ宛先フォルダーパスのアイテムを比較できます。

    XMLファイルの内容は次のようになります。

  2. 次に、コマンドプロンプトウィンドウで、次のコマンドを実行して宛先フォルダーに切り替えます。
     cd / d "E:\ RameshPC-Synced Backup \ Websites \ Winhelponline \ blog \ wp-content" 
  3. 次に、次のコマンドを実行してEnterキーを押します。
     d:\ tools \ fciv.exe -v -sha1 -xml D:\ hashdb.xml 

    上記のコマンドは、先にXMLファイルhashdb.xmlでキャプチャしたハッシュチェックサムに対して宛先ファイルを検証します。

    出力には、(ハッシュチェックサムに基づいて)変更されたファイルのリストと、(宛先にある)不足しているファイルのリストが表示されます。

    次に出力例を示します。

     チェックサム検証の開始:日付/タイムスタンプ変更されたファイルのリスト:----------------------- uploads \ 2019 \ 05 \ w10-enhanced-search-settings.pngハッシュは:8dac0a4400d2b700f81bf70c189e49eb6a620a2fである必要があります:cc2a1523ef070dc2e498dbf5f8cf5edac1b6900dハッシュファイルをアップロードできません\ uploads \ 2019 \ 05 \ windiff-header.pngエラーメッセージ:指定されたファイルが見つかりません。 エラーコード:2ファイルのアップロードをハッシュできません\ 2019 \ 05 \ windows-store-error-0x800706d9.pngエラーメッセージ:指定されたファイルが見つかりません。 エラーコード:2 uploads \ 2019 \ 05 \ w10-enhanced-search-settings.pngハッシュは:8dac0a4400d2b700f81bf70c189e49eb6a620a2fする必要があります:cc2a1523ef070dc2e498dbf5f8cf5edac1b6900dハッシュファイルをアップロードできません。エラーファイルアップロードできません。指定されたファイル。 エラーコード:2ファイルのアップロードをハッシュできません\ 2019 \ 05 \ windows-store-error-0x800706d9.pngエラーメッセージ:指定されたファイルが見つかりません。 エラーコード:2検証終了:タイムスタンプ 

上記の方法は、宛先フォルダー内の一致するファイルの整合性をチェックするのに非常に役立ちます。 ただし、宛先にある追加ファイルのリストは表示されません。 That's where Option 2 below has an additional advantage.

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!

関連記事