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 の結果ファイルを見ると、コピーされたファイルの概要は次のようになります。
- 合計 4 つのファイル、2 つのサブディレクトリとルート ディレクトリ (
.
) - ルート(
.
)上の3つのファイルの合計54081バイト。DU_d_TEMP.txtは58177バイトの差は4096バイト。 - /Help ディレクトリに直接ファイルはありません
- /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を除外します。