區別:1、硬連結時文件重命名或文件移動不會改變連結指向,符號連結時文件重命名或文件移動則使連結斷開;2、硬連結只能連結文件,符號連結可以連結檔案和資料夾;3、符號連結可以跨不同的檔案系統創建,硬連結則不可以跨不同的檔案系統創建。
本教學操作環境:linux7.3系統、Dell G3電腦。
linux存在2眾不同類型的鏈接,軟鏈接和硬鏈接,修改其中一個,硬鏈接指向的是節點(inode ),軟連結指向的是路徑(path)
軟體連接檔也叫符號連接,這個檔案包含了另一個檔案的路徑名,類似win下的捷徑
檔案重新命名或檔案移動
#檔案重新命名和檔案移動對於Linux系統來說都是文件絕對路徑的更改。對於硬連結來說,檔案重新命名或檔案移動不會改變連結指向,而對於軟連結來說,檔案重命名或檔案移動則使連結斷開,這時會透過軟連結修改檔案內容時會重新建立一個新的inode,跟原檔案名稱和檔案資料塊關聯。
檔案刪除
rm指令或nodejs的unlink其實是將inode的連結數減1。對於前文的硬鏈接,刪除test_hard.txt使得inode1的鏈接數變成1,當鏈接數變成0時,系統就會釋放掉這個inode,之後再創建的新文件就可以使用該inode的inode number了。這時沒有inode指向檔案資料block,所以檔案找不到了。但實際上檔案資料還存在硬碟中,所以常常能看到網路上有一些幫助恢復誤刪的檔案的工具。軟連結inode連結數為1,刪除軟連結則係統釋放該inode。
連結檔案和資料夾
軟體連結可以連結檔案和資料夾,但硬連結只能連結檔案。
不同檔案系統創建連結
軟體連結可以跨不同的檔案系統創建,但是硬連結不行,因為硬連結是共用一個inode,而不同的文件系統有不同的inode table。
硬連結
#檔案備份:為了防止重要的檔案被誤刪,檔案備份是一種好的方法,但拷貝檔案會帶來磁碟空間的消耗。硬連結能不佔用磁碟空間實現檔案備份。
文件共享:多人共同維護同一份文件時,可以透過硬鏈接的方式,在私人目錄裡創建硬鏈接,每個人的修改都能同步到源文件,但又避免某個人誤刪就丟掉了文件的問題。
文件分類:不同的文件資源需要分類,例如某個電影即是的分類是外國、懸疑,那我們可以在外國的資料夾和懸疑的資料夾裡分別創建硬鏈接,這樣可以避免重複拷貝電影浪費磁碟空間。有人可能說,使用軟連結不也可以嗎?是的,但不太好。因為一旦原始檔案移動位置或重新命名,軟連結就失效了。
軟連結
捷徑:對於路徑很深的文件,尋找起來不太方便。利用軟連結在桌面建立快捷方式,可以迅速開啟並編輯文件。
靈活切換程序版本:對於機器上同時存在多個版本的程序,可以透過更改軟連結的指向,從而迅速切換程序版本。這裡提到了python版本的切換可以這麼做。
動態函式庫版本管理:不是很懂,具體可以看這裡。
總結
Linux系統透過inode管理文件,inode儲存文件位元組數、文件權限、連結數、資料block位置等資訊。
硬連結與原始檔案共用inode,除了檔案名稱不同,其他與原始檔案一樣。不能對資料夾建立硬鏈接,不能對不同的檔案系統的檔案建立硬鏈接。
軟連結類似windows的快捷方式,有獨立的inode。可以對資料夾或不同檔案系統的檔案建立軟連結。
硬連結和軟連結修改文件內容都會同步到來源文件,因為本質上它們都是指向來源文件的資料block。
相關推薦:《Linux影片教學》
以上是linux中符號連結與硬連結的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!