一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - 實例講解Linux系統中硬鏈接與軟鏈接的創建

實例講解Linux系統中硬鏈接與軟鏈接的創建

2019-06-15 10:10新浪博客上善若水 Linux

硬鏈接與軟鏈接的區別從根本上要從Inode節點說起,下面就以實例講解Linux系統中硬鏈接與軟鏈接的創建,來實際看看Linux中兩種鏈接方式的不同

首先要弄清楚,在Linux系統中,內核為每一個新創建的文件分配一個Inode(索引結點),每個文件都有一個惟一的inode號。文件屬性保存在索引結點里,在訪問文件時,索引結點被復制到內存在,從而實現文件的快速訪問。 
鏈接是一種在共享文件和訪問它的用戶的若干目錄項之間建立聯系的一種方法。Linux中包括兩種鏈接:硬鏈接(Hard Link)和軟鏈接(Soft Link),軟鏈接又稱為符號鏈接(Symbolic link)。

一、硬鏈接 
硬鏈接說白了是一個指針,指向文件索引節點,系統并不為它重新分配inode。可以用:ln命令來建立硬鏈接。語法:
 

復制代碼

代碼如下:


ln [options] existingfile newfile
ln[options] existingfile-list directory


用法: 第一種:為”existingfile”創建硬鏈接,文件名為”newfile”。第二種:在”directory”目錄中,為 ”existingfile-list”中包含的所有文件創建一個同名的硬鏈接。常用可選[options] –f 無論”newfile”存在與否,都創建鏈接。-n 如果”newfile”已存在,就不創建鏈接。 
下面舉一些例子:

復制代碼

代碼如下:


$ ls –il


13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2

復制代碼

代碼如下:


$ ln file2 file2hard
$ ls –il


13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
注意在創建鏈接前,file1 顯示的鏈接數目為1,創建鏈接后(1)file1和file1hard的鏈接數目都變為2;(2) file1和file1hard在inode號是一樣的(3) file1和file1hard顯示的文件大小也是一樣。可見進行了ln命令的操作結果:file1和file1hard是同一個文件的兩個名字,它們具 有同樣的索引節點號和文件屬性,建立文件file1的硬鏈接,就是為file1的文件索引節點在當前目錄上建立一個新指針。
鏈接數同時減一,只有將所有指向文件內容的指針,也即鏈接數減為0時,內核才會把文件內容從磁盤上刪除。當前目錄邏輯結構:(不好意思圖沒有顯示出來)。 
還可以在不同目錄,但同一文件系統中建立文件的硬鏈接。設file1、file2在目錄/home/longcheng/dir1中,下面的命令,在/home/longcheng中建立file2的硬鏈接。

復制代碼

代碼如下:


ln file2 /home/longcheng/file2hard


下面的程序,是將dir1目錄中所有文件,在目錄dir2中建立硬鏈接

復制代碼

代碼如下:


$mkdir dir2
$ln /home/longcheng/dir1/* /home/longcheng/dir2


如果使用了 ln –f existingfile newfile,如果newfile已經存在,則無論原來newfile是什么文件,只用當前用戶對它有寫權限,newfile就成為exisitngfile的硬鏈接文件。 
盡管硬鏈接節省空間,也是Linux系統整合文件系統的傳統方式,但是存在一下不足之處:
(1)不可以在不同文件系統的文件間建立鏈接
(2)只有超級用戶才可以為目錄創建硬鏈接。雖然很多樹上說root用戶可以創建,但是筆者在學習過程中發現即使是root用戶也不能創建,我的系統是Redhat,內核2.4、2.6都試過,在其他系統中不知道是不是可以。

 

二、軟鏈接(符號鏈接) 
軟鏈接克服了硬鏈接的不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網絡對文件進行鏈接。 
建立軟鏈接,只要在ln后面加上選項 –s,下面舉個例子
 

復制代碼

代碼如下:


$ ls -il


13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard

復制代碼

代碼如下:


$ln –s file1 file1soft
$ls -il


13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1
從上面鏈接后的結果可以看出來軟鏈接與硬鏈接,區別不僅僅是在概念上,在實現上也是不同的。區別:硬鏈接原文件&鏈接文件公用一個inode號,說明他 們是同一個文件,而軟鏈接原文件&鏈接文件擁有不同的inode號,表明他們是兩個不同的文件;在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒有寫 出來,因為在本質上硬鏈接文件和原文件是完全平等關系;鏈接數目是不一樣的,軟鏈接的鏈接數目不會增加;文件大小是不一樣的,硬鏈接文件顯示的大小是跟原 文件是一樣的,這用強調,因為是等同的嘛,而這里軟鏈接顯示的大小與原文件就不同了,file1大小是48B,而file1soft是5B,這里面的5實 際上就是“file1”的大小。 
總之,建立軟鏈接就是建立了一個新文件。當訪問鏈接文件時,系統就會發現他是個鏈接文件,它讀取鏈接文件找到真正要訪問的文件。 
在不同系統之間建立軟鏈接、對目錄建立鏈接,這里就不舉例了,讀者可以自己去嘗試,我也是在不斷實踐中學習的。 
當然軟鏈接也有硬鏈接沒有的缺點,因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到 了~~,而硬鏈接就沒有這個缺陷,你想怎么移就怎么移(呵呵);還有它要系統分配額外的空間用于建立新的索引節點和保存原文件的路徑。 
補充一下:可以通過symlink來查看鏈接文件,可以用 man symlink來學習。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本在线不卡免 | 全是女性放屁角色的手游 | 九九精品成人免费国产片 | 韩国久播影院理论片不卡影院 | 人人爽人人看 | 风间由美被义子中文字幕 | 欧美日韩视频在线第一区二区三区 | 手机av| 国产一级大片免费看 | 国产精品 视频一区 二区三区 | 校服下的白嫩小乳尖h1v1 | 三上悠亚久久国产 | 国产精品资源在线观看网站 | 国产一卡2卡3卡四卡国色天香 | 国产玖玖在线观看 | 男男按摩1069gⅴ | 免费在线公开视频 | 欧美在线视频一区二区 | 久久综合香蕉久久久久久久 | 国产午夜精品久久久久小说 | 456老汉gay| 国内视频一区二区 | 99热精品国产麻豆 | 亚洲国产成人综合 | 日韩在线成人 | 四虎影视国产精品婷婷 | 天天操夜夜操狠狠操 | 喷奶水榨乳ova动漫无修 | 小小水蜜桃免费影院 | 亚洲成色| 亚洲第一天堂无码专区 | 奇米久草 | 国产在线精品成人一区二区三区 | 国产一区二区三区在线看 | 999久久久| 国产精品青青青高清在线 | 2018久久精品热在线观看 | 纲手被漫画aⅴ | 亚洲第一永久色 | 精品久久久久久久高清 | 色先锋影音资源 |