軟連接和硬鏈接一直記不住具體的區別,現在總結一下:
同樣是ln命令。加上-s就是軟鏈接。不加就是硬鏈接,格式為:ln [-s] 被鏈接文件 鏈接文件
硬鏈接占用的空間和被鏈接文件一樣大(其實就是同一片空間)
修改鏈接文件和被鏈接文件中的其中一個,另外一個隨之同樣發生變化
硬鏈接的對象不能是目錄,也就是說被鏈接文件不能為目錄
硬鏈接的兩個文件是獨立的兩個引用計數文件,他們共用同一份數據,所以他們的inode節點相同
刪除硬鏈接中的任意一個文件,另外一個文件不會被刪除。沒有任何影響,鏈接文件一樣可以訪問,內容和被鏈接文件一模一樣。
硬鏈接的原理:在存儲器中只存儲了一份數據,而被鏈接文件和鏈接文件其實都是對這一份數據的引用,所以這份數據就會有最小為2的引用計數,所以才會刪除兩個文件中的任意一個,刪除的都是引用計數,不會影響這一份數據,而另外的一個引用照樣可以訪問這份數據。如果另外一個引用也被刪除了,那麼引用計數就為0,在Linux中,一旦引用計數為0,則認為該數據被刪除了,這時數據就會被徹底清空,從這一點看和cp命令還是有點區別的。
軟鏈接的鏈接文件中存儲的是被鏈接文件的元信息,路徑或者inode節點
軟連接的連接文件是一個獨立的文件,有自己的元信息和inode節點
刪除軟鏈接的鏈接文件,被鏈接文件不會受到任何影響
刪除軟鏈接的被鏈接文件,鏈接文件會變成紅色,這時打開鏈接文件會報錯,報找不到被鏈接的文件這種錯誤
軟鏈接可以鏈接任何類型的文件,包括目錄和設備文件都可以作為被鏈接的對象
軟鏈接的原理,和硬鏈接的原理類似,可以比對理解。