1. 程式人生 > >linux 連結的使用 建立和刪除符號連線(軟、硬連結)

linux 連結的使用 建立和刪除符號連線(軟、硬連結)

在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體在,從而實現檔案的快速訪問。

連結是一種在共享檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。Linux中包括兩種連結:硬連結(Hard Link)和軟連結(Soft Link),軟連結又稱為符號連結(Symbolic link)。符號連線相當於Windows下的快捷方式。

一、硬連結

硬連結說白了是一個指標,指向檔案索引節點,系統並不為它重新分配inode。可以用:ln命令來建立硬連結。
語法:
ln [options] existingfile newfile(sexistingfile 待建立連結檔案的檔案,newfile是新建立的連結檔案)
ln [options] existingfile-list directory

-f 建立時,將同檔案名刪除.
-i 刪除前進行詢問.

ln -s abc cde 建立abc 的軟連線
ln abc cde 建立abc的硬連線,

用法:
第一種:為”existingfile”建立硬連結,檔名為”newfile”。
第二種:在”directory”目錄中,為”existingfile-list”中包含的所有檔案建立一個同名的硬連結。
常用可選[options] –f 無論”newfile”存在與否,都建立連結。-n 如果”newfile”已存在,就不建立連結。

下面舉一些例子:

[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
[

[email protected] test]# ln file2 file2hand
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]#

注意在建立連結前,file1 顯示的連結數目為1,建立連結後file1和file1hard的連結數目都變為2;file1和file1hard在inode號是一樣的file1和file1hard顯示的檔案大小也是一樣。可見進行了ln命令的操作結果:file1和file1hard是同一個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案file1的硬連結,就是為file1的檔案索引節點在當前目錄上建立一個新指標。你可以刪除其中任何一個,如rm file2 ,每次只會刪除一個指標,連結數同時減一,當連結數減為0時,核心才會把檔案內容從磁碟上刪除。

還可以在不同目錄,但同一檔案系統中建立檔案的硬連結。設file1、file2在目錄/home/root/dir1中,下面的命令,在/home/root中建立file2的硬連結。

ln file2 /home/root/file2hard
下面的程式,是將dir1目錄中所有檔案,在目錄dir2中建立硬連結
#mkdir dir2
#ln /home/root/dir1/* /home/root/dir2

如果使用了 ln –f existingfile newfile,如果newfile已經存在,則無論原來newfile是什麼檔案,只用當前使用者對它有寫許可權,newfile就成為exisitngfile的硬連結檔案。

儘管硬連結節省空間,也是Linux系統整合檔案系統的傳統方式,但是存在一下不足之處:
(1)不可以在不同檔案系統的檔案間建立連結
(2)只有超級使用者才可以為目錄建立硬連結。

二、軟連結(符號連結)

軟連結克服了硬連結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號連結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行連結。
建立軟連結,只要在ln後面加上選項 –s,下面舉個例子

[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[[email protected] test]# ln -s file1 file1soft
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

從上面連結後的結果可以看出來軟連結與硬連結,區別不僅僅是在概念上,在實現上也是不同的。區別:硬連結原檔案&連結檔案公用一個inode號,說明他們是同一個檔案,而軟連結原檔案&連結檔案擁有不同的inode號,表明他們是兩個不同的檔案;在檔案屬性上軟連結明確寫出了是連結檔案,而硬連結沒有寫出來,因為在本質上硬連結檔案和原檔案是完全平等關係;連結數目是不一樣的,軟連結的連結數目不會增加;檔案大小是不一樣的,硬連結檔案顯示的大小是跟原檔案是一樣的,這用強調,因為是等同的嘛,而這裡軟連結顯示的大小與原檔案就不同了,file1大小是48B,而file1soft是5B,這裡面的5實際上就是“file1”的大小。

總之,建立軟連結就是建立了一個新檔案。當訪問連結檔案時,系統就會發現他是個連結檔案,它讀取連結檔案找到真正要訪問的檔案。
在不同系統之間建立軟連結、對目錄建立連結,這裡就不舉例了,讀者可以自己去嘗試,我也是在不斷實踐中學習的。
當然軟連結也有硬連結沒有的缺點,因為連結檔案包含有原檔案的路徑資訊,所以當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了~~,而硬連結就沒有這個缺陷,你想怎麼移就怎麼移(呵呵);還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。

補充一下:可以通過symlink來檢視連結檔案,可以用 man symlink來學習。

三、刪除連結

有建立就有刪除

rm -rf symbolic_name 注意不是rm -rf symbolic_name/

[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]# rm -rf file1soft
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]#

