Linux
相同的文件夾內容但不同驅動器上的大小不同,為什麼?
我有同一個文件夾的三個副本,但它們的大小不同。為什麼?
我有一個文件夾“Documents”,我已將其從桌面硬碟驅動器上的加密 lvm 複製到外部驅動器上的加密 luks 分區。然後,我將此文件夾從外部驅動器複製到筆記型電腦硬碟驅動器上的加密 lvm 中。
所以我有同一個文件夾的三個副本:
- 桌面
- 外部驅動器
- 筆記型電腦
我
diff
在台式機和外部驅動器之間使用過–>沒有區別。我
diff
在筆記型電腦和外置驅動器之間使用過 –> 沒有區別。但是這三種情況我有不同的文件夾大小。
我用過
du -bs --apparent-size Documents
測量尺寸。結果如下:
- 桌面:1735750760
- 外驅:1735742568
- 筆記型電腦:1735746664
因此,我們注意到尺寸之間存在細微差別。差別不大,但仍然存在。我想知道為什麼會這樣。你有解釋嗎?
您可能已經註意到不同文件夾之間的區別如下:
Desktop: 1735750760 - 8192 External drive: 1735742568 + 4096 Laptop: 1735746664
根據我的經驗,這種 4K 塊的差異通常是由目錄大小的變化引起的。如果您比較目錄本身的大小(在 ext 文件系統上通常是 4K 的倍數),您可能會發現差異。
(例如,目錄有時會在複製操作期間重組時變小,從而清除已刪除的條目)
要查找大小不同的目錄,您必須將目錄相互比較。以下腳本可以幫助您:
#!/bin/bash DIR1="${1%/}/" DIR2="${2%/}/" diff \ <(find $DIR1 -type d -printf "%k %p\n" | sed -e "s|$DIR1||" | sort -k2) \ <(find $DIR2 -type d -printf "%k %p\n" | sed -e "s|$DIR2||" | sort -k2)
將程式碼複製到一個新文件(例如 dircomp.sh)並使其可執行
chmod +x dircomp.sh
。然後將其稱為./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/
.輸出現在應該只列出具有不同大小的目錄,並且可能如下所示:
< 4 Documents/Appartement/Bail > 8 Documents/Appartement/Bail
其中以開頭的行
<
列出位於作為第一個參數給出的目錄中的目錄(例如/home/lemenhir/),以開頭的行>
列出位於作為第二個參數給出的目錄中的目錄(例如/media/lemenhir/ExternalDrive/) .如果出現單行,則該目錄不存在於對面目錄中。
希望這可以幫助。