這兩牽扯到鏈接,那么先介紹以下鏈接。
在文件系統中,有一種可以把不同的文件相連接到一起的機制,這個機制叫做鏈接。通俗的話來說就是打開兩個不同的文件夾,其實進去的是同一個。它可以把一個文件用不同的名字和路徑來表示出來。系統通過inode(索引節點,文件唯一標識)來識別是否為同一個文件,無論系統上有有多少個鏈接,在磁盤上只有一個唯一的inode,只要這個文件的的鏈接數不為0,那么這個文件件的inode會一直存在,文件會一直保存。
例如用ls-l可以查看文件的詳情:
在這文件中,綠色的3txt與2.txt構成了一個鏈接。在Linux中->就代表著鏈接。
硬鏈接:
硬鏈接就相當于一個指針,指向文件的索引節點,系統并不會為他重新分配新的inode,但是沒添加一個硬鏈接,文件鏈接數會加一。
硬鏈接允許一個文件同時又多個路徑名,用戶只刪除一個硬鏈接并不影響這個文件的inode與其他相連接,只有最后一個鏈接被刪除后,這個文件的inode就釋放,數據塊就保持在空閑狀態允許被寫入。用這種硬鏈接可以有效的防止誤刪除。但是硬鏈接不能跨分區創建,不再同一個分區是無法直接與數據塊的inode相連接。也不允許給目錄創建硬鏈接。在創建硬鏈接時可以相對于當前路徑去創建,每創建一個硬鏈接就會會增加額外的記錄項以引用文件。硬鏈接也不會占用節點號,但會增加鏈接數。同一個文件無論創建多少個硬鏈接,他們的屬性都是完全相同的,這相當于是一個物理文件的不同名字。就像我們人一樣,一個人可以有多個名字,無論你叫什么名字,你還是你,你自己的屬性是不會改變的,總不會換一個名字就瘦了幾斤或者長高了吧。
語法:
ln filename [linkname]
軟鏈接:
又被稱作為符號鏈接。軟鏈接我們可以理解為windowx的快捷方式,相信大家都用過吧。創建一個軟鏈接其實就是創建一個特殊的文件,這個文件內容就是這個鏈接的信息。軟鏈接文件的大小就是這個路徑的大小。軟鏈接就是一個位置的處理,跟硬鏈接有本質的區別。舉個例子:當你對A創建一個軟鏈接,然后把A文件刪除了,那時這個鏈接并不會一起唄刪除,只是失效了。當你再重新在原來的地方創建一個以A命名的文件,再使用原來這個軟鏈接。你會發現,又連接進了新建的這個A文件里了。說明軟鏈接并不指定文件,而是指定的位置,等于給這個位置創建了另一條路徑。就相當于家房子的地址如果你搬家不住這了那么這個地址會不被你使用了,并不是這個地址就不存在了。當小明買了你家的房子住進去后,這個地址就會變為他們家的地址。所以軟鏈接就是一個鏈接符,指向了一個地址而已。創建軟鏈接后文件的鏈接數不會增長,不會增加目標inode的引用計數,因為只是指向一個地址,所以軟鏈接不但可以連接目錄而且還能跨分區進行連接。
語法:
ln -s filename [linkname]
原創文章,作者:phosphor,如若轉載,請注明出處:http://www.www58058.com/76850