我知道這是硬鏈接的條件,他們不能跨越文件系統。這是否適用於NFS掛載?鑑於以下目錄結構,我能否在目錄A中創建指向目錄B中文件的硬鏈接?NFS +硬鏈接?
/root
/A
/B <-NFS mount
例如,我想運行ln /root/B/file.txt /root/A/linkedfile.txt
我知道這是硬鏈接的條件,他們不能跨越文件系統。這是否適用於NFS掛載?鑑於以下目錄結構,我能否在目錄A中創建指向目錄B中文件的硬鏈接?NFS +硬鏈接?
/root
/A
/B <-NFS mount
例如,我想運行ln /root/B/file.txt /root/A/linkedfile.txt
那麼,既然/B
是一個獨立的文件系統(掛載NFS文件系統),你不能讓它和/A
之間的硬鏈接,因爲它們不在同一個文件系統上。
這是因爲硬鏈接不作只放一個的指針該數據的副本數據的副本,所以他們必須要在同一個「地址空間」。
首先明確一個硬鏈接是一個好主意。
通常在類Unix系統中,目錄中的文件名指向inode編號 - 實質上是文件的編號。 「硬鏈接」只是使用相同的inode編號創建另一個文件名。現在,您必須指向指向相同編號文件的不同名稱。
但請注意,這兩個名稱之間並沒有真正的直接聯繫。關係是Name1和Name2的索引節點編號都設置爲12756--但是沒有什麼可以容忍的,並且說「我手上的這個東西是兩個文件之間的鏈接」。它們只是兩個共享一個ID號碼的數據庫條目。對於共享ID號的文件名,您可以執行查詢(因爲您正在瀏覽系統上的每個文件條目都很慢),但就是這樣。
因此,它並不意味着任何創建「兩個文件系統之間的硬鏈接」 - 因爲兩個文件系統有不同的編號方案(系統1上的inode 1234和系統2上的1234,指向完全不同的文件),以及你唯一需要存儲的是一個名字+ inodeNumber,沒有什麼可做的。
從某種意義上說,硬鏈接和軟鏈接都是*指針*。不同之處在於軟鏈接將文件系統路徑的文本表示存儲到目標,而硬鏈接(因爲它只是一個目錄條目)只存儲目標的inode nubmer,因此必須與目標文件系統位於同一文件系統鏈接本身所在的目錄。 – 2009-08-28 17:10:12
我的吊墜感覺不得不指出硬鏈接的替代方式是*符號*鏈接。 – 2011-07-07 19:49:49
我想在目錄中添加文件名也只是指針。沒有「原始文件」的概念和「該文件的硬鏈接」 - 它們是一個對象的兩個名稱,並且這兩個名稱都不是特殊的。和@JesseHallett,我不同意他們是替代品的想法。我認爲最好只是說他們是不同的東西。 – 2011-10-04 21:35:10