Linux中的軟鏈接類似于windows中的快捷方式。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供成武企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為成武眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
創(chuàng)建方式:ln -s oldfile newfile
例:文件軟鏈接 (目錄軟鏈接也是一樣的操作方式)
1、tmp 目錄下創(chuàng)建一個(gè) test.txt 文件
2、ln -s test.txt test,為 test.txt 文件創(chuàng)建一個(gè)名為 test 的軟鏈接
3、ll 查看詳情會發(fā)現(xiàn)有一個(gè)藍(lán)色的 test -- test.txt (test 指向 test.txt)。同時(shí)文件類型是 l 開頭,l 是指鏈接文件的意思。
1. 先來了解一下Linux數(shù)據(jù)是如何保存和查詢的
對操作系統(tǒng)來說,數(shù)據(jù)分為兩種:1. 用戶數(shù)據(jù) (user data) 2.元數(shù)據(jù) (metadata)。用戶數(shù)據(jù)就是保存和記錄文件的內(nèi)容。比如一個(gè)1M的ppt文件,500K的txt文件。這都屬于用戶數(shù)據(jù)。這個(gè)文件總有屬性吧,比如大小、修改時(shí)間、訪問時(shí)間、創(chuàng)建時(shí)間、存儲的位置(文件所在的inode)、文件創(chuàng)建者等等信息。這些屬性信息或者理解為匯總信息,我們稱它為元數(shù)據(jù)。一句話,用戶數(shù)據(jù)是文件的真實(shí)內(nèi)容,而元數(shù)據(jù)則是匯總信息。
在 Linux 中,元數(shù)據(jù)中的 inode 號(inode 號即索引節(jié)點(diǎn)號)才是文件的唯一標(biāo)識而非文件名。文件名僅是為了方便人們的記憶和使用,系統(tǒng)或程序通過 inode 號尋找正確的文件數(shù)據(jù)塊。
2. 查看文件對應(yīng)的inode號
134474678 latest.tar.gz
linux查看文件對應(yīng)的inode號
可以看出latest.tar.gz這個(gè)文件, inode 號是134474678,Linux查找讀寫該文件時(shí),以為個(gè)inode號碼為標(biāo)識,而不是文件名。文件名類似于網(wǎng)站域名,僅僅是方便人類記憶。
也就是說, inode134474678有一個(gè)硬鏈接,它就是latest.tar.gz。
3. 根據(jù)inode號查找對應(yīng)的文件
那么,問題來了,系統(tǒng)上有沒有第二個(gè)文件,它的inode號碼也是13447467。
使用find查找一下:
查找結(jié)果如下:
/root/latest.tar.gz
/root/latest2.tar.gz
linux根據(jù)inode號查找對應(yīng)的文件
硬盤上真的有第二個(gè)文件它的inode號碼也是134474678,像這種情況,我們認(rèn)為inode134474678有兩個(gè)硬鏈接。當(dāng)然,這是本文作者提前準(zhǔn)備好的。
為解決文件的共享使用,Linux 系統(tǒng)引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統(tǒng)解決了文件的共享使用,還帶來了隱藏文件路徑、增加權(quán)限安全及節(jié)省存儲等好處。
4. 確認(rèn)硬鏈接的數(shù)量
查看一下文件latest.tar.gz
輸出結(jié)果如下:
-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz
請留意輸出的結(jié)果中的數(shù)字2,表示該文件存在2個(gè)硬鏈接。
正常情況下,一個(gè)inode只有一個(gè)鏈接,如下例
輸出結(jié)果:
-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt
請留意輸出的結(jié)果中的數(shù)字1,表示該文件只存在1個(gè)硬鏈接,默認(rèn)情況下,文件都是只有一個(gè)硬鏈接的。
5. 查看軟鏈接
再來看一個(gè)文件
lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout - /proc/self/fd/1
linux查看軟鏈接
我們發(fā)現(xiàn),/dev/stdout實(shí)際上指向另一個(gè)文件/proc/self/fd/1,這就是軟鏈接。類似于Windows系統(tǒng)上的快捷方式。
6. 軟鏈接與硬鏈接的區(qū)別
6.1 軟鏈接特點(diǎn)
6.2 硬鏈接特點(diǎn)
ln鏈接符原理如下:
Linux ln鏈接符原理圖
7. 創(chuàng)建文件的鏈接
Linux ln命令是一個(gè)非常重要而且常用命令,它用于為文件或者目錄創(chuàng)建鏈接。
7.1 創(chuàng)建軟鏈接
創(chuàng)建一個(gè)文件,用于演示軟鏈接。
創(chuàng)建軟鏈接示例:
檢查結(jié)果:
輸出文件屬性
lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt - soft.txt
linux創(chuàng)建軟鏈接
可以看出這個(gè)文件指向當(dāng)前目錄soft.txt,配置成功。7.2 創(chuàng)建硬鏈接
創(chuàng)建一個(gè)文件,用于演示硬鏈接。
創(chuàng)建硬鏈接,沒有使用選項(xiàng)
檢查結(jié)果:
輸出文件屬性:
-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt
linux創(chuàng)建硬鏈接
留意以上輸出數(shù)字2,表明該文件有2個(gè)副本。
8. 總結(jié)
ln命令可以創(chuàng)建文件的副本,也可以創(chuàng)建軟鏈接。
用命令:ls -l 查看, 最前面有“l(fā)”的就是軟鏈接了,其他類型的文件都可以用這個(gè)命令看到。
軟鏈接是linux中一個(gè)常用命令,它的功能是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同不的鏈接。
具體用法是: ln -s 源文件 目標(biāo)文件
當(dāng) 我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在其它的 目錄下用ln命令鏈接(link)就可以,不必重復(fù)的占用磁盤空間。
例如:
這樣我們就對/usr/bin目錄下的mysql命令創(chuàng)建了軟連接 。
創(chuàng)建軟連接
ln -s [源文件或目錄] [目標(biāo)文件或目錄]
例如:當(dāng)前路徑創(chuàng)建test引向/var/www/test 文件夾
創(chuàng)建/var/test 引向/var/www/test 文件夾
刪除軟連接
和刪除普通的文件是一樣的,刪除都是使用 rm 來進(jìn)行操作
例:
刪除test
修改軟鏈接
ln –snf [新的源文件或目錄] [目標(biāo)文件或目錄]
這將會修改原有的鏈接地址為新的地址
例如:
創(chuàng)建一個(gè)軟鏈接
修改指向新的路徑
常用參數(shù):
-f : 鏈結(jié)時(shí)先將與 dist 同檔名的檔案刪除
-d : 允許系統(tǒng)管理者硬鏈結(jié)自己的目錄
-i : 在刪除與 dist 同檔名的檔案時(shí)先進(jìn)行詢問
-n : 在進(jìn)行軟連結(jié)時(shí),將 dist 視為一般的檔案
-s : 進(jìn)行軟鏈結(jié)(symbolic link)
-v : 在連結(jié)之前顯示其檔名
-b : 將在鏈結(jié)時(shí)會被覆寫或刪除的檔案進(jìn)行備份
-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
-V METHOD : 指定備份的方式
--help : 顯示輔助說明
--version : 顯示版本
需要準(zhǔn)備的材料分別是:電腦、linux連接工具。
1、首先連接上linux主機(jī),進(jìn)入等待輸入指令的linux命令行狀態(tài)。
2、輸入:file /usr/bin/vi,按回車。
3、此時(shí)可以查詢出/usr/bin/vi文件存在軟鏈接,為/usr/bin/vim文件。
ls -al 可以查看軟鏈接的指向
硬鏈接是相當(dāng)與創(chuàng)建了文件信息的一份拷貝,跟原來的文件是一模一樣的,沒有任何區(qū)別,除了文件名字,只不過兩個(gè)文件名指向的硬盤中的文件只存在一份。。