欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux中的軟連接和硬連接詳解

 更新時間:2021年12月09日 09:15:13   作者:繁華似錦Fighting  
大家好,本篇文章主要講的是linux中的軟連接和硬連接詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

提示:先來說明一下在Linux系統(tǒng)中文件和目錄的基本存儲,這樣更方便我們理解和學(xué)習(xí)Linux系統(tǒng)中的硬鏈接和軟鏈接。

1、文件和目錄的基本存儲

之前說過分區(qū),每個分區(qū)都可以理解為分成兩部分,一小部分里邊是存放文件的i節(jié)點(diǎn)信息,大部分放的是Block文件塊。

在文件的i節(jié)點(diǎn)當(dāng)中保存的信息有:i節(jié)點(diǎn)號,時間,權(quán)限,保存位置。而Block塊中保存的是文件中的數(shù)據(jù)。

每個文件夾中都會有i節(jié)點(diǎn)和對應(yīng)的Block文件。

但是有一個問題,一個文件的文件名是存放哪里?

我們就以在文件夾root中有一個文件abc為例。文件路徑為/root/abc。

root目錄中,所有的文件都有i節(jié)點(diǎn)名和對應(yīng)的Block塊,而root目錄也有自己的i節(jié)點(diǎn)信息。有i節(jié)點(diǎn)信息,就有與之對應(yīng)的Block塊,root目錄的Block塊中存放的數(shù)據(jù)是root目錄下所有的子文件和子目錄的文件名,和它對應(yīng)的i節(jié)點(diǎn)號。

也就是說,root目錄下文件的文件名,沒有寫在該文件的i節(jié)點(diǎn)里。而是寫在上級目錄的Block塊中。
如果我要查找abc文件的文件名,要先找到root文件夾的i節(jié)點(diǎn),然后在root目錄的Block塊中找到abc的文件名和對應(yīng)的i節(jié)點(diǎn)號才能找到。通過abc文件的i節(jié)點(diǎn)號最終讀取到abc文件中的數(shù)據(jù)。

root目錄的文件名或者說是i節(jié)點(diǎn)存儲在哪里?

root目錄是在根目錄下的,根目錄會有自己的i節(jié)點(diǎn)信息,也會有自己的Block,綜上所述,那root目錄的文件名和i節(jié)點(diǎn)號的信息是放在根目錄的Block塊中的。
那根的i節(jié)點(diǎn)號怎么獲???

根的i節(jié)點(diǎn)號是固定的,根的i節(jié)點(diǎn)號為2。(因?yàn)榫幪?在系統(tǒng)內(nèi)核加載的時候被占用了)

[root@192 ~]# ls -ild /
2 dr-xr-xr-x. 25 root root 4096 12月 27 22:27 /
第一位顯示的就是i節(jié)點(diǎn)號。

總結(jié)

綜上所訴,要查看abc文件的內(nèi)容,就先用通過根的i節(jié)點(diǎn)號,讀取根的Block塊中數(shù)據(jù),找到root目錄的i節(jié)點(diǎn)信息,讀取root目錄的Block塊中數(shù)據(jù),找到abc文件的i節(jié)點(diǎn)信息,讀取abc文件的Block塊中數(shù)據(jù)。
以上就是文件和目錄的基本存儲。

2、In命令介紹

(1)我們來看看ln命令的基本信息命令名稱:

ln英文原意:make links between file所在路徑:/bin/ln執(zhí)行權(quán)限:所有用戶。功能描述:在文件之間建立鏈接。

(2)ln命令的基本格式

[root@localhost ~ ] # ln [選項(xiàng)] 源文件 目標(biāo)文件

選項(xiàng):
  -s:建立軟鏈接文件。如果不加“-s”選項(xiàng),則建立硬鏈接文件
  -f:強(qiáng)制。如果目標(biāo)文件已經(jīng)存在,則刪除目標(biāo)文件后再建立鏈接文件

3、創(chuàng)建硬鏈接

(1)如何創(chuàng)建硬鏈接

示例如下:

[root@localhost ~] # touch cangls
[root@localhost ~ ]# ln /root/cangls /tmp/

# 建立硬鏈接文件,目標(biāo)文件沒有寫文件名,會和原合一致
# 也就是/root/cangls和/tmp/cangls 是硬鏈接文件

說明ln命令應(yīng)用:

# 新創(chuàng)建一個文件abc,查看abc文件的硬連接數(shù)
[root@192 ~]# touch abc
[root@192 ~]# ls -il abc 
1043285 -rw-r--r--. 1 root root 0 12月 29 18:18 abc
# 可以看到abc文件的硬連接數(shù)為1。

# 在tmp目錄中給abc文件創(chuàng)建一個硬連接文件,然后查看這兩個文件硬連接數(shù)。
[root@192 ~]# ln abc /tmp/abc_h
[root@192 ~]# ls -il abc /tmp/abc_h 
1043285 -rw-r--r--. 2 root root 0 12月 29 18:18 abc
1043285 -rw-r--r--. 2 root root 0 12月 29 18:18 /tmp/abc_h
# 可以看到abc文件的引用計(jì)數(shù)(硬連接數(shù))增加了1。
# 同時還可以看到,上邊的兩個文件的i節(jié)點(diǎn)號是一樣的。

