国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

硬鏈接和符號鏈接的區(qū)別

2024-06-28 13:27:08
字體:
供稿:網(wǎng)友
硬鏈接和符號鏈接的區(qū)別序

在linux系統(tǒng)中,內(nèi)核為每一個新創(chuàng)建的文件分配一個Inode(索引結(jié)點),每個文件都有一個惟一的inode號。

文件屬性保存在索引結(jié)點里,在訪問文件時,索引結(jié)點被復(fù)制到內(nèi)存在,從而實現(xiàn)文件的快速訪問。

鏈接是一種在共享文件和訪問它的用戶的若干目錄項之間建立聯(lián)系的一種方法。

Linux中的兩種鏈接

Linux中包括兩種鏈接:硬鏈接(Hard Link)和軟鏈接(Soft Link),軟鏈接又稱為符號鏈接(Symbolic link)。

硬鏈接

硬鏈接是文件的別名。從技術(shù)上講,他們公用一個inode(inode中包含了一個文件的所有必要的信息,說inode就是文件也是沒有問題的)。

由于linux下的文件是通過索引節(jié)點(Inode)來識別文件,硬鏈接也可以認為是一個指向文件索引節(jié)點的指針,系統(tǒng)并不為它重新分配inode,

每添加一個一個硬鏈接,文件的鏈接數(shù)就加1, 刪除一個則鏈接數(shù)減1。

大多數(shù)系統(tǒng)不允許創(chuàng)建一個目錄的硬鏈接。在允許創(chuàng)建目錄硬鏈接的系統(tǒng)上,只有超級用戶才能才能這樣做。

不能創(chuàng)建跨文件系統(tǒng)(分區(qū))的硬鏈接(這些限制在POSIX中都不是強制性的)。

硬鏈接的創(chuàng)建語法 : ln 存在的文件 新的文件

[root@localhost link]# touch SingleFile                ;新建一個空文件[root@localhost link]# ls -ltotal 0-rw-r--r-- 1 root root 0 Mar 30 17:48 SingleFile       ;空文件的鏈接數(shù)為1[root@localhost link]# ln SingleFile HardLinkFile[root@localhost link]# ls -ltotal 0-rw-r--r-- 2 root root 0 Mar 30 17:48 HardLinkFile     ;新文件的鏈接數(shù)為2-rw-r--r-- 2 root root 0 Mar 30 17:48 SingleFile       ;舊文件的鏈接數(shù)為2[root@localhost link]# echo "Hello" > SingleFile         ;向舊文件中寫入6個Bytes的字符串[root@localhost link]# ls -ltotal 8-rw-r--r-- 2 root root 6 Mar 30 17:49 HardLinkFile     ;新文件的大小變?yōu)?個Bytes-rw-r--r-- 2 root root 6 Mar 30 17:49 SingleFile       ;舊文件的大小變?yōu)?個Bytes[root@localhost link]# cat HardLinkFile                ;顯示新文件中的內(nèi)容 Hello                                                  ;結(jié)果與向舊文件中寫入的內(nèi)容相同[root@localhost link]# rm -f HardLinkFile              ;刪除新文件(刪除舊文件也是相同的)[root@localhost link]# ls -ltotal 4-rw-r--r-- 1 root root 6 Mar 30 17:49 SingleFile       ;舊文件的鏈接數(shù)為1

軟鏈接(符號鏈接)

軟鏈接是一種特殊的文件類型,其中包含對另一個 文件/目錄 以 絕對/相對 路徑形式的引用.

軟鏈接可以看做是對一個文件的間接指針,相當(dāng)于windows下的快捷方式。

軟鏈接沒有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向 文件/目錄 的符號鏈接。甚至可以跨越不同機器、不同網(wǎng)絡(luò)對文件進行鏈接。

創(chuàng)建文件的軟鏈接時,軟鏈接會使用一個新的inode,所以軟鏈接的inode號和文件的inode號不同(表明他們是兩個不同的文件),

軟鏈接的inode里存放著指向文件的路徑,刪除源文件,軟鏈接也無法使用了,因為文件的路徑不存在了;刪除軟鏈接對原文件沒有任何影響。

當(dāng)我們再次創(chuàng)建這個文件時(文件名與之前的相同),軟鏈接又會重新指向這個文件(inode號與之前的不同了),而硬鏈接不會受其影響.

當(dāng)然軟鏈接也有硬鏈接沒有的缺點,因為鏈接文件包含有原文件的路徑信息,所以當(dāng)原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統(tǒng)就找不到了,

而硬鏈接就沒有這個缺陷,你想怎么移就怎么移;還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點和保存原文件的路徑。

軟鏈接的創(chuàng)建語法 : ln -s 存在的文件 新的文件

[root@localhost link]# touch SingleFile                                ;新建一個空文件[root@localhost link]# ln -s SingleFile SoftLinkFile                   ;創(chuàng)建一個軟鏈接[root@localhost link]# ls -ltotal 0-rw-r--r-- 1 root root  0 Mar 30 18:28 SingleFile                      ;源文件的鏈接數(shù)不變lrwxrwxrwx 1 root root 10 Mar 30 18:28 SoftLinkFile -> SingleFile      ;最前面的"l"表明此文件是一個軟鏈接,后面的提示說明指向的源文件[root@localhost link]# rm -f SingleFile                                ;刪除源文件(或者移動到別的位置)[root@localhost link]# ls -ltotal 0lrwxrwxrwx 1 root root 10 Mar 30 18:28 SoftLinkFile -> SingleFile      ;"SingleFile" 高亮閃爍,提示文件找不到[root@localhost link]# echo "World" > SoftLinkFile                       ;向軟鏈接中寫入字符串[root@localhost link]# ls -ltotal 4-rw-r--r-- 1 root root  6 Mar 30 18:29 SingleFile                      ;SingleFile 被重新創(chuàng)建lrwxrwxrwx 1 root root 10 Mar 30 18:28 SoftLinkFile -> SingleFile[root@localhost link]# cat SingleFile World[root@localhost link]# 

硬鏈接 和 軟鏈接 的區(qū)別

1、硬鏈接 和 源文件 是同一個文件;軟鏈接 和 源文件 是2個不同的文件。

2、大部分系統(tǒng)不能創(chuàng)建 目錄 的硬鏈接,軟鏈接沒有這個限制。

3、硬鏈接不能跨文件系統(tǒng)(分區(qū)),軟鏈接沒有這個限制。

-------------------------------------------------------------------------------------------------------------------------------------------------------------

參考資料:

http://blog.chinaunix.net/uid-23208702-id-75180.html

http://blog.csdn.net/zengmuansha/article/details/7814496

http://en.wikipedia.org/wiki/Soft_link

http://blog.sina.com.cn/u/2827812045


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泾阳县| 崇文区| 大石桥市| 海阳市| 辽阳县| 宜黄县| 达拉特旗| 小金县| 曲沃县| 葵青区| 遂川县| 平武县| 阿瓦提县| 肥乡县| 东阳市| 西乌珠穆沁旗| 惠来县| 诸城市| 榕江县| 新干县| 青川县| 吉木萨尔县| 静宁县| 建平县| 永靖县| 庆元县| 天等县| 双辽市| 沂水县| 九寨沟县| 日照市| 会理县| 姜堰市| 濮阳县| 崇仁县| 霍城县| 松江区| 赫章县| 藁城市| 沅江市| 丁青县|