Skip to Content

硬式與軟式連結

硬式與軟式連結
檔案的連結主要的作用是讓檔案有其他的分身,而連結有分為 I. 硬式連結 Hard Link 以及 II. 符號連結(Symbol link)也就是所謂的Soft Link

  1. 硬式連結Hard Link
  2. 指令: #ln source target
    所有的 Hard Link 都不會佔用 inode ,與原始檔共用 inode.而他的 permission 與 source 的設定共用
    硬式連結有以下兩個限制:

    1. 檔案與硬式連結無法跨分割磁區,因為共用inode.
    2. 硬式連結無法指向目錄.

     
    Ex: 建立硬式連結Hard Link

    [root@benjr ~]# touch source
    [root@benjr ~]# ll -i
    213043  -rw-rw-rw-   1  root  root  10 jan 6 20:06 source

    [root@benjr ~]# ln  source target
    [root@benjr ~]#
    ll -i
    213043  -rw-rw-rw-   2  root  root  10 jan 6 20:06 source
    213043  -rw-rw-rw-   2  root  root  6  jan 6  20:11 target

    • source , target 的 inode 同為 213043 表示指向相同的 inode
    • 其中的 2 表示為 HardLink 數,2 表示有 1 個 Link 以及 1 個 source , 3 表示有 2 個 Link 以及 1 個 source ,以此類推當原先檔案刪除,並不會引響到其他的 hardlink.
    [root@benjr ~]# chmod 777 source(or target)
    [root@benjr ~]# ll
    -rwxrwxrwx   1  root  root  10 jan 6 20:06 source
    -rwxrwxrwx   2  root  root  6  jan 6  20:11 target

    使用 chmod 後不管是 source 或 target 其權限都會同時更動.

  3. 符號連結(Symbol link)也就是所謂的Soft Link
  4. 指令:ln -s source target
    所有的Soft Link都會佔用一個inode,而檔案標示會有一個l(小寫的L),而他的permission最終會指向原始的檔案設定,不管Link的設定為何,總之若要修改或執行檔案一定要有source的權限

    Ex: 建立符號連結Symbol link(Soft Link)

    [root@benjr ~]# ll -i
    213043   -rw-rw-r--   1  root  root  10 jan 6 20:06 source
    [root@benjr ~]# ln -s source target
    [root@benjr ~]# ll -i
    213043   -rw-rw-r--   1  root  root  10 jan 6 20:06 source
    213042    lrwxrwxrwx  1  root  root  6  jan 6  20:11 target -> source
    • l (小寫的L)表示為 softlink
    • 檔案大小為原始檔的路徑+名稱個數;source六個字元        
    • target -> source指出檔案位址    
    • source , target 的 inode 不同
    [root@benjr ~]# chmod 444  target
    [root@benjr ~]#
    ll
    -r--r--r--   1  root  root  10 jan 6 20:06 source
    lrwxrwxrwx   2  root  root   6  jan 6 20:11 target -> source

    使用chmod後 source其權限不會更動,只有 target 的權限會改變,雖然target的權限為全開,但是沒有source的權限還是無法執行或編譯,當原先檔案刪除,並會引響到其他的 softlink.因為他只儲存原始檔的名稱.