首先我們需要了解linux下硬鏈結以及軟連線的基本概念.
下面詳細介紹一下硬鏈結和軟連線之間的區別.
1.硬鏈結和原來的檔案沒有什麼區別,而且共享乙個 inode 號(檔案在檔案系統上的唯一標識);而軟鏈結不共享 inode,也可以說是個特殊的 inode,所以和原來的 inode 有區別。
2.若原檔案刪除了,則該軟連線則不可以訪問,而硬連線則是可以的。
3.由於符號鏈結的特性,導致其可以跨越磁碟分割槽,但硬鏈結不具備這個特性.
硬鏈結(hard link) ln
命令格式為:ln [選] 原始檔 目標檔案
-f:強制,如果目標檔案已經存在,則刪除目標檔案後在建立鏈結檔案。
演示如下
命令為:ln sh1.cpp hard命令:cat hard
#include
using
namespace
std;
class
demo
};int
main()
命令:cat sh1.cpp
#include
using
namespace
std;
class
demo
};int
main()
硬鏈結的特點
1.不論是修改原始檔還是修改硬鏈結檔案,另乙個檔案中的資料都會發生改變。
2.不論是刪除原始檔還是刪除硬鏈結檔案,只要有乙個檔案存在,這個檔案都會被訪問。
3.硬鏈結不會建立新的inode資訊,也不會更改inode的總數。
4.硬鏈結的限制比較多,即不能跨檔案系統。也不能鏈結目錄,而且原始檔和硬鏈結檔案之間除了inode號是一樣的之外,沒有其他的明顯的特徵。
軟鏈結(symbolic link) ln-s
軟鏈結可以直接建立,也可以通過目錄建立。
演示如下:
直接建立軟鏈結命令:ln -s sh2.cpp soft
通過目錄(必須用絕對路徑)建立軟鏈結
命令:ln -s /home/qqtsj/cpp/sh3.cpp /home/qqtsj/cpp/swor
下面軟鏈結建立完成,檢視
命令:ls -l
-rw-rw-r-- 1 qqtsj qqtsj 289 11月 7 18:52 size.cpp
lrwxrwxrwx 1 qqtsj qqtsj 7 1月 5 19:27 soft -> sh2.cpp
lrwxrwxrwx 1 qqtsj qqtsj 23 1月 5 19:30 swor -> /home/qqtsj/cpp/sh3.cpp
-rwxrwxr-x 1 qqtsj qqtsj 29336 11月 12 17:07 tate
-rwxrwxr-x 1 qqtsj qqtsj 13280 11月 10 20:38 tate1
-rw-rw-r-- 1 qqtsj qqtsj 677 11月 10 20:46 tate1.cpp
-rw-rw-r-- 1 qqtsj qqtsj 0 11月 10 20:37 tate2.cpp
軟鏈結的特點
1.不論是改變原始檔,還是改變軟鏈結檔案,另乙個檔案中的資料都會發生改變。
2.刪除軟鏈結檔案,原始檔不受影響,而刪除原始檔,軟鏈結檔案將找不到實際的資料,從而顯示檔案不存在。
3.軟鏈結會新建自己的inode資訊和block,只是在block中不儲存實際檔案資料,而儲存的是原始檔的檔名和inode號。
4.軟鏈結可以鏈結目錄,可以誇分割槽。
硬鏈結和軟鏈結在原理上最大的不同在於:硬鏈結不會建立自己的inode索引和block(資料塊),而是直接指向原始檔的inode資訊和block,所以硬鏈結和原始檔的inode號是一致的:而軟鏈結會建立自己的inode索引和block,所以軟鏈結和原始檔的inode號是不一致的,而且在軟鏈結的block中,寫的不是真正的資料,而僅僅是原始檔的檔名和inode號。
linux系統中的硬鏈結和軟鏈結
linux檔案系統中用inode號來標誌唯一的檔案,檔案名字只是inode號的索引,系統根據檔名來找到inode號,內部處理的時候用的也是inode號。公升級的時候可以不停止程式更新利用的就是這個原理,公升級過程中建立新的inode,然後和相同的檔名繫結,等相關程序釋放檔案之後,發現老的inode已...
Linux系統硬鏈結和軟鏈結
宣告,本篇文章 和參考了其他博主的文章,供自己學習之用 在linux系統下,有兩種鏈結檔案,一種是硬鏈結 hard link 一種是軟鏈結,也稱為符號鏈結 symbolic link ln 引數 原始檔或目錄 目標檔案或目錄 硬鏈結相當於建立了原始檔的副本,如果硬鏈結檔案的內容修改了,那麼原始檔的內...
Linux系統的軟鏈結和硬鏈結
在linux系統中有種檔案是鏈結檔案,可以為解決檔案的共享使用。鏈結的方式可以分為兩種,一種是硬鏈結 hard link 另一種是軟鏈結 soft link 或者也稱為符號鏈結 symbolic link 硬鏈結是指通過索引節點來進行鏈結。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼...