Linux下軟連接(softlink)和硬連接(hardlink)的區別


通過實際操作來辨別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           # 建立硬連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM