Linux 硬鏈接和軟鏈接(符號(hào)鏈接)

什么是目錄

Linux 文件系統(tǒng)是樹狀結(jié)構(gòu)的棚品。根目錄下存在一系列子目錄艺栈。目錄里邊有文件或者子目錄。 但問題在于:

  1. 目錄是什么放妈?
  2. 文件又是什么北救?

文件是:數(shù)據(jù) + 屬性(比如名字、創(chuàng)建時(shí)間芜抒、所有者之類)
目錄是:一個(gè)列表珍策,列表中的每一項(xiàng)是:inode –> filename

Linux 文件系統(tǒng)把硬盤分為三個(gè)部分:超級(jí)塊、inode 列表挽绩、數(shù)據(jù)區(qū)

inode 指示:該文件的數(shù)據(jù)存放在數(shù)據(jù)區(qū)的哪些塊內(nèi)膛壹。因?yàn)檫@個(gè)“映射”關(guān)系不能變更,因此唉堪,inode 相當(dāng)于代表著文件本身模聋。(值得注意的是,文件名與文件本身不是直接映射起來的唠亚,中間隔著 inode)

硬鏈接(Hard Link)

硬鏈接指通過索引節(jié)點(diǎn)來進(jìn)行連接链方,在 Linux 為文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個(gè)編號(hào)灶搜,稱為索引節(jié)點(diǎn)號(hào)祟蚀;
硬鏈接指的就是在 Linux 中,多個(gè)文件名指向同一索引節(jié)點(diǎn)割卖;
常見用途:通過建立硬鏈接到重要文件前酿,防止誤刪,刪除其實(shí)對(duì)應(yīng)的是刪除其中的一個(gè)硬鏈接鹏溯,當(dāng)文件對(duì)應(yīng)的硬鏈接都被刪除了罢维,該文件才真正被刪除;
注意: 默認(rèn)情況下丙挽,ln 命令產(chǎn)生硬鏈接肺孵;

[root@centos7 home]# vi 1.txt
hello, this is 1.txt!
[root@centos7 home]# cp -l 1.txt 2.txt # 為1.txt建立硬鏈接2.txt,等同于ln 1.txt 2.txt
[root@centos7 home]# more 2.txt # 查看2.txt文件中的內(nèi)容和1.txt文件內(nèi)容一樣
hello, this is 1.txt!
# 這兩個(gè)文件的索引節(jié)點(diǎn)號(hào)颜阐,可以看見索引號(hào)(inode)一樣:
[root@centos7 home]# ls -li
總用量 69868
33845219 -rw-r--r--.  2 root root       44 1月  21 10:12 1.txt
33845219 -rw-r--r--.  2 root root       44 1月  21 10:12 2.txt
[root@centos7 home]# vi 2.txt # 編輯2.txt平窘,在末未添加:
hello, this is 2.txt!
[root@centos7 home]# more 1.txt  # 查看1.txt中是否內(nèi)容改動(dòng)
hello, this is 1.txt!
hello, this is 2.txt!
[root@centos7 home]# rm -f 1.txt # 刪除1.txt
[root@centos7 home]# more 2.txt # 查看2.txt的內(nèi)容
hello, this is 1.txt!
hello, this is 2.txt!

創(chuàng)建硬鏈接命令:cp -l 1.txt 2.txt等同于ln 1.txt 2.txt # 為 1.txt 建立硬鏈接 2.txt

軟鏈接

也成為符號(hào)鏈接(Symbolic Link),類似于 Windows 的快捷方式凳怨,其中包含的是另一個(gè)文件的位置信息瑰艘;

[root@centos7 home]# cp -s 2.txt sLink # 為2.txt文件建立符號(hào)鏈接sLink,等同于ln –s 2.txt sLink
[root@centos7 home]# ls –li # 可以看到兩個(gè)文件有不同的索引節(jié)點(diǎn)號(hào)
總用量 69864
33845219 -rw-r--r--.  1 root root       44 1月  21 10:12 2.txt
36830246 lrwxrwxrwx.  1 root root        5 1月  21 10:21 sLink -> 2.txt
[root@centos7 home]# more sLink
hello, this is 1.txt!
hello, this is 2.txt!

[root@centos7 home]# rm -f sLink # 刪除符號(hào)鏈接,不影響源文件
[root@centos7 home]# more 2.txt
hello, this is 1.txt!
hello, this is 2.txt!

[root@centos7 home]# rm -f 2.txt # 刪除2.txt
[root@centos7 home]# ls -li
總用量 69860
36830246 lrwxrwxrwx.  1 root root        5 1月  21 10:21 sLink -> 2.txt
[root@centos7 home]# more sLink
sLink: 沒有那個(gè)文件或目錄

創(chuàng)建符號(hào)鏈接命令:cp -s 2.txt sLink 等同于ln –s 2.txt sLink # 為 2.txt 文件建立符號(hào)鏈接 sLink

