LINUX 硬連線和軟連線
在瞭解了EXT2的構架後,我們來了解一下硬連結是什麼:
說白了一個檔案都有一個Inode和相應目錄下的記錄項,如果我們建立一個硬連線實際上是在目錄下建立一個新的記錄項
我們知道記錄項中包含了 Inode的編號,新的記錄項實際也是指向原有的Inode
我們來考慮如下:
gaopeng@bogon:~/stu/part3$ ln testkl testkl1
gaopeng@bogon:~/stu/part3$ stat testkl
File: ‘testkl’
Size: 8861 Blocks: 40 IO Block: 4096 regular file
Device: 1bh/27d Inode: 396425 Links: 2
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ gaopeng) Gid: ( 1000/ gaopeng)
Access: 2016-01-25 12:26:09.749519495 +0800
Modify: 2016-01-25 11:16:42.721510371 +0800
Change: 2016-01-25 12:26:22.909519524 +0800
Birth: -
gaopeng@bogon:~/stu/part3$ stat testkl1
File: ‘testkl1’
Size: 8861 Blocks: 40 IO Block: 4096 regular file
Device: 1bh/27d Inode: 396425 Links: 2
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ gaopeng) Gid: ( 1000/ gaopeng)
Access: 2016-01-25 12:26:09.749519495 +0800
Modify: 2016-01-25 11:16:42.721510371 +0800
Change: 2016-01-25 12:26:22.909519524 +0800
Birth: -
注意這裡的 Inode: 396425硬連結和原有的檔案是一致的。那麼我們就考慮他們實際上透過一個Inode來指向它實際的資料塊
如果要刪除一個檔案實際上要等到記錄項都刪除後才會刪除。
如下:
gaopeng@bogon:~/stu/part3$ ls -l testkl
-rwxrwxr-x 2 gaopeng gaopeng 8861 Jan 25 11:16 testkl
gaopeng@bogon:~/stu/part3$ ls -l testkl1
-rwxrwxr-x 2 gaopeng gaopeng 8861 Jan 25 11:16 testkl1
可以看到這裡的testkl 和已經連線testkl1 的硬連線 硬連線計數都是2
如果刪除一份原有的testkl
gaopeng@bogon:~/stu/part3$ rm -rf testkl
gaopeng@bogon:~/stu/part3$ ls -l testkl1
-rwxrwxr-x 1 gaopeng gaopeng 8861 Jan 25 11:16 testkl1
而刪除實際上就是刪除記錄項和硬連線計數-1
發現硬連線計數已經為1了,如果這裡硬連線計數為0這個檔案才是完全刪除了。
如果存在任何一個硬連線存在換句話說一個記錄項存在,檔案就存在。
對於硬連線,除了RM 使用unlink 也可以達到rm 的目的,實際上rm 也是呼叫了unlink 函式
而軟連線 就是一個快捷方式,並不需要在目錄中有記錄項,如果刪除檔案
連線就失效了,硬連線是如果存在一個連線檔案及存在。
1、硬連線不允許跨檔案系統
2、硬連線不允許目錄,避免死迴圈
說白了一個檔案都有一個Inode和相應目錄下的記錄項,如果我們建立一個硬連線實際上是在目錄下建立一個新的記錄項
我們知道記錄項中包含了 Inode的編號,新的記錄項實際也是指向原有的Inode
我們來考慮如下:
gaopeng@bogon:~/stu/part3$ ln testkl testkl1
gaopeng@bogon:~/stu/part3$ stat testkl
File: ‘testkl’
Size: 8861 Blocks: 40 IO Block: 4096 regular file
Device: 1bh/27d Inode: 396425 Links: 2
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ gaopeng) Gid: ( 1000/ gaopeng)
Access: 2016-01-25 12:26:09.749519495 +0800
Modify: 2016-01-25 11:16:42.721510371 +0800
Change: 2016-01-25 12:26:22.909519524 +0800
Birth: -
gaopeng@bogon:~/stu/part3$ stat testkl1
File: ‘testkl1’
Size: 8861 Blocks: 40 IO Block: 4096 regular file
Device: 1bh/27d Inode: 396425 Links: 2
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ gaopeng) Gid: ( 1000/ gaopeng)
Access: 2016-01-25 12:26:09.749519495 +0800
Modify: 2016-01-25 11:16:42.721510371 +0800
Change: 2016-01-25 12:26:22.909519524 +0800
Birth: -
注意這裡的 Inode: 396425硬連結和原有的檔案是一致的。那麼我們就考慮他們實際上透過一個Inode來指向它實際的資料塊
如果要刪除一個檔案實際上要等到記錄項都刪除後才會刪除。
如下:
gaopeng@bogon:~/stu/part3$ ls -l testkl
-rwxrwxr-x 2 gaopeng gaopeng 8861 Jan 25 11:16 testkl
gaopeng@bogon:~/stu/part3$ ls -l testkl1
-rwxrwxr-x 2 gaopeng gaopeng 8861 Jan 25 11:16 testkl1
可以看到這裡的testkl 和已經連線testkl1 的硬連線 硬連線計數都是2
如果刪除一份原有的testkl
gaopeng@bogon:~/stu/part3$ rm -rf testkl
gaopeng@bogon:~/stu/part3$ ls -l testkl1
-rwxrwxr-x 1 gaopeng gaopeng 8861 Jan 25 11:16 testkl1
而刪除實際上就是刪除記錄項和硬連線計數-1
發現硬連線計數已經為1了,如果這裡硬連線計數為0這個檔案才是完全刪除了。
如果存在任何一個硬連線存在換句話說一個記錄項存在,檔案就存在。
對於硬連線,除了RM 使用unlink 也可以達到rm 的目的,實際上rm 也是呼叫了unlink 函式
而軟連線 就是一個快捷方式,並不需要在目錄中有記錄項,如果刪除檔案
連線就失效了,硬連線是如果存在一個連線檔案及存在。
1、硬連線不允許跨檔案系統
2、硬連線不允許目錄,避免死迴圈
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-1982562/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux軟連線和硬連結Linux
- linux 的軟連線與硬連線Linux
- LINUX ln命令硬連線軟連線詳細解釋Linux
- 軟連線、硬連結 和 i節點(inode)
- Linux硬連結和軟連線有哪些知識點?Linux入門Linux
- scrapy軟連線失效和pip軟連線失效
- Linux軟連結和硬連結Linux
- linux硬連結和軟連結Linux
- 連結檔案 (硬連線 與 符號連線)符號
- Linux(8) —— 硬連結和軟連結Linux
- unix系統當中 軟連線與硬連線的區別(轉)
- 連線和半連線
- 軟連線與硬連結的區別,以及如何刪除軟連結
- 何為軟連線、何為硬連結(含圖解)圖解
- Linux 軟連結和硬連結簡介Linux
- Linux精講——軟連結和硬連結Linux
- Socket連線和Http連線HTTP
- 長連線和短連線
- 左連線和右連線
- 硬連結和軟連結
- sql 內連線和外連線SQL
- linux 建立連線命令 ln -s 軟連結Linux
- linux 軟硬連結Linux
- linux下刪除軟連線Linux
- 深入淺出SQL之左連線、右連線和全連線SQL
- 長連線和短連線的使用
- 連線池和連線數詳解
- http的長連線和短連線HTTP
- Oracle的左連線和右連線Oracle
- 內連線、左連線、右連線
- linux下軟連結與硬連結Linux
- Linux 硬連結與軟連結(zt)Linux
- 軟連結和硬連結詳解
- 在Linux中,什麼是硬連結和軟連結?Linux
- VNC連線軟體下載,VNC連線軟體下載!
- 交叉線和直連線
- 區分socket連線和tcp/ip連線TCP
- 等值連線和自然連線的區別