Linux中軟鏈接和硬鏈接的區別
鏈接文件:
Linux中包括兩種鏈接:硬鏈接(Hard Link)和軟鏈接(Soft Link),軟鏈接又稱為符號鏈接(Symbolic link)。
Inode
文件除了純數據本身之外,還必須包含有對這些純數據的管理信息
-
文件名;
-
訪問權限;
-
文件的屬主以;
-
該文件的數據所對應的磁盤數據塊;
-
文件的時間戳;
-
access time
-
modify time
-
chang time
-
鏈接數,即有多少文件名指向這個inode;
這些管理信息稱之為元數據(mata data),保存在文件的inode節點之中。我們可以通過stat命令查看一個文件的inode信息:
命令格式:
stat [OPTION]… FILE…
[root@wang ~]17:21# stat /root/wang
文件:"wang"
大?。?474 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:139145901 硬鏈接:3
權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:passwd_file_t:s0
最近訪問:2016-10-20 16:17:13.046000565 +0800
最近更改:2016-10-18 04:31:46.303621312 +0800
最近改動:2016-10-20 16:03:57.389348957 +0800
用stat查看文件的inode信息時,我們看到輸出的信息中有一行Inode:139145901,這個是/root/wang文件的inode號。每個inode都有一個全文件系統唯一的inode號,操作系統內核正是通過inode號而非文件名來識別不同的文件。文件名僅僅是為了方便用戶使用而已,內核是通過文件名找到inode,然后通過inode訪問實際文件數據的。既然系統是通過inode號找到的文件內容,那么是否可以存在多個文件的inode號是相同的情況呢?答案是有的就是開頭提到的硬鏈接。
硬鏈接(Hard Link)
硬鏈接文件其實就是與原文件在不同或者同一目錄(必須同分區)下的另外一個外號,與原文件指向同一個Inode,對應同樣的磁盤數據塊,具有相同的訪問權限、屬性等等。也就是說硬鏈接其實就是同一個人的別名或者是外號,不管叫什么其實都是指的同樣的人。
-
命令格式: ln filename [ linkname ]
硬鏈接的優點;
-
節省系統空間,一段磁盤數據塊不論有多少個硬鏈接都只占用一次空間;
-
硬鏈接文件之間互相沒有關聯,當一個文件刪除時其他文件依然可以正常使用;
硬鏈接的缺點;
-
不能跨分區創建硬鏈接。因為inode號只有在一個分區內才能保證是唯一的,跨越分期統則inode號就可能重復。
-
不能對目錄創建硬鏈接。
軟連接(symbolic link)
軟鏈接又叫符號鏈接(symbolic link),與硬鏈接不同的是軟鏈接本身也是文件有自己獨立的Inode號,軟鏈接的文件內容是其所鏈接的另外一個文件或者目錄的路徑。當訪問軟鏈接時,會按照路徑找到軟鏈接所指向的實際目標文件。舉個例子 軟鏈接和Windows系統下的快捷方式十分類似。
命令格式:ln -s filename [linkname]
使用”ls -l ”令查看文件長格式時 第一位顯示為“l”的文件為軟鏈接文件。軟鏈接的文件內容就是引用文件的名稱。
[root@wang ~]19:57# ll /tmp/testdir/
總用量 0
drwxr-xr-x. 2 root root 6 10月 20 19:31 wang
drwxr-xr-x. 2 root root 6 10月 20 15:30 zz
lrwxrwxrwx. 1 root root 15 10月 20 15:31 zz.1nk -> /tmp/testdir/zz
軟鏈接的優點
-
可以對目錄創建軟鏈接
-
可以跨分區使用
軟鏈接的缺點 -
鏈接文件的位置或者目標文件的位置發生改變時,軟鏈接可能會失效。
演示
創建一個指向 /tmp/testdir/test 的鏈接接文件 slink
[root@wang ~]20:18# mkdir /tmp/testdir
[root@wang ~]20:19# touch /tmp/testdir/test
[root@wang ~]20:19# ln -s /tmp/testdir/test /tmp/testdir/slink使用ls -li /tmp/testdir/ 查看會發現新創建的軟鏈接文件slink的inode:4323463而原文件test的inode:4323457
使用ln /tmp/testdir/test /tmp/testdir/hlink創建一個/tmp/testdir/test 的硬鏈接文件 hlink
使用ls -li /tmp/testdir/查看會發現新創建的硬鏈接文件hlink和原文件test的inode相同都是4323457,屬主、屬組權限相同同時鏈接數變成了2
使用rm /tmp/testdir/test刪除原文件test后,再次使用ls -li /tmp/testdir/查看會發現軟連接slink已經失效,硬鏈接文件鏈接數減少了一個。
2016-10-20 20:54:36
原創文章,作者:M21-13-王振中,如若轉載,請注明出處:http://www.www58058.com/53258