鏈接類型及其意義
符號鏈接與硬鏈接在鏈接意義沒有什麼不同,只是在對目標文件的鏈接原理上有所不同。符號鏈接對應於C語言上的指針,符號鏈接文件只是保存目標文件的路徑,訪問是根據鏈接文件的路徑進行訪問;而硬鏈接是對應於C語言中的引用,硬鏈接文件中保存的是目標文件的inode結點。
正是由於鏈接方式的不同,這兩種鏈接呈現出不同的特性。符號鏈接通常被稱為軟鏈接,它的目標文件既可以是目錄,也可以是普通文件。由於符號鏈接文件中只是存放的目標文件的路徑,故它不會改變目標文件中的inode的引用計數。刪除目標文件對符號鏈接文件沒有什麼影響。硬鏈接文件則不同,它會改變目標文件的inode的引用計數,每新建一個硬鏈接文件時,目標文件的inode引用計數就會加一。刪除目標文件時,目標文件並不會真正的刪除,這里只是簡單的將目標文件的引用計數減一,目標文件並沒有刪除。詳情查看網頁鏈接
創建鏈接文件
創建硬鏈接文件的命令格式:ln [鏈接目標文件] [硬鏈接文件名]
創建符號鏈接文件的命令格式:ln -s [鏈接目標文件或目錄] [符號鏈接文件名]
舉例(以下例子中的當前目錄均為"/home/tingyu"):
在"/home/tingyu"目錄中創建目錄"/home/tingyu/hkc"的鏈接文件:ln -s /home/tingyu/hkc lnk
執行後的結果為:
tingyu@tingyu-laptop:~$ ln -s ./hkc lnk
tingyu@tingyu-laptop:~$ ls -l
total 32
drwxr-xr-x 2 tingyu tingyu 4096 2011-03-20 12:43 hkc
lrwxrwxrwx 1 tingyu tingyu 5 2011-03-20 12:43 lnk -> ./hkc
在"/home/tingyu"目錄中創建文件"/home/tingyu/hkc"的鏈接文件:ln /home/tingyu/hkc lnk
Ⅱ linux中,什麼是連結檔,鏈接,鏈接目錄
linux硬鏈接與軟鏈接
1.Linux鏈接概念
Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認情況下,ln命令產生硬鏈接。
【硬連接】
硬連接指通過索引節點來進行連接。在Linux的文件系統中,保存在磁碟分區中的文件不管是什麼類型都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個文件名指向同一索引節點是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連接。只刪除一個連接並不影響索引節點本身和其它的連接,只有當最後一個連接被刪除後,文件的數據塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。
硬連接的2個限制:
不允許給目錄創建硬鏈接
只有在同一文件系統中的文件之間才能創建鏈接。 即不同硬碟分區上的兩個文件之間不能夠建立硬鏈接。這是因為硬鏈接是通過結點指向原始文件的,而文件的i-結點在不同的文件系統中可能會不同。
【軟連接】
另外一種連接稱之為符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似於Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。
這就允許符號鏈接(經常簡寫為symlinks)指向位於其他分區、甚至是其他網路硬碟上的某個文件
2.通過實驗加深理解
[oracle@Linux]$ touch f1 #創建一個測試文件f1
[oracle@Linux]$ ln f1 f2 #創建f1的一個硬連接文件f2
[oracle@Linux]$ ln -s f1 f3 #創建f1的一個符號連接文件f3
[oracle@Linux]$ ls -li # -i參數顯示文件的inode節點信息
total 0
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1
從上面的結果中可以看出,硬連接文件f2與原文件f1的inode節點相同,均為9797648,然而符號連接文件的inode節點不同。
[oracle@Linux]$ echo "I am f1 file" >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory
通過上面的測試可以看出:當刪除原始文件f1後,硬連接f2不受影響,但是符號連接f3文件無效
3.總結
依此您可以做一些相關的測試,可以得到以下全部結論:
1).刪除符號連接f3,對f1,f2無影響;
2).刪除硬連接f2,對f1,f3也無影響;
3).刪除原文件f1,對硬連接f2沒有影響,導致符號連接f3失效;
4).同時刪除原文件f1,硬連接f2,整個文件會真正的被刪除。
Ⅲ linux系統中鏈接文件什麼意思
鏈接:一種在共享文件和訪問它的用戶的若干目錄項之間建立聯系的一種方法。
Linux中包括兩種鏈接:硬鏈接(Hard Link)和軟鏈接(Soft Link),軟鏈接又稱為符號鏈接(Symbolic link)。
我們首先來了解一下幾個名詞:
索引節點(inode)
要了解鏈接,我們首先得了解一個概念,叫索引節點(inode)。在Linux系統中,內核為每一個新創建的文件分配一個Inode(索引結點),每個文件都有一個惟一的inode號,我們可以將inode簡單理解成一個指針,它永遠指向本文件的具體存儲位置。文件屬性保存在索引結點里,在訪問文件時,索引結點被復制到內存在,從而實現文件的快速訪問。系統是通過索引節點(而不是文件名)來定位每一個文件。
硬鏈接(Hard Link)
硬鏈接說白了是一個指針,指向文件索引節點,系統並不為它重新分配inode。可以用:ln命令來建立硬鏈接。
引用
ln [options] existingfile newfile
ln [options] existingfile-list directory
用法:
第一種為」existingfile」創建硬鏈接,文件名為」newfile」。
第二種在」directory」目錄中,為」 existingfile-list」中包含的所有文件創建一個同名的硬鏈接。
常用可選[options]:-f 無論」newfile」存在與否,都創建鏈接。-n 如果」newfile」已存在,就不創建鏈接。
軟鏈接(Soft Link)
軟鏈接又叫符號鏈接,這個文件包含了另一個文件的路徑名。可以是任意文件或目錄,可以鏈接不同文件系統的文件。和win下的快捷方式差不多。
可以用:ln -s 命令來建立軟鏈接。
引用
ln -s existingfile newfile
ln -s existingfile-list directory
下面我們用一個實例來說明硬鏈接和軟鏈接。
現在目錄下有兩個文件,一個名為file1,一個名為file2。
引用
$ ls –il
1052671 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2007-03-29 13:46 file2
首先先做一個file1的硬鏈接。
引用
$ ln file1 file1hard
$ls –il
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file12
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1hard
這里我們注意在創建鏈接前,file1顯示的鏈接數目為1,創建鏈接後
1.file1和file1hard的鏈接數目都變為2。
2.file1和file1的inode號是一樣的,都是1052671。
3.file1和file1hard顯示的文件大小也是一樣,都是0B。
可見進行了ln命令的操作結果:file1和file1hard是同一個文件的兩個名字,它們具有同樣的索引節點號和文件屬性,建立文件file1的硬鏈接,就是為 file1的文件索引節點在當前目錄上建立一個新指針。你可以刪除其中任何一個,如rm file1,每次只會刪除一個指針,鏈接數同時減一,只有將所有指向文件內容的指針,也即鏈接數減為0時,內核才會把文件內容從磁碟上刪除。
盡管硬鏈接節省空間,也是Linux系統整合文件系統的傳統方式,但是存在一些不足之處:
1.不允許給目錄創建硬鏈接。
2.不可以在不同文件系統的文件間建立鏈接。
接著我們做一個指向file2的軟鏈接,軟鏈接克服了硬鏈接的不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對文件進行鏈接。
引用
$ ln -s file2 file2soft
$ ls –il
總用量 0
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:35 file2
1053313 lrwxrwxrwx 1 Leanx Leanx 5 2010-03-29 13:45 file2soft -> file2
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1hard
從上面鏈接後的結果可以看出來軟鏈接與硬鏈接,區別不僅僅是在概念上,在實現上也是完全不同的。
區別:
1.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件,而軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件;
2.在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒有寫出來,因為在本質上硬鏈接文件和原文件是完全平等關系;
3.鏈接數目是不一樣的,軟鏈接的鏈接數目不會增加;
4.文件大小是不一樣的,硬鏈接文件顯示的大小是跟原文件是一樣的。而這里軟鏈接顯示的大小與原文件就不同了,file2大小是0B,而file2soft是5B。
總之,建立軟鏈接就是建立了一個新文件。當訪問鏈接文件時,系統就會發現他是個鏈接文件,它讀取鏈接文件找到真正要訪問的文件。
當然軟鏈接也有硬鏈接沒有的缺點,因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和保存原文件的路徑。
Ⅳ Linux中硬鏈接和軟鏈接的區別與聯系!
鏈接是一種在共享文件和訪問它的用戶的若干目錄項之間建立聯系的一種方法。在Linux操作系統中,鏈接被分為兩種:軟鏈接(SoftLink,符號鏈接)和硬鏈接(HardLink)。那麼什麼是軟鏈接?什麼是硬鏈接?Linux中軟鏈接和硬鏈接之間有什麼區別和聯系?以下是詳細的內容介紹。
為解決文件的共享使用,Linux系統引入了兩種鏈接:硬鏈接和軟鏈接。在Linux中,元數據中的inode號才是文件的唯一標識而非文件名,文件內容要通過inode號來尋找,猶如交通指示牌一樣,指示著數據找尋的方向。
硬鏈接(Hard Link)
A和B的硬鏈接,則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除其中一個,對另外一個沒有任何影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。
註:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊只有在inode節點鏈接數減少為0的時候才會被系統回收。
軟鏈接(Soft Link)
A是B的軟鏈接,A的目錄項中的inode節點號與B的目錄項中的節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名。A和B之間是主從關系,如果B被刪除了,A依然存在,但指向的是一個無效的鏈接。
Linux中軟鏈接和硬鏈接之間有什麼區別和聯系?
概念不同:
軟鏈接可以理解成快捷方式,和原文件的inode號不一樣,它和Windows下的快捷方式的作用是一樣的,軟鏈接數據塊中記錄的亦是相對路徑指向。
硬鏈接和原文件對應一個inode,就是對應一個文件,可以理解成一個文件有幾個別名。
用法不同:
軟鏈接可以理解成快捷方式,也清楚知道原文件在哪裡。它和Windows下的快捷方式的作用是一樣的,和Windows一樣,刪除源文件,快捷方式也就無法使用了。
硬鏈接可以看成一個備份,但並沒有增加空間,因為文件就一個,這種可以防止源文件刪除後不能使用問題;同時也有局限性,不能對目錄和跨文件系統使用。
語法格式(ln):
硬鏈接:ln 源文件 鏈接名
軟鏈接:ln -s 源文件 鏈接名
注意:鏈接的源文件路徑要寫絕對路徑,否則會報錯。
Ⅳ linux中什麼是鏈接文件軟鏈接和硬鏈接文件分別使用什麼指令創建二者有何異同
linux系統中鏈接文件分為硬鏈接和軟鏈接(軟鏈接也叫符號鏈接)。硬鏈接和軟鏈接都是指向文件的一種方式,但兩者有不同的地方,主要有以下不同:
1.硬鏈接是創建一個指向block的inode,有防止誤刪除的功能。因為刪除一個文件,實際上是刪除inode信息,切斷了inode與block之間的聯系。當給一個文件做了硬鏈接之後,刪除文件時,只會減少文件的鏈接數,當鏈接數為0時,才會徹底刪除該文件。
軟鏈接類似Windows系統的快捷方式,是一個完整的文件,有自己的inode和block,block的內容就是原文件的文件名。當原文件刪除後,軟鏈接就失效了,沒有防止誤刪除的功能。
2.文件的大小不一樣。由於硬鏈接是指向原文件的block,所以硬鏈接的文件大小和原文件大小是一致的。而軟鏈接是新的文件,block里是原文件的的文件名,所以軟鏈接文件的大小一般是4K,即一個block的大小。
3.硬鏈接不能給目錄做,不能跨分區做。軟鏈接則都可以。
創建硬鏈接命令:
ln file filenew #file為原文件名,filenew為新文件名。
創建軟鏈接命令:
ln -s file filenew #file為原文件名,filenew為新文件名。
Ⅵ linux下面的鏈接是什麼有什麼用
鏈接的好處:鏈接操作實際上是給系統中已有的某個文件指定另外一個可用於訪問它的名稱。對於這個新的文件名,我們可以為之指定不同的訪問許可權,以控制對信息的共享和安全性的問題。 如果鏈接指向目錄,用戶就可以利用該鏈接直接進入被鏈接的目錄而不用打一大堆的路徑名。而且,即使我們刪除這個鏈接,也不會破壞原來的目錄。
你看看應不應該給自己的文件創建鏈接,如果不嫌麻煩的話可以不建的,但貌似建鏈接的也很少。
Ⅶ linux中的各文件的顏色表示什麼
下面制是linux系統約定不同類型文件默認的顏色:
白色:表示普通文件
藍色:表示目錄
綠色:表示可執行文件
紅色:表示壓縮文件
淺藍色:鏈接文件
紅色閃爍:表示鏈接的文件有問題
黃色:表示設備文件
灰色:表示其它文件