硬鏈接與軟連接
本文僅用于個人學習參考:
簡單介紹了硬鏈接與軟連接的區別。
硬鏈接
關于硬鏈接,也就是是說硬盤當中有個文件,在這個文件最初創建的時候有個文件名,由于各種原因,比如說原路徑比較難打,我們又創建了一個硬連,放在比較容易找到的位置。
這一點本人的理解為:來到馬哥基地這里有兩個大門,左邊一個能進來,右邊那個也是沒問題的,只是左右名字不同罷了。
硬鏈接命令語法:
ln filename [linkname]
filename: [創建出的鏈接名 ]:
linkname:需要被鏈接的文件
硬鏈接特點:
如上邊所說,馬哥都是同一位馬哥,只是稱呼不同。
]# touch 11.22 /*首先創建一個文件*/ ]# ln 11.22 22.11 /*然后為該文件創建一個硬鏈接*/ ]# ls -l /*對比原文件與鏈接文件*/ total 0 -rw-r--r-- 2 root root 0 Oct 20 10:28 11.22 -rw-r--r-- 2 root root 0 Oct 20 10:28 22.11 drwxr-xr-x 5 root root 31 Oct 20 10:17 kai
-
在這個圖片中可以清楚的看到,原來的文件與我們使用 ln(硬鏈接)命令創建出來的數據塊(硬鏈接并不生成文件,下邊內容為了容易稱呼,我說成硬鏈接文件)除了文件名,其余都是一模一樣的。
-
硬鏈接只能在同一分區內創建。硬鏈接不能針對與目錄使用。
與cp的文件相似,不過硬鏈接文件可以同步更新,就算源文件丟失,硬鏈接也能訪問。
-
當然,如果源文件與鏈接文件同時被刪除,那么該文件就徹底沒了。
軟連接
軟連接相當于windows的快捷方式,當源文件丟失,那么快捷方式也會失去作用。
軟連接命令語法:
ln -s filename [linkname]
filename: [創建出的鏈接名 ]:
linkname:需要被鏈接的文件
軟連接特點:
軟鏈接的須相對路徑設定必指定的是針對與目標文件的相對路徑,相對路徑可以防止源文件地址的改變。
# ln -s ../home/hua/ hua.1 # ls -l lrwxrwxrwx 1 root root 12 Oct 20 11:29 hua.1 -> ../home/hua/
軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有著自己的 inode 號以及用戶數據塊。
因此軟鏈接的創建與使用沒有類似硬鏈接的諸多限制:
-
軟鏈接有自己的文件屬性及權限等;
-
可對不存在的文件或目錄創建軟鏈接;
-
軟鏈接可交叉文件系統;
-
軟鏈接可對文件或目錄創建;
-
創建軟鏈接時,鏈接計數 i_nlink 不會增加;
-
刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)
如上所說如果軟連接的原文件被刪除,那么相關鏈接就會死鏈。
當然軟鏈接的用戶數據也可以是另一個軟鏈接的路徑,其解析過程是遞歸的。但需注意:軟鏈接創建時原文件的路徑指向使用相對路徑較好。硬鏈接創建的時候可以指定絕對路徑、相對路徑,或者直接就不指定了,因為硬鏈接創建完成之后,就相當于與原文件斷絕了關系,原文件位置的改變并不會影響到硬鏈接。
原創文章,作者:ly,如若轉載,請注明出處:http://www.www58058.com/53090