Linux
帶du的文件夾大小
我已經複製了一個文件夾,
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。