首頁>Apple>source

我已经建立了指向檔案夹中檔案的多个硬鏈接以說明問题。

~/Test $ ln original.pdf link1.pdf
~/Test $ ln original.pdf link2.pdf
~/Test $ ls -li
403963 [email protected] 3 80k username 2017-11-29 20:17 original.pdf
403963 [email protected] 3 80k username 2017-11-29 20:17 link1.pdf
403963 [email protected] 3 80k username 2017-11-29 20:17 link2.pdf

您可以在上方看到它们都具有相同的inode:403963。

du 實用程式將檔案夹的总大小報告為這些鏈接所指向的實際資料的大小。

~/Test $ du -sh .
 80K  .

但是,当在"获取資訊"視窗中報告檔案夹大小時,Finder会累加每个鏈接的大小(加上其他內容).如果您想知道為什麼它說" 4个專案",那是因為它也計算了檔案夹本身.绝對只有"測試"檔案夹中的那三个檔案。

是否可以將Finder配置為仅計算一次到同一inode的多个硬鏈接?

最新回復
  • 5月前
    1 #

    簡短的答案是没有選項可以將Finder配置為仅計算一次到同一inode的多个硬鏈接. Finder報告檔案夹中包含的所有檔案和檔案夹的当前大小的总和.不包括版本控製所需的額外儲存,尽管未報告使用寫入時複製或指向同一檔案的多个硬鏈接,但仍儲存在儲存中。

    有關APFS如何分配儲存的更详细的解釋

    OP圖像中顯示的大小值是檔案夹中檔案大小的总和. OP希望這是檔案夹中檔案占用的空間.這就是OP认為的 du -sh . 命令可以,但這是不正確的.在APFS下有寫時複製.維兹威兹 命令没有考虑到這一點,因此可能報告錯誤的值。

    下面是一个例子。

    下面的命令建立一个名為 du -sh .的60 MB檔案 在檔案夹名稱 original中 在名為 test的100 MB APFS卷上

    question
    

    下面是来自 hdiutil create -size 100M -type UDIF -fs APFS -volname question ~/Desktop/question.dmg hdiutil attach ~/Desktop/question.dmg mkdir /Volumes/question/test cd /Volumes/question/test dd if=/dev/zero of=original bs=60000000 count=1的圖片 威兹維兹 檔案夹和 Get Info 卷.維兹威兹 檔案夹使用60 MB,而 test 音量会比其他较小的檔案和檔案夹大一些。

    命令 question的輸出 和 test 下面给出.在這裏, question 命令輸出57 MiB,与 ls -li的60 MB大小一致 檔案. (57 MiB = 60 MB)

    du -sh .
    

    接下来,輸入下面的命令,该命令使用寫時複製功能複製原始檔案。

    du -sh .
    

    下圖顯示測試檔案夹的大小增加了一倍.這是檔案 original大小的总和 和 $ ls -li total 117192 19 -rw-r--r-- 1 davidanderson staff 60000000 Jan 1 19:32 original $ du -sh . 57M . .體积 cp -c original copy 大小没有變化。

    命令 original的輸出 和 copy 下面给出.在這裏, question 命令輸出命令 ls -li輸出的大小总和 . (114 MiB = 120 MB)

    du -sh .
    

    接下来,輸入下面的命令,该命令建立了一个名為 du -sh .的新硬鏈接。 到 ls -li 檔案。

    $ ls -li
    total 234384
    21 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 copy
    19 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 original
    $ du -sh .
    114M    .
    

    下面是来自 link的圖片 威兹維兹 檔案夹和 original 卷.同樣,在 ln original link中使用的空間 音量没有改變. Get Info的大小 檔案夹已从原来的60 MB擴大了两倍。

    命令 test的輸出 和 question 如下。

    question test ls -li 命令既不是檔案占用的空間,也不是檔案大小之和。

    du -sh .
    

    因此,没有理由選擇將Finder配置為仅計數一次到同一inode的多个硬鏈接.換句话說,没有理由建立一个選項来複製可能不代表有意義值的值. OP希望

    在檔案夹上顯示檔案夹中檔案使用的空間.確定這將是一个困难的(因此很耗時)值.例如,輸入以下命令来覆盖 The value output from the 的前30 MB 檔案。

    du -sh .
    

    下圖顯示測試檔案夹的大小不變.但是,音量 $ ls -li total 351576 21 -rw-r--r-- 1 davidanderson staff 60000000 Jan 1 19:32 copy 19 -rw-r--r-- 2 davidanderson staff 60000000 Jan 1 19:32 link 19 -rw-r--r-- 2 davidanderson staff 60000000 Jan 1 19:32 original $ du -sh . 114M . 使用的空間增加了大約30 MB。

    命令 Get Info的輸出 和 original 下面给出.維兹威兹 和 dd if=/dev/zero bs=30000000 count=1 of=original conv=notrunc 檔案仍然具有相同的inode編號,但是現在只寫時複製這些檔案的最後30 MB与 question的最後30 MB共享 檔案.因此,虽然檔案大小没有改變,但是需要分配30 MB的磁盤空間来容纳 ls -li寫出的30 MB零。 命令.再次 命令不会顯示任何更改。

    du -sh .
    

    確定檔案夹使用的空間量比仅查看檔案大小並在發現重複的inode編號時忽略大小要複雜得多.維兹威兹 一个卷可以通過簡單地从总空間中减去可用空間来获得已用空間来做到這一點.維兹威兹 對於檔案夹,必须確保一个或一个或多个塊序列的計數不超過一次. IMO,macOS不会這樣做,因為這樣做会很费時間.公平地說,我對此可能是錯誤的.例如,wGroleau基本上表達了相反的观點。

    original

  • mail.app:限製下載電子郵件數量的電子郵件客戶端軟體?
  • macos:使用命令列實用程式模擬使用者登錄