Linux系統中,軟鏈接文件和硬鏈接文件的區別


1. Linux系統中,什么是軟鏈接文件?

  軟鏈接類似於windows系統中的快捷方式。軟鏈接文件其實是將inode指向源文件的block,當我們訪問這個軟鏈接文件時,其實訪問的是源文件本身。那么當我們對一個文件創建多個軟鏈接,其實就是多個inode指向同一個block。當我們刪除軟鏈接文件時,其實只是刪除了一個inode指向,並不會對源文件源文件造成影響,若源文件被刪除,軟鏈接文件也會失效。

  如何創建軟鏈接文件

[root@oracle12c tmp]# ll
total 208
-rw-r--r-- 1 root root 209369 Nov  2 23:34 data.txt
[root@oracle12c tmp]# ln -s data.txt data_soft.txt
[root@oracle12c tmp]# ll -hi
total 208K
33596166 lrwxrwxrwx 1 root root    8 Nov  2 23:39 data_soft.txt -> data.txt
33554504 -rw-r--r-- 1 root root 205K Nov  2 23:34 data.txt

  特點:

    1. 軟鏈接文件與源文件文件類型和權限不同

    2. 軟鏈接文件與源文件大小不一致

    3. 軟鏈接文件與源文件的inode號不相同

    4. 軟鏈接文件對應的源文件若是被刪除,則該軟鏈接文件失效

    5. 最好以絕對路徑創建軟鏈接文件

2. Linux系統中,什么是硬鏈接文件?

  硬鏈接文件類似於一個超市的多個門,硬鏈接其實是同一個文件使用了多個別名,他們具有共同的 inode。

  如何創建硬鏈接文件 

[root@oracle12c tmp]# ln data.txt data_hard.txt
[root@oracle12c tmp]# ll -hi
total 416K
33554504 -rw-r--r-- 2 root root 205K Nov  2 23:34 data_hard.txt
33596166 lrwxrwxrwx 1 root root    8 Nov  2 23:39 data_soft.txt -> data.txt
33554504 -rw-r--r-- 2 root root 205K Nov  2 23:34 data.txt

  特點:

    1. 硬鏈接文件與源文件inode號相同,相反inode號相同的文件不一定是互為硬鏈接文件,前提是在同一個分區內

    2. 硬鏈接文件對應的源文件被刪除后,硬鏈接文件仍然有效

    3. 操作系統中,目錄不能創建硬鏈接

    4. 硬鏈接可以防止誤刪除,但是不能防止誤修改。如果一個文件的硬鏈接數為1,刪除后,將會徹底被刪除。

    5. 硬鏈接文件與源文件的文件類型、權限、大小都相同

案例

  當刪除掉源文件后,軟鏈接文件和硬鏈接文件的區別

[root@oracle12c tmp]# rm -f data.txt 
[root@oracle12c tmp]# ll -hi
total 208K
33554504 -rw-r--r-- 1 root root 205K Nov  2 23:34 data_hard.txt
33596166 lrwxrwxrwx 1 root root    8 Nov  2 23:39 data_soft.txt -> data.txt
[root@oracle12c tmp]# tail  data_hard.txt 
│   ├── vars
│   └── version-groups.conf
├── yum.conf
└── yum.repos.d
    ├── backup
    │   └── redhat.repo
    ├── local.repo
    └── redhat.repo

801 directories, 3021 files
[root@oracle12c tmp]# tail  data_soft.txt 
tail: cannot open ‘data_soft.txt’ for reading: No such file or directory

   當源文件被刪除,軟鏈接文件失效,硬鏈接文件仍然正常訪問。


免責聲明!

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



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