————————————
linux 軟連線和硬連結的區別:
————————————

4點不同 :
(1)軟連線可以 跨檔案系統 ,硬連線不可以 。
實踐的方法就是用共享檔案把windows下的 aa.txt文字文件連線到linux下/root目錄 下 bb,cc . ln -s aa.txt
/root/bb 連線成功 。ln aa.txt /root/bb 失敗 。

(2)關於 I節點的問題 。硬連線不管有多少個,都指向的是同一個I節點,會把 結點連線數增加 ,只要結點的連線數不是 0,檔案就一直存在 ,不管你刪除的是

原始檔還是 連線的檔案 。只要有一個存在 ,檔案就 存在 (其實也不分什麼 原始檔連線檔案的 ,因為他們指向都是同一個 I節點)。 當你修改原始檔或者連線檔案

任何一個的時候 ,其他的 檔案都會做同步的修改 。軟連結不直接使用i節點號作為檔案指標,而是使用檔案路徑名作為指標。所以 刪除連線檔案 對原始檔無影響,但

是 刪除 原始檔,連線檔案就會找不到要指向的檔案 。軟連結有自己的inode,並在磁碟上有一小片空間存放路徑名.

(3)軟連線可以對一個不存在的檔名進行連線 。

(4)軟連線可以對目錄進行連線。

備註:I節點 :它是UNIX內部用於描述檔案特性的資料結構.我們通常稱I節點為檔案索引結點(資訊結點).i節點 含有關於檔案的大部分的重要信 息,包括檔案資料塊在

磁碟上的地址.每一個I節點有它自己的標誌號,我們稱為檔案順序號.I節點包含的資訊 1.檔案型別 2.檔案屬主關係 3.檔案的訪問許可權 4.檔案的時間截.

相關推薦

linux 連結的使用 建立刪除符號連線連結

在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體在,從而實現檔案的快速訪問。 連結是一種在共享檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。Linux中包括兩種連結:硬連結

linux 連結ln的使用 建立刪除符號連線連結

1 . 使用方式 :ln [option] source_file dist_file   (source_file是待建立連結檔案的檔案,dist_file是新建立的連結檔案)                    -f 建立時,將同檔案名刪除.                     -i 刪除前進行詢

Ubuntu 連結ln的使用:建立刪除符號連結

對於一個檔案來說,有唯一的索引接點與之對應,而對於一個索引接點號,卻可以有多個檔名與之對應。因此,在磁碟上的同一個檔案可以通過不同的路徑去訪問該檔案。注意在Linux下是一切皆檔案的啊,資料夾、新加的硬碟 ...都可以看著檔案來處理的啊。 連線有軟連線和硬連線(hard link)之分的

linux建立刪除變數,sh與變數的作用範圍之間的關係

a=1為定義了一個變數.注意定義變數的時候不能有等號 unset a取消定義的變數a 如果我定義一個變數a=4。然後編寫一個指令碼t1. 裡面的內容為echo 用於輸出a。但是此時並不能輸出a。因為a是一個外部的變數。他對於腳本里面是不可見的。 如果此時要在t1指令碼執行之

Linux建立刪除使用者

在Linux下建立使用者和刪除使用者,必須在root使用者下,如果你當前不是用根使用者登入,你可以開啟終端,輸入"su root"命令,再輸入根口令,就可以進入root使用者模式下,如下所示: 建立使用者(useradd): (1)用useradd命令建立使用者建立使用者: 語法: useradd

linux建立刪除連結

在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體在,從而實現檔案的快速訪問。 連結是一種在共享檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。Linux中包括兩種連結:硬連結

URL請求中文符號“亂碼”解碼轉碼解決方式

有的字元在url中傳遞的時候回編碼(可能是自動的)將其符號轉變為%加上ASCII碼;如果在客戶端或者服務端接收到的時候沒有解碼就會出現類似亂碼的問題;其實不然只是沒有進行解碼 附部分編碼規則       十六進位制值 1. +

