ln(link)命令用于在文件或目錄之間創(chuàng)建同步鏈接媚狰。當(dāng)我們需要在多個目錄中型檀,使用到相同的文件時憎妙,通常我們會選擇在這些不同的目錄中將需要用到的文件都復(fù)制一份,這種做法會帶來兩個問題:
- 當(dāng)原始文件被更改后口锭,需要再次為每個目錄重新復(fù)制一份朦前,否則會造成同一文件存在多個版本
- 同一個文件被復(fù)制多份,會占用額外的磁盤空間
針對這種情況鹃操,我們引用Linux中一個非常重要的命令ln韭寸。
鏈接分類
在Linux中,鏈接可分為兩類:硬鏈接(Hard Link)和符號鏈接(Symbolic Link)荆隘,亦稱軟鏈接恩伺。默認(rèn)的類型為硬鏈接。
硬鏈接(Hard Link)
硬鏈接就像一個文件有多個文件名椰拒,以文件副本的形式存在晶渠。硬鏈接主要的特性如下:
- 不能在不同的文件系統(tǒng)之間創(chuàng)建硬鏈接凰荚,即鏈接文件和被鏈接文件必須在同一文件系統(tǒng)中
- 硬鏈接無法引用目錄
- 只能對已經(jīng)存在的文件夾進(jìn)行創(chuàng)建
- 刪除硬鏈接文件并不影響被鏈接的文件
符號鏈接(Symbolic Link)
符號鏈接是為了克服硬鏈接的局限性而創(chuàng)建的。通過創(chuàng)建一個特殊的文件褒脯,該文件指向另一個文件的位置浇揩,所有的讀寫文件內(nèi)容的命令被用于符號鏈接時,將沿著鏈接方向前進(jìn)訪問實際文件憨颠。類似于Windows中的快捷方式。
- 符號鏈接可以跨文件系統(tǒng)
- 符號鏈接可以對文件或目錄創(chuàng)建
- 可對不存在的文件或目錄創(chuàng)建鏈接
- 刪除符號鏈接并不影響被指向的文件积锅,但若被指向的原文件被刪除爽彤,則相關(guān)的符號鏈接會成為死鏈接,若被指向的路徑文件被重新創(chuàng)建缚陷,則死鏈接可以恢復(fù)為正常的鏈接
兩者聯(lián)系與區(qū)別
- 1.ln命令會保持每一處鏈接文件的同步性适篙,即無論更改哪一個位置,其它的文件都會發(fā)生相同的變化
- 2.兩者都是一種映射箫爷,硬鏈接映射到inode,符號鏈接僅是鏈接到一個路徑嚷节。
簡單的說,符號鏈接就像是快捷方式虎锚,而硬鏈接就像是備份硫痰。符號鏈接可以做跨分區(qū)的鏈接,而硬鏈接由于inode的緣故窜护,只能是本分區(qū)中做鏈接效斑,因此符號鏈接使用的頻率要高一些。
基本語法
ln [參數(shù)] [源文件/目錄] [目標(biāo)文件/目錄]
詳細(xì)參數(shù)解釋如下所示:
參數(shù) | 功能 |
---|---|
-f | 如果在目標(biāo)位置存在與鏈接名相同的文件柱徙,則刪除該文件 |
-s | 符號鏈接 |
-d | 允許系統(tǒng)管理員創(chuàng)建目錄的硬鏈接 |
-b | 對在鏈接時會被覆蓋或刪除的文件進(jìn)行備份 |
示例
-
1缓屠、新建硬鏈接,并將原文件刪除护侮,再查看結(jié)果敌完,示例如下:
從示例中可以看到,使用硬鏈接會產(chǎn)生一個內(nèi)容相同的文件firstbak.txt羊初,效果相當(dāng)于復(fù)制滨溉。因此當(dāng)刪除first.txt時,并不會影響到firstbak.txt
-
2凳忙、新建符號鏈接业踏,并將原文件刪除,再查看結(jié)果涧卵,示例如下:
從示例中可以看到勤家,使用符號鏈接僅產(chǎn)生一個指向來源文件的鏈接文件,當(dāng)原文件被刪除后柳恐,鏈接文件也跟著失敗伐脖,是不是覺得跟Windows快捷方式很像热幔?