通過實際操作來辨別softlink和hardlink的區別:
首先我們在/home/下建立了一個文件source.file
[root@wang home]# ll
total 8
-rw-r--r-- 1 root root 26 Dec 6 12:07 source.file
接着分別建立兩種連接:
[root@wang home]# ln source.file hardlink.file ----------------- hardlink
[root@wang home]# ln -s source.file softlink.file ----------------- softlink
建好連接文件之后,我們用ll命令查看一下有什么不一樣的地方:
[root@wang home]# ll
total 20
-rw-r--r-- 2 root root 26 Dec 6 12:07 hardlink.file ----------------- hardlink
lrwxrwxrwx 1 root root 11 Dec 6 12:08 softlink.file -> source.file ----------------- softlink
-rw-r--r-- 2 root root 26 Dec 6 12:07 source.file
我們可以看到軟連接和硬連接在四個地方不同:
1,文件類別上,hardlink顯示的是正常的普通文件,而softlink生成的文件顯示的是一個連接文件,並且操作權限也不一樣;
2,上面輸出的第二列也就是連接數不一樣;
3,文件的大小不一樣;hardlink生成的文件和原文件一模一樣,而softlink只是一個符號連接。
4,softlink生成的文件有個指向-〉原文件的標志
接着我們用ll -i命令看一下,-i能顯示出文件的inode號
[root@wang home]# ll -i
total 20
652046 -rw-r--r-- 2 root root 26 Dec 6 12:07 hardlink.file
651589 lrwxrwxrwx 1 root root 11 Dec 6 12:08 softlink.file -> source.file
652046 -rw-r--r-- 2 root root 26 Dec 6 12:07 source.file
可以看到hardlink生成的文件和原文件的inode一樣,而連接數是2了;硬連接指向的是節點(inode),而軟連接指向的是路徑(path);所以當刪除原文件,hardlink.file能正常使用而softlink.file則提示出錯
總結:
(1)由於不同的分區會有相同的inode及硬連接的特殊性和文件系統的可卸載性,導致硬連接不容許跨文件系統(分區)!而 soft link 具有完整的 pathname,所以他可以跨越不同文件系統。
(2)硬連接不會建產新的inode,硬連接不管有多少個,都指向的是同一個inode節點,只是新建一個hard link會把結點連接數增加,只要結點的連接數不是0,文件就一直存在,不管你刪除 的是源文件還是連接的文件。只要有一個存在,文件就存在(其實也不分什么源文件連接文件的,因為他們指向都是同一個 inode節點)。當你修改源文件或者連接文件任何一個的時候,其他的文件都會做同步的修改 。軟鏈接不直接使用inode節點號作為文件指針,而是使用文件路徑名作為指針。所以刪除連接文件對源文件無影響,但是刪除源文件,連接文件就會找不到要指向的文件。軟鏈接有自己的inode,並在磁盤上有一小片空間存放路徑名.
(3)軟連接可以對一個不存在的文件名進行連接。
(4)軟連接可以對目錄進行連接。
ln -s source dist # 建立軟連接
ln source dist # 建立硬連接