【leetcode】從排序陣列中刪除重複項CPython解答

題目: 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums = [1,1,2], 函式應該

圖 | 兩種遍歷方式:深度優先搜尋DFS深搜廣度優先搜尋BFS廣搜

前邊介紹了有關圖的 4 種儲存方式,本節介紹如何對儲存的圖中的頂點進行遍歷。常用的遍歷方式有兩種:深度優先搜尋和廣度優先搜尋。 深度優先搜尋(簡稱“深搜”或DFS) 圖 1 無向圖 深度優先搜尋的過程類似於樹的先序遍歷,首先從例

Linux CentOS 7的圖形介面安裝GNOMEKDE等

4、然後安裝我們需要的圖形介面軟體,GNOME(GNOME Desktop) 這裡需要特別注意!!!! 一定要注意 名稱必須對應 不同版本的centOS的軟體名可能不同 其他Linux系統類似 否則會出現No packages in any requested group available to in

Android layer-list的屬性使用詳解陰影邊框效果

layer-list用於多個圖層堆疊,可以完成陰影效果 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/

Linux小小白入門教程建立刪除資料夾

以下操作在Linux終端進行。Linux因為許可權非常嚴格,所以暫時所有的命令操作全部是在/home資料夾下的/yangjw資料夾下進行。/yangjw資料夾就是登入使用者名稱所在的資料夾,出了此資料

Linux下的使用者管理——使用者及組的建立刪除

1.使用者存在的意義 系統使用者即系統的使用者,使用者管理是對檔案進行管理,使用者的存在是為了回收權力 2.組存在的意義 組的存在是為了共享權力,組和使用者是兩個不同的機制 3.組的分類 組可以分為初始組和附加組; 初始組 使用者出生時就加

Linux建立更改連結符號連結

概述 在本篇中,學習建立和管理硬連結和符號連結。學習: 建立硬或軟連結識別連結並知道它們的型別理解複製與連結檔案之間的區別使用連結執行系統管理任務 連結簡介 在儲存裝置上,檔案或目錄包含在一些資料塊中。有關某個檔案的資訊包含在一個 inode 中,它記錄了所有者、最後

linux用戶管理 -- 創建用戶adduseruseradd刪除用戶userdel

user 不同 lin shel 無法 沒有 創建用戶 修改密碼 centos 一 用戶創建命令: # adduser 用戶名 # useradd 用戶名 1) useradd 與 adduser 的區別 在CentOs系統中: useradd與adduser是沒有

linux下封裝函式庫——動態庫.so靜態庫.a程式碼實現及連結方式

在linux環境下的連結庫分為靜態連結庫(.a庫)和動態連結庫(.so庫),其作用是把C程式編譯好做成一種可執行連結檔案,主程式檔案呼叫這些程式的函式介面是可以使用a庫或so庫,在主程式中只需要include含有庫中提供的函式介面宣告的標頭檔案即可。所以學會如何

FreeRTOS4---FreeRTOS 任務建立刪除

FreeRTOS 任務建立和刪除任務建立函式描述引數描述返回值用法舉例任務刪除任務描述引數描述 FreeRTOS 任務建立和刪除 在FreeRTOS移植到Cortex-M3硬體平臺的文章中,我們已經見過任務建立API,但那篇文章的重點在於如何移植FreeRTOS

連線建立刪除

想把A資料夾放在B資料夾下面: ln -s ./A ./B/ 想取消軟連線: rm -rf ./B/A      千萬不要寫成 rm -rf ./B/A/  這樣會刪除A裡面的資料。

Linux的相對絕對路徑cd命令建立刪除目錄mkdir/rmdirrm命令

一、相對路徑和絕對路徑 1、絕對路徑:路徑的寫法一定由根目錄“/”寫起。例如我們之前編輯的網絡卡檔案 /etc/sysconfig/network-scripts/ifcfg-eno1677xxx ,這個就是絕對路徑。 2、相對路徑:路徑的寫法不是

4.15 linkunlink函式-建立刪除連結

link函式用於建立一個指向已存在檔案的新目錄項。函式原型如下: #include <unistd.h> int link(const char *existingpath, const char *newpath); 返回值:若成功則返回0,若失敗則返回-