天天看點

《MacTalk•人生元程式設計》一一1.7 硬連結

本節書摘來自異步社群出版社《mactalk•人生元程式設計》一書中的第1章,第1.7節,作者:池建強,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

基于inode技術,linux允許多個檔案名同時指向一個inode。好處就是,我們可以用不同的檔案名去通路同一個檔案,每次操作對檔案内容的影響會波及所有“副本”,删除掉一個“副本”,不會影響其他檔案。增加一個硬連結檔案,僅僅是inode裡的“links”屬性值加1,删除一個硬連結檔案,屬性值減1。隻有“links”的值為0時,檔案才會被徹底删除,回收其占用的空間。

如何建立一個硬連結檔案?非常簡單:

其中,前者是源檔案,後者是目标檔案。建立完成後,使用stat指令檢視其中之一,就會發現links的值變為2了,用ls -i檢視檔案,你會發現這兩個檔案的inode号是相同的。

如果我們使用vim在同一個緩沖區(buffer)中打開這兩個檔案:

以上指令會在vim中打開兩個視窗,你在操作其中一個檔案時,會發現另一個視窗是同步關聯的。

硬連結的應用場景比較廣泛,比如多人修改同一個檔案、重要檔案備份、檔案更新、節省磁盤空間等。這些友善的特性都源于inode的設計思想。

注意:我們無法為目錄建立硬連結,但是作業系統利用特權偷偷在每個目錄下建立了兩個硬連結,一個是“.”,另一個是“..”。使用ls -ai指令可以看到這兩個硬連結目錄和inode号,前者代表目前目錄,後者代表目前目錄的父級目錄。

硬連結不建立inode,是以無法跨檔案系統,這一點可以由軟連結實作。

繼續閱讀