Linux

相同的文件夾內容但不同驅動器上的大小不同,為什麼?

  • April 13, 2020

我有同一個文件夾的三個副本,但它們的大小不同。為什麼?

我有一個文件夾“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/) .

如果出現單行,則該目錄不存在於對面目錄中。

希望這可以幫助。

引用自:https://unix.stackexchange.com/questions/579428