2011-06-13 26 views
1

如何判斷一個目錄在OSX中有多少硬鏈接?你怎麼知道一個目錄在OSX上有多少硬鏈接?

在OSX中,您可以製作硬鏈接到目錄。這就是Time Machine的工作原理。我想知道哪些目錄有硬鏈接,因此我可以看到哪些目錄是Time Machine的新增目錄。

我試過ls -lstat -f "%l %N" *,但都沒有給出正確的答案。

任何人都知道如何做到這一點?

回答

3

ls -l是在目錄中顯示硬鏈接文件的正確方法。

Wikipedia’s article on hard links

大多數現代操作系統不允許目錄的硬鏈接,以防止無限遞歸。另外,目錄上的硬鏈接會導致父目錄條目不一致。一個明顯的例外是Mac OS X v10.5(Leopard),它僅在Time Machine備份機制的目錄上使用硬鏈接。符號鏈接和NTFS連接點通常用於此目的。

+3

當您從其他來源複製內容時,請明確說明您不是該文本的作者,在信用到期時給予抵免,並提供指向原始信息來源的鏈接。堆棧溢出[不支持抄襲。](http://meta.stackexchange.com/questions/54558/would-it-be-wrong-to-copy-paste-questions-from-quora/54559#54559) – 2011-06-13 06:40:38

+0

感謝Bavarious通知我,我會照顧到這一點。 – 2011-06-13 06:42:13

+0

'ls -l'對目錄中的硬鏈接**文件**正常工作,但它似乎是硬連接**目錄**的虛假結果。例如,如果我創建一個文件夾「ls -l」,表明它有2個鏈接。那是對的嗎?我在這裏錯過了什麼嗎? – jasongregori 2011-06-15 04:30:59

1

我不認爲即使Time Machine可以通過定義在文件系統間進行硬連接。我相信製作一個硬鏈接只是創建一個與原始文件號相同的文件(或目錄),並且inode在給定的文件系統中只是唯一的。

我不認爲有任何方法可以統計文件或目錄中有多少個符號鏈接,因爲可以通過符號鏈接指向未掛接捲上的文件。

更新:當您創建一個目錄時,會自動創建兩個硬鏈接。一個來自目錄本身(「。」)和一個來自它的父目錄(「..」)在一個目錄上做一個ls -ld會給你一些指向它的硬鏈接。

+0

我不是在討論跨文件系統的硬鏈接。它在一個文件系統內。 – jasongregori 2011-06-15 04:32:22

+0

您提到了Time Machine,它要求備份位於單獨的文件系統上,因此不能使用硬鏈接。所以我想也許你的意思是符號鏈接。 – Eric 2011-06-15 15:40:05

+0

對不起,延遲迴復。我不確定你是什麼意思。 Time Machine確實使用硬鏈接,但它們都指向同一文件系統中的其他文件夾。因此,您的Time Machine驅動器上的文件夾指向該驅動器上的其他文件夾。 – jasongregori 2011-07-12 22:35:05

相關問題