總結軟連接和硬連接區別,並用實例操作說明


軟鏈接
   ln -s 原文件  目標文件
   特征:1、相當於windows的快捷方式
           2、符號鏈接,所以鏈接文件大小都很小
           3、當運行軟連接的時候,會根據鏈接指向找到真正的文件,然后執行
                   4、所有鏈接文件的權限都是777,而真正的權限是由指向的那個文件決定的
                   5、原文件丟失后,軟鏈接無法訪問,會報找不到的錯誤
                   6、ls -al ,軟連接后面箭頭執行的時源文件
  
硬鏈接
   ln 源文件 目標文件
   特征:1、原文件和鏈接文件的屬性完全一樣
      2、鏈接文件和源文件的關系類似於:復制+同步更新
      3、當原文件丟失,硬鏈接文件還可以訪問
      4、不能跨分區,不能針對目錄使用
      5、原理:原文件和硬鏈接文件的節點相同的,1個文件名只能對應1個節點號。但是1個節點號能對應多個文件名。所以,他們的屬性完全相同,並且修改了其中一個的內容另外一個也會跟着修改。
 
實例如下:
創建a文件的軟連接b,並查看a和軟鏈接文件a.link的inodes、權限、大小,如下:
[root@VM_0_15_centos ~]# ln -s a a.link
[root@VM_0_15_centos ~]# ll -i
total 6728
394681 -rw-r--r-- 1 root root 6888896 Nov 10 21:42 a
394522 lrwxrwxrwx 1 root root       1 Nov 10 21:45 a.link -> a
從命令的執行結果上看,結論如下:
1、a文件的inode號為394681,a.link文件inode為394522,inode號不一致。
2、符號鏈接,所以鏈接文件大小都很小。a.link大小為1bit,而a文件的大小為6.6M。
3、所有a.link文件的權限都是777,而真正的權限是由指向的那個文件決定的
 
 
刪除文件a,訪問a.link鏈接文件
[root@VM_0_15_centos ~]# mv a a.bak
[root@VM_0_15_centos ~]# cat a.link
cat: a.link: No such file or directory
總結:原文件丟失后,軟鏈接無法訪問,會報找不到文件的錯誤
 
創建a文件的硬鏈接a.hard,查看a和軟鏈接文件a.link的inodes、權限、大小等元數據。
[root@VM_0_15_centos ~]# ln a a.hard
[root@VM_0_15_centos ~]# ll -i
total 13456
394681 -rw-r--r-- 3 root root 6888896 Nov 10 21:42 a
394681 -rw-r--r-- 3 root root 6888896 Nov 10 21:42 a.hard
394522 lrwxrwxrwx 1 root root       1 Nov 10 21:45 a.link -> a
總結:原文件和鏈接文件的屬性完全一樣,元數據完全一樣。
 
刪除a文件后,硬鏈接文件a.hard的情況
[root@VM_0_15_centos ~]# mv a a.bak
[root@VM_0_15_centos ~]# ll -i
total 13456
394699 -rw-r--r-- 2 root root 6888896 Nov 10 22:39 a.bak
394699 -rw-r--r-- 2 root root 6888896 Nov 10 22:39 a.hard
394522 lrwxrwxrwx 1 root root       1 Nov 10 21:45 a.link -> a
[root@VM_0_15_centos ~]# tail a.hard
999991
999992
999993
999994
999995
999996
999997
999998
999999
1000000
總結:當原文件丟失,硬鏈接文件還可以訪問。
[root@VM_0_15_centos ~]# echo "1">>a.bak
[root@VM_0_15_centos ~]# tail -1 a.hard
1
總結:鏈接文件和源文件的關系類似於:復制+同步更新
 
綜合以上實例,軟連接和硬鏈接的區別總結如下:
軟鏈接和硬鏈接的區別:在linux的文件系統中,保存在磁盤分區中的文件不管事什么類型都給它分配一個編號,稱為索引節點號inode。具體如下:
 1、軟連接,其實就是新建立一個文件,這個文件就是專門用來指向別的文件的。軟連接的inode跟原文件的inode是不一致的
 2、硬鏈接是不會建立inode。他只是在文件原里的inode link count域再增加1而已,也因此硬鏈接是不可以跨越文件系統的。
 3、硬鏈接是一個文件別名。
 4、軟鏈接可以跨文件系統,硬鏈接不可以
 5、軟鏈接可以對一個不存在的文件名進行鏈接,硬鏈接不行。
 6、軟鏈接可以對目錄進行連接,硬連接不可以
 7、兩種鏈接都可以通過ln來創建,ln默認創建的是硬鏈接
 8、使用-s開關可以創建軟鏈接。
 
 


免責聲明!

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



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