符號(hào)連接相當(dāng)于快捷方式磅叛。這意味著什么呢屑咳?

  1. 符號(hào)連接是一個(gè)文件,一個(gè)與被它連接的文件不一樣的文件弊琴。它有自己的 inode兆龙。
  2. 符號(hào)連接的內(nèi)容應(yīng)該是一個(gè)路徑,該路徑指示著它連接的文件敲董。這意味著如果該路徑的文件被刪除了紫皇、改名字了,它即將訪問不到腋寨。如果該路徑下的文件被掉包了聪铺,它將訪問錯(cuò)誤的文件。

區(qū)別

掛載點(diǎn)

只能在同種存儲(chǔ)媒體上的文件之間創(chuàng)建硬鏈接(Hard Link)萄窜,不能在不同掛載點(diǎn)下的文件間創(chuàng)建硬鏈接铃剔,對(duì)于后一種情況,可以使用軟鏈接查刻;(區(qū)分不同掛載點(diǎn)與同一掛載點(diǎn)不同目錄)
如跨不同的掛載點(diǎn)建立硬鏈接的報(bào)錯(cuò)信息:

[root@centos7 home]# ln 2.txt /dev/hLink
ln: 無法創(chuàng)建硬鏈接"/dev/hLink" => "2.txt": 無效的跨設(shè)備連接

目錄

軟連接就相當(dāng)于 win 中的快捷方式即如果軟鏈接一個(gè)目錄只是一個(gè)目錄的快捷方式到指定位置键兜,操作系統(tǒng)找這個(gè)快捷方式會(huì)直接找到真實(shí)目錄下的文件。但是硬鏈接的話穗泵,相當(dāng)于鏡像的方式普气,創(chuàng)建一個(gè)目錄的硬鏈接之后,操作系統(tǒng)需要把這個(gè)目錄下所有的文件都要做一次硬鏈接(復(fù)制一份過去)佃延,這樣操作系統(tǒng)在訪問這個(gè)鏈接的時(shí)候要不斷去遍歷现诀,大大增加復(fù)雜度,而且很容易進(jìn)入死循環(huán)履肃。

硬鏈接不能對(duì)目錄創(chuàng)建受限于文件系統(tǒng)的設(shè)計(jì)仔沿。Linux 文件系統(tǒng)中的目錄均隱藏了兩個(gè)特殊的目錄,當(dāng)前目錄和父目錄尺棋。其實(shí)是兩個(gè)硬鏈接封锉,若系統(tǒng)運(yùn)行對(duì)目錄創(chuàng)建硬鏈接,則會(huì)產(chǎn)生目錄環(huán)陡鹃。

小結(jié)

1: 硬鏈接是同一文件的不同訪問路徑,其對(duì)應(yīng)的索引節(jié)點(diǎn)號(hào)是一樣的抖坪,刪除文件其實(shí)就是刪除其中的一個(gè)硬鏈接萍鲸,如果該文件對(duì)應(yīng)的硬鏈接都被刪除了該文件才被刪除,常用于保護(hù)文件擦俐;
2: 符號(hào)鏈接類似于 Windows 中對(duì)應(yīng)的快捷方式脊阴,刪除符號(hào)鏈接不影響源文件,刪除源文件,則對(duì)應(yīng)的符號(hào)鏈接也沒有意義嘿期;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末品擎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子备徐,更是在濱河造成了極大的恐慌萄传,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜜猾,死亡現(xiàn)場(chǎng)離奇詭異秀菱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蹭睡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門衍菱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肩豁,你說我怎么就攤上這事脊串。” “怎么了清钥?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵琼锋,是天一觀的道長。 經(jīng)常有香客問我循捺,道長斩例,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任从橘,我火速辦了婚禮念赶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恰力。我一直安慰自己叉谜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布踩萎。 她就那樣靜靜地躺著停局,像睡著了一般。 火紅的嫁衣襯著肌膚如雪香府。 梳的紋絲不亂的頭發(fā)上董栽,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音企孩,去河邊找鬼锭碳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勿璃,可吹牛的內(nèi)容都是我干的擒抛。 我是一名探鬼主播推汽,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼歧沪!你這毒婦竟也來了歹撒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤诊胞,失蹤者是張志新(化名)和其女友劉穎暖夭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厢钧,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳞尔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了早直。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寥假。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霞扬,靈堂內(nèi)的尸體忽然破棺而出糕韧,到底是詐尸還是另有隱情,我是刑警寧澤喻圃,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布萤彩,位于F島的核電站,受9級(jí)特大地震影響斧拍,放射性物質(zhì)發(fā)生泄漏雀扶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一肆汹、第九天 我趴在偏房一處隱蔽的房頂上張望愚墓。 院中可真熱鬧,春花似錦昂勉、人聲如沸浪册。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽村象。三九已至,卻和暖如春攒至,著一層夾襖步出監(jiān)牢的瞬間厚者,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工迫吐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留库菲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓渠抹,卻偏偏與公主長得像蝙昙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梧却,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容