コピー コマンドと比較コマンド (RoboCopy Diff Du) で異なる結果が発生するので、説明してください。

コピー コマンドと比較コマンド (RoboCopy Diff Du) で異なる結果が発生するので、説明してください。

Windows 7 Professional 64 ビットの場合...

バッチファイルとRoboCopy.exeを使用してコピーしました


c:\temp = SDD (ソリッドステートドライブ)から4つのファイルと2つのディレクトリ

r:\temp = USB スティック (フラッシュドライブ) コマンド:

"C:\WINDOWS\system32\ROBOCOPY.EXE" "D:\TEMP" "R:\TEMP" /V /TEE /S /E /COPY:DAT /DCOPY:T /NP /XJ /R:1000000 /W:30 /LOG:r:\RoboCopyInfo.LOG


質問: diff.exe では、RoboCopy 経由の上記のコピー コマンドの結果を「OK、エラーなし」と表示するのに、
du.exe ではテキスト ファイルに対して差異が表示されるのは なぜですか?

「C:\Program Files\Gow\bin\DIFF.exe」 -q -r 「D:\TEMP」 「R:\TEMP」

:: DIFF.exe = diff (GNU diffutils) 2.8.7 https://github.com/bmatzelle/gow/releases

:: -q = ファイルが異なるかどうかのみ出力します。

:: -r = 見つかったサブディレクトリを再帰的に比較します。

:: "D:\TEMP" = SDD (ソリッド ステート ドライブ) 上のソース ファイル。

:: "R:\TEMP" = 宛先ドライブは HDD または USB スティック (フラッシュ ドライブ) です。R を適切な文字に置き換えます。

:: DIFF.exe 終了ステータスは、入力が同じ場合は 0、異なる場合は 1、問題がある場合は 2 になります。

しかし、du.exe はテキスト ファイルに対して上記を別のバッチ ファイルとして認識します。

d:

CD\

CD温度

"C:\Program Files\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_d_TEMP.txt

r:

CD\

CD温度

"C:\Program Files\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_r_TEMP.txt

:: du.exe = ディスク使用量 (GNU coreutils) 5.3.0 https://github.com/bmatzelle/gow/releases

:: "D:\TEMP" = SDD (ソリッド ステート ドライブ) 上のソース ファイル。

:: "R:\TEMP" = 宛先ドライブは HDD または USB スティック (フラッシュ ドライブ) です。R を適切な文字に置き換えます。

:: -a = ディレクトリだけでなく、すべてのファイルの書き込みカウント

:: -b = バイト、`--apparent-size --block-size=1' と同等

:: -c = 合計、総計を生成

:: -P = --no-dereference、シンボリックリンクをたどらない(これがデフォルト)

:: -S = --separate-dirs、サブディレクトリのサイズを含めない

:: -x = --one-file-system 異なるファイルシステム上のディレクトリをスキップする


DU_d_TEMP.txt

908 ./cicon9.gif

18855 ./ヘルプ/HTML/使用方法.htm

27047 ./ヘルプ/HTML

0 ./ヘルプ

297 ./出力 1 .log

52876 ./Q.EXE

58177 .

合計85224


DU_r_TEMP.txt

908 ./cicon9.gif

297 ./出力 1 .log

52876 ./Q.EXE

18855 ./ヘルプ/HTML/使用方法.htm

18855 ./ヘルプ/HTML

0 ./ヘルプ

54081 .

合計72936


du.exeテキストファイルでは、

12288 バイト (85224 - 72936)


質問: diff.exe では、RoboCopy 経由の上記のコピー コマンドの結果を「OK、エラーなし」と表示するのに、
du.exe ではテキスト ファイルに対して差異が表示されるのは なぜですか?

--

答え1

これを答えとして出すのはちょっとためらわれますが、いくつかの説明が考えられます。私は du や diff に詳しくありませんが、diff はファイルを比較して相違点を報告し、du はすべてのファイルとディレクトリのファイル サイズとディレクトリ サイズを報告するものだと思います。du の結果ファイルを見ると、コピーされたファイルの概要は次のようになります。

  1. 合計 4 つのファイル、2 つのサブディレクトリとルート ディレクトリ ( .)
  2. ルート(.)上の3つのファイルの合計54081バイト。DU_d_TEMP.txtは58177バイトの差は4096バイト。
  3. /Help ディレクトリに直接ファイルはありません
  4. /Help/HTMLディレクトリ下の1つのファイルの合計18855バイト。ただし、DU_d_TEMP.txtには27047/Help/HTMLのバイト数の違いは8192バイト。

説明1: D: に、Robocopy が無視したかコピーできなかったシステム/隠しファイルまたはジャンクションがあります。別のファイルシステム上にある可能性がありますか? (なぜ-バツフラグはduで使用されました)これはありそうもないRobocopyはコピーするファイルを選択する際にほとんどのソースファイル属性を無視するため、コピーするファイルを選択したが、選択できなかった場合は、可能du と diff はシステム/隠しファイル自体を無視するかもしれませんが、du はそのディレクトリでスペースが使用されていることを検出しました。完全なセットアップ、ファイルシステム、接続されたドライブ/マシンなどを知らず、Robocopy ログファイルも見ていないので、まだそれを除外することはできません。たとえば、この答えaskubuntu フォーラムで、Windows パーティション上のファイルが Ubuntu では表示できるが、Windows では表示されないという問題が報告されています。

説明2: D: のファイルシステムは、R: のファイルシステムとは異なる方法でファイルを保存します。4096 バイトは最近のドライブの一般的なセクター サイズであるため、ルート ( .) および /Help/HTML/ ディレクトリの 2 つの大きなファイル (1KB 未満のファイルとは対照的) には、余分なセクター (4096バイト)または2(8192ファイルに割り当てられた未使用の領域(バイト)です。

これらが唯一の説明だと言っているわけではないが、これらは2つの可能説明。まだお持ちの場合は、Robocopyのログファイルを投稿してください。かもしれない説明1を除外します。

関連情報