Linux 硬鏈接 軟連接

情景說明:

有時候在Linux下我們有一個大的工程跟絕對路徑相關,現在又想通過eclipse查看源碼和修改源碼,那麼問題來了:

1.如果我們把源碼拷貝一份到eclipse工程裏面,那麼此時修改了某個文件之後還得手動複製到可以運行的原始工程目錄下,這樣操作很麻煩。

2.如果直接重新把源碼部署在eclipse下面,勢必要修改很多路徑才能讓這個工程在新的路徑下正常運行

解決辦法:創建軟連接   ln  -s /xxxxxx/test  workspace/myproject


疑問:

什麼是軟鏈接?和硬鏈接有什麼區別?


下面一段來自百度百科:

硬鏈接與軟鏈接的區別


在Linux的文件系統中,保存在磁盤分區中的文件不管是什麼類型都給它分配一個編號,稱爲索引節點號inode 。軟連接,其實就是新建立一個文件,這個文件就是專門用來指向別的文件的(那就和windows 下的快捷方式的那個文件有很接近的意味)。軟鏈接產生的是一個新的文件,但這個文件的作用就是專門指向某個文件的,刪了這個軟連接文件,那就等於不需要這個連接,和原來的存在的實體原文件沒有任何關係,但刪除原來的文件,則相應的軟連接不可用(cat那個軟鏈接文件,則提示“沒有該文件或目錄“)
硬連接是不會建立inode的,他只是在文件原來的inode link count域再增加1而已,也因此硬鏈接是不可以跨越文件系統的。相反都是軟連接會重新建立一個inode,當然inode的結構跟其他的不一樣,他只是一個指明源文件的字符串信息。一旦刪除源文件,那麼軟連接將變得毫無意義。而硬鏈接刪除的時候,系統調用會檢查inode link count的數值,如果他大於等於1,那麼inode不會被回收。因此文件的內容不會被刪除。
硬鏈接實際上是爲文件建一個別名,鏈接文件和原文件實際上是同一個文件。可以通過ls -i來查看一下,這兩個文件的inode號是同一個,說明它們是同一個文件;而軟鏈接建立的是一個指向,即鏈接文件內的內容是指向原文件的指針,它們是兩個文件。
軟鏈接可以跨文件系統,硬鏈接不可以;軟鏈接可以對一個不存在的文件名(filename)進行鏈接(當然此時如果你vi這個軟鏈接文件,linux會自動新建一個文件名爲filename的文件),硬鏈接不可以(其文件必須存在,inode必須存在);軟鏈接可以對目錄進行連接,硬鏈接不可以。兩種鏈接都可以通過命令 ln 來創建。ln 默認創建的是硬鏈接。使用 -s 開關可以創建軟鏈接。



說簡單點

1.修改軟連接或者硬鏈接都會導致源文件改變,可以達到同步的目的

2.刪除軟鏈接或者硬鏈接文件都不會刪掉原始文件

3.刪除源文件會導致軟連接失效 ,而硬鏈接文件還是完整的

4.很重要的一點,可以建立目錄的軟連接但是不能建立硬鏈接,只能對文件建立硬鏈接,這也是上面對工程建立鏈接爲什麼選擇軟連接的原因


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章