(2)硬鏈接特征

源文件和硬鏈接文件擁有相同的InodeBlock。修改任意一個文件,另一個都改變。刪除任意一個文件,另一個都能使用。硬鏈接標(biāo)記不清,很難確認(rèn)硬鏈接文件位置(很難確定這是一個硬連接文件,自己創(chuàng)建的還可能記住,要是別人創(chuàng)建的,我根本無法判定一個文件是硬連接文件),不建議使用。硬鏈接不能鏈接目錄。硬鏈接不能跨分區(qū)(因?yàn)閮蓚€文件需要同一個分區(qū)的同一個i節(jié)點(diǎn)號。所以跨分區(qū)找不到)。

(3)硬連接原理

我上邊在root目錄下創(chuàng)建了一個abc文件,然后在/tmp/目錄下創(chuàng)建一個abc文件硬連接文件abc_h

root目錄、abc文件、tmp目錄,每個都有自己的i節(jié)點(diǎn)號和對應(yīng)的Block塊。通過root目錄的i節(jié)點(diǎn)號,找到對應(yīng)的Block塊。Block塊中記錄著abc文件的名稱和i節(jié)點(diǎn)號,就可以找到abc文件。而硬連接文件abc_hi節(jié)點(diǎn)號和文件名是記錄在tmp目錄的Block塊中的。并且上邊查詢到abc文件和abc_h硬連接文件的i節(jié)點(diǎn)號是相同的,所以通過tmpBlock塊中的abc_h信息,也可以找到abc文件的i節(jié)點(diǎn)號。

所以root目錄中記錄的abc文件信息和tmp目錄記錄的abc_h文件信息,都指向了root目錄下的abc文件。

看下圖:

所以上圖證明了:
修改任意一個文件,另一個都改變。
刪除任意一個文件,另一個都能使用。

4、創(chuàng)建軟鏈接

(1)如何創(chuàng)建軟鏈接

軟連接可以直接看作為Windows系統(tǒng)中的快捷方式。

建立軟鏈接文件,如下:

[root@localhost ~]# touch abc
[root@localhost ~]# ln -s /root/abc /tmp/

root目錄中cde文件,然后創(chuàng)建軟連接/tmp/cde_s文件,查看這兩個文件。

如下圖所示:

[root@localhost ~ ] # touch cde
[root@localhost ~ ] # ln -s /root/cde /tmp/cde_s
[root@localhost ~ ] # ls -il /root/cde /tmp/cde_s
1055972-rw-r--r--1 root root 0 2月1715:30 /root/cde
261634 1rwxrwxrwx 1root root 9 2月1715:30 /tmp/cde_s->/root/cde

說明:

第一:可以看到創(chuàng)建的軟連接文件有明確的提示這個一個軟鏈接文件,和它的源文件的位置在哪里。
/tmp/cde_s->/root/cde。這也就是為什么說硬連接標(biāo)記不清的原因。

第二:文件的引用鏈接數(shù)沒有增加。

第三:兩個文件的i節(jié)點(diǎn)號完全不同。

第四:源文件abc是0字節(jié),空的。而軟連接的文件大小為9個字節(jié)。

(2)軟鏈接特征

軟鏈接和源文件擁有不同的InodeBlock。兩個文件修改任意一個,另一個都改變。刪除軟鏈接,源文件不受影響;刪除源文件,軟鏈接不能使用,因?yàn)檐涙溄記]有實(shí)際數(shù)據(jù),只保存源文件的Inode,不論源文件多大,軟鏈接文件大小不變。軟鏈接的權(quán)限是最大權(quán)限lrwxrwxrwx.,但是由于沒有實(shí)際數(shù)據(jù),最終訪問時需要參考源文件權(quán)限。軟鏈接可以鏈接目錄,軟鏈接可以跨分區(qū)。軟鏈接特征明顯,建議使用軟連接。

(3)軟連接原理

root目錄下有一個cde文件,在tmp目錄創(chuàng)建一個cde文件的軟鏈接文件cde_s。通過root目錄的i節(jié)點(diǎn)號,可以找到root目錄的block塊,root目錄的block塊中記錄了cde文件的文件名和i節(jié)點(diǎn)號。查到cde文件的i節(jié)點(diǎn)號就找到了cde文件的block塊,就能讀取里邊的數(shù)據(jù)。

tmp目錄有自己的i節(jié)點(diǎn)號,與之對應(yīng)的block塊,tmp目錄的block塊中有cde_s文件的文件名和i節(jié)點(diǎn)號,(之前說硬連接這兩個i節(jié)點(diǎn)號是相同的,所以指向的同一個文件),而軟連接文件和源文件的i節(jié)點(diǎn)號是不相同的。說明cde_s文件有自己的i節(jié)點(diǎn)號,并且cde_s文件有自己的block塊。

現(xiàn)在的關(guān)鍵是,cde_s文件的block塊中存放的是什么?
如果里邊存放的是數(shù)據(jù),那cde文件和cde_s文件就不是鏈接的關(guān)系了,就完全是復(fù)制關(guān)系了,這樣就不會出現(xiàn)修改源文件時軟鏈接文件也變,修改軟鏈接文件后源文件也改變的情況。

其實(shí)在cde_s文件的block塊中存放的是源文件的i節(jié)點(diǎn)號。

如下圖:

這也就說明了為什么新創(chuàng)建的軟連接文件創(chuàng)建完成后就有數(shù)據(jù),并且數(shù)據(jù)大小不隨源文件的改變而改變。

還有一點(diǎn)要注意,軟鏈接文件的權(quán)限是最大的,但這個權(quán)限是針對軟鏈接文件的,軟鏈接文件的block塊中并不存放數(shù)據(jù),如果要操作源文件,還是要看源文件權(quán)限,這里需要注意。

(4)說明

Windows系統(tǒng)中創(chuàng)建快捷方式是為了軟件安裝位置太深,不好找,所以在桌面創(chuàng)建一個快捷方式,那Linux系統(tǒng)創(chuàng)建軟鏈接的作用是什么,反正都是通過目錄訪問?

在Linux系統(tǒng)中,軟鏈接最主要的作用是照顧管理員的使用習(xí)慣。

如下圖:

在老式的Linux系統(tǒng)中,/etc/rc.local文件的位置我們用著已經(jīng)習(xí)慣了,系統(tǒng)更新之后,為了升級的需要,/etc/rc.local文件的位置改變了。我們在找這個文件就很麻煩了。解決這個問題的方法就是給這兩個文件創(chuàng)建一個軟鏈接來解決上邊問題,既照顧了升級需要,也照顧了使用習(xí)慣。

還要注意一個情況,用相對路徑創(chuàng)建def文件的軟鏈接,用絕對路徑創(chuàng)建anaconda-ks.cfg文件的軟鏈接。

從上圖中可以看到用相對路徑創(chuàng)建的軟鏈接出現(xiàn)了報錯。

提示:創(chuàng)建軟鏈接時一定要使用絕對路徑,硬連接沒有要求。

到此這篇關(guān)于linux中的軟連接和硬連接詳解的文章就介紹到這了,更多相關(guān)linux軟連接和硬連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux如何配置本地yum源(光盤鏡像掛載)

    Linux如何配置本地yum源(光盤鏡像掛載)

    這篇文章主要介紹了Linux如何配置本地yum源(光盤鏡像掛載),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • linux下yum安裝時出現(xiàn)Loaded plugins: fastestmirror的解決辦法

    linux下yum安裝時出現(xiàn)Loaded plugins: fastestmirror的解決辦法

    這篇文章主要給大家介紹了linux下yum安裝時出現(xiàn)Loaded plugins: fastestmirror,使用 yum 出現(xiàn) Loaded plugins: fastestmirror,文中有詳細(xì)的解決方法,通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • linux ssh 別名登錄小技巧

    linux ssh 別名登錄小技巧

    為了方便登錄服務(wù)器,我們一般使用putty、SecureCRT等等工具。在終端如何通過服務(wù)器別名來進(jìn)行登錄呢
    2015-07-07
  • Centos定制rpm包、搭建yum倉庫的教程

    Centos定制rpm包、搭建yum倉庫的教程

    這篇文章主要介紹了Centos定制rpm包、搭建yum倉庫的教程,感興趣的朋友跟隨小編一起看看吧
    2019-11-11
  • Centos7.2 編譯安裝方式搭建 phpMyAdmin

    Centos7.2 編譯安裝方式搭建 phpMyAdmin

    這篇文章主要介紹了Centos7.2 編譯安裝方式搭建 phpMyAdmin ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Linux下編譯安裝python3步驟

    Linux下編譯安裝python3步驟

    本篇文章主要介紹了Linux下編譯安裝python3,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 區(qū)分Linux硬鏈接與軟鏈接

    區(qū)分Linux硬鏈接與軟鏈接

    這篇文章主要介紹了區(qū)分Linux硬鏈接與軟鏈接,幫助大家更好的理解和學(xué)習(xí)Linux,感興趣的朋友可以了解下
    2020-08-08
  • 配置apache默認(rèn)使用ssl的方法

    配置apache默認(rèn)使用ssl的方法

    首先確認(rèn)mod_rewrite已經(jīng)安裝,方法就是查看你的httpd.conf,搜索“LoadModule rewrite_module modules/mod_rewrite.so”,如果有,刪除前面的"#"。
    2009-10-10
  • 配置Linux使用LDAP用戶認(rèn)證的方法

    配置Linux使用LDAP用戶認(rèn)證的方法

    這篇文章主要介紹了配置Linux使用LDAP用戶認(rèn)證的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 關(guān)于將Web項(xiàng)目部署到阿里云服務(wù)器(5個步驟搞定)

    關(guān)于將Web項(xiàng)目部署到阿里云服務(wù)器(5個步驟搞定)

    這篇文章主要介紹了關(guān)于將Web項(xiàng)目部署到阿里云服務(wù)器(5個步驟搞定),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論