Linux

帶du的文件夾大小

  • May 11, 2019

我已經複製了一個文件夾,rsync包括符號連結、硬連結、權限、刪除目標上的文件等等。它們應該是完全相同的。

一個文件夾位於 USB 驅動器上,另一個位於本地磁碟上。

如果我執行:du -bls在兩個文件夾上,大小會略有不同。

我的du支持--apparent-size,它被應用-s並且-l應該計算硬連結的內容。

如何解釋這種差異以及如何獲得實際總數?

兩個文件系統都是 ext4,唯一的區別是 U 盤是加密的。

編輯:

我深入尋找實際上不同的文件夾,我找到了一個並且內容並不特殊(沒有塊設備,沒有管道,沒有硬連結或符號連結,沒有零字節文件),其特點可能是其中有幾個小文件. 區別在於此特定文件夾的 872830 與 881022。

我也在du -blsc這兩個文件夾中執行,在這種情況下結果是相同的。

關於我使用的命令的一些額外細節:

$ du -Pbsl $LOCALDIR $USBDIR | cut -f1
872830
881022

$ du -Pbslc $LOCALDIR/*
[...]
868734  total

$ du -Pbslc $USBDIR/*
[...]
868734  total

$ ls -la $USBDIR | wc
   158    1415    9123
$ ls -la $LOCALDIR | wc
   158    1415    9123

$ diff -sqr --no-dereference $LOCALDIR $USBDIR | grep -v identical
[No output and all identical if I remove the grep]

由於您已使用複製文件rsync,然後使用 比較了兩組文件diff,並且由於diff報告沒有差異,因此兩組文件是相同的。

然後,大小差異可能可以通過兩個目錄結構中實際目錄節點的大小來解釋。在某些文件系統上,如果文件或子目錄被刪除,目錄不會被截斷,留下的目錄節點比實際需要的稍大。

如果您在某些時候保留了許多後來被刪除的文件,這可能會留下大的目錄節點。

例子:

$ mkdir dir
$ ls -ld dir
drwxr-xr-x  2 kk  wheel  512 May 11 17:09 dir
$ touch dir/file-{1..1000}
$ ls -ld dir
drwxr-xr-x  2 kk  wheel  20480 May 11 17:09 dir
$ rm dir/*
$ ls -ld dir
drwxr-xr-x  2 kk  wheel  20480 May 11 17:09 dir
$ du -h .
20.0K   ./dir
42.0K   .
$ ls -R
dir

./dir:

請注意,即使我刪除了我創建的 1000 個文件,該dir目錄仍然使用 20 KB。

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