複製和比較指令 (RoboCopy Diff Du) 的結果不同,請解釋。

複製和比較指令 (RoboCopy Diff Du) 的結果不同,請解釋。

使用 Windows 7 專業版 64 位元...

使用批次檔和 RoboCopy.exe 進行複製

4 個檔案和 2 個目錄從
c:\temp = SDD(固態磁碟機)到

r:\temp = USB 記憶棒(隨身碟),指令為:

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

問題:為什麼
diff.exe 透過 RoboCopy 看到上面的複製指令結果是好的,沒有錯誤,但是
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:

光碟\

光碟溫度

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

:

光碟\

光碟溫度

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

18855 ./幫助/HTML/用法.htm

27047 ./幫助/HTML

0 ./幫助

297./輸出1.log

52876./Q.EXE

58177。

總計 85224


DU_r_TEMP.txt

第908章

297./輸出1.log

52876./Q.EXE

18855 ./幫助/HTML/用法.htm

18855 ./幫助/HTML

0 ./幫助

54081。

總計 72936


du.exe 文字檔看到的差異

12288 位元組(85224 - 72936)

問題:為什麼
diff.exe 透過 RoboCopy 看到上面的複製指令結果是好的,沒有錯誤,但是
du.exe 到文字檔案卻看到了差異?

--

答案1

我有點猶豫是否將此作為答案,但它有幾個可能的解釋。我不熟悉 du 或 diff,但我假設 diff 比較文件並報告差異,而 du 報告所有文件和目錄的文件和目錄大小。透過查看 du 結果檔案複製的檔案摘要:

  1. 總共四個文件; 2個子目錄加上根目錄( .)
  2. .根 ( )上總共三個文件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 忽略或無法複製的系統/隱藏檔案或連線。可能在不同的檔案系統上? (想知道為什麼-X標誌被用在 du) 這是不太可能,因為 Robocopy 在選擇要複製的檔案時會忽略大多數來源檔案屬性。但是,如果它選擇了要複製的文件,但無法複製,則可能的du 和 diff 可能會忽略系統/隱藏檔案本身,但 du 偵測到該目錄中已使用空間。在不知道完整設定、檔案系統、連接的磁碟機/機器等的情況下,也沒有看到 Robocopy 日誌檔案的情況下,我還不能排除這種可能性。例如,參見這個答案在 askubuntu 論壇上,關於 Windows 分割區上的檔案可以被 Ubuntu 看到但不能被 Windows 看到。

解釋2:D: 上的檔案系統儲存檔案的方式與 R: 上的檔案系統不同。 4096 位元組是現代磁碟機上常見的磁區大小,因此根 ( ) 和 /Help/HTML/ 目錄上的兩個較大檔案(而不是 1KB 以下的檔案).可能有一個額外的磁區 (4096位元組)或兩個(8192位元組)分配給未使用的檔案。

我並不是說這是唯一的兩種解釋,但這是兩種可能的解釋。如果您仍然擁有它,請發布 Robocopy 日誌文件可能排除解釋1。

相關內容