Links

硬連結兩組硬連結文件

  • February 19, 2019

假設我有 n 個文件,a_1 到 a_n,都相互硬連結。此外,我有 m 個文件,b_1 到 b_m,彼此硬連結(但不是 a_* 文件)。

將 b_* 硬連結指向 a_* 文件的最聰明的方法是什麼?遍歷 b_1 並將每個指向 a_1?或者有沒有辦法一起改變整個群體?

知道 b 文件之一的情況下,我如何找到所有 b_* 文件?即我如何找到硬連結到給定文件的所有其他文件?最好在 Python 中,而不掃描完整的文件系統?

不,這些不能一起改變。原因在於所涉及的結構。為了便於討論,文件分為三個部分:

  • 文件名
  • 一個inode
  • 檔案資料

指針執行的地方file names --> inode --> file data。沒有從 inode 到文件名的反向指針。

找到指向 inode 的文件名的唯一方法是搜尋整個文件系統並檢查每個文件名(不推薦)。

所以是的,您需要一個一個地更改每個硬連結。


一個重要的注意事項。雖然您找不到硬連結,但您可以知道它們有多少。檢查 a_* 或 b_* 是否有更多硬連結可能是值得的。這樣,您可以選擇要銷毀的連結較少的文件,並添加更多硬連結已經擁有最多的文件。

請記住,在 ext3 上,每個文件最多有 65,000 個硬連結。我只提到這一點是因為我昨天遇到了這個確切的問題。

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