使用 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 結果檔案複製的檔案摘要:
- 總共四個文件; 2個子目錄加上根目錄(
.
) .
根 ( )上總共三個文件54081位元組. DU_d_TEMP.txt 報告58177字節,相差4096位元組.- /Help 目錄中沒有直接文件
- /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。