unix檔案系統 鏈結與檔案

2021-05-02 03:31:48 字數 991 閱讀 7293

說明:以下是在讀小駱駝書《perl 語言入門》第十二章 目錄操作 中「鏈結與檔案」一節(p189-193)中的讀書筆記。

目錄是一種由系統管理的特殊檔案,它基本上是乙份列表。

每份檔案都會儲存在乙個編好號的inode裡,我們可以把它想象成磁碟上的門牌號碼。

ls -l命令,硬鏈結的數量會顯示在許可權標記的右邊。

每個目錄都會有 . 這個專案,它會指回目錄本身的inode。所以任何目錄的鏈結數都至少是2.一般來說,目錄的鏈結數等於子目錄的數量加上2.

鏈結分硬鏈結和軟鏈結(又叫符號鏈結)。

【硬鏈結】

因為硬鏈結的性質,所以在某種程度上可以防止資料的流失(只要inode的鏈結數大於0,資料就還在)。

perl的rename函式可以將檔案搬移到別的目錄裡,但是**和目的地必須在同乙個檔案系統上(同乙個磁碟上),因為rename的原理是基於檔案的 inode 列表。如果跨磁碟搬移檔案,那inode裡的資料就必須重新部署。

目錄不能建立硬鏈結(從檔案系統基於inode的原理很容易理解為什麼。如果可以的話,檔案系統那就亂套了,而且整個系統的效能不知道要低成什麼樣了)

【軟鏈結】

軟鏈結又叫符號鏈結。它是目錄裡的一種特殊專案,用來告訴系統到別的方向找找看。

目錄可以建立軟鏈結。

perl裡面使用readlink可以取得軟鏈結所指向的位置。

硬鏈結和軟鏈結都非常有用。但unix之外的很多系統對此兩者都不支援。

這兩種鏈結都可以用unlink移除,unlink只是從目錄裡移除該檔名的鏈結專案,將它的鏈結數遞減,如有需要再釋放inode。這也是為什麼perl和php中的檔案刪除函式取名為 unlink 的原因。

UNIX檔案系統概述

unix檔案系統是unix系統的心臟部分,提供了層次結構的目錄和檔案。檔案系統將磁碟空間劃分為每1024個位元組一組,稱為塊 block 也有用512位元組為一塊的,如 sco xenix 編號從0到整個磁碟的最大塊數。全部塊可劃分為四個部分,塊0稱為引導塊,檔案系統不用該塊 塊1稱為專用塊,專用塊...

Unix檔案系統(一)

此文著重介紹系統是如何表示目錄的以及pwd命令的編寫。我們都知道unix將磁碟分為三部分 超級塊 superblock 節點表 inode table 以及資料區。超級塊中記錄檔案系統本身的結構資訊。節點表中記錄檔案的屬性,檔案系統中每個檔案在表中都至少有乙個i 節點,表中每個節點的大小相同。資料區...

Unix檔案系統原理簡介

檔案系統在磁碟中大致分為三個區域 1.超級塊 2.i 節點表 3.資料區 1.超級塊 作用是存放檔案系統本身的結構資訊,比如每個區域的大小以及有哪些空餘的磁碟塊資訊 2.i 節點表 儲存檔案的屬性,比如大小以及所有者之類的。每個i 節點結構的大小一致,而且訪問的方式就和陣列類似,比如要訪問i 節點號...