歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux文件屬性詳細圖解

Linux文件屬性詳細圖解

日期:2017/2/28 14:55:23   编辑:Linux教程

1、 Linux 文件屬性概說;

Linux 文件或目錄的屬性主要包括:文件或目錄的節點、種類、權限模式、鏈接數量、所歸屬的用戶和用戶組、最近訪問或修改的時間等內容;

[root@localhost ~]# ls -lih
總計 104K

2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
2408830 drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.17
2408260 drwxr-xr-x 2 root root 4.0K 04-21 22:15 mydir
2408258 lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt -> sun.txt
2408263 -rw-r--r-- 2 root root 11 04-20 14:17 sun002.txt
2408263 -rw-r--r-- 2 root root 11 04-20 14:17 sun.txt

解釋:
第一字段:inode
第二字段:文件種類和權限;
第三字段: 硬鏈接個數;
第四字段: 屬主;
第五字段:所歸屬的組;
第六字段:文件或目錄的大小;
第七字段和第八字段:最後訪問或修改時間;
第九字段:文件名或目錄名

我們以lsfile.sh為例:

2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

inode 的值是:2408949
文件類型:文件類型是-,表示這是一個普通文件; 關於文件的類型,請參考:《Linux 文件類型和文件擴展》
文件權限:文件權限是rwxr-xr-x ,表示文件屬主可讀、可寫、可執行,文件所歸屬的用戶組可讀可執行,其它用戶可讀可執行;
硬鏈接個數: lsfile.sh這個文件沒有硬鏈接;因為數值是1,就是他本身;
文件屬主:也就是這個文件歸哪於哪個用戶 ,它歸於root,也就是第一個root;
文件屬組:也就是說,對於這個文件,它歸屬於哪個用戶組,在這裡是root用戶組;
文件大小:文件大小是7個字節;
訪問可修改時間 :這裡的時間是最後訪問的時間,最後訪問和文件被修改或創建的時間,有時並不是一致的;

當然文檔的屬性不僅僅包括這些,這些是我們最常用的一些屬性。我們把比較重要的說一說,比如文件所歸屬的種類、權限、硬鏈接個數 ... ...

2、 關於inode;


inode 譯成中文就是索引節點。每個存儲設備或存儲設備的分區(存儲設備是硬盤、軟盤、U盤 ... ... )被格式化為文件系統後,應該有兩部份,一部份是inode,另一部份是Block,Block是用來存儲數據用的。而inode呢,就是用來存儲這些數 據的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。inode為每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令, 能通過inode值最快的找到相對應的文件。

做個比喻,比如一本書,存儲設備或分區就相當於這本書,Block相當於書中的每一頁,inode 就相當於這本書前面的目錄,一本書有很多的內容,如果想查找某部份的內容,我們可以先查目錄,通過目錄能最快的找到我們想要看的內容。雖然不太恰當,但還是比較形象。

當我們用ls 查看某個目錄或文件時,如果加上-i 參數,就可以看到inode節點了;比如我們前面所說的例子;

[root@localhost ~]# ls -li lsfile.sh
2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

lsfile.sh 的inode值是 2408949 ; 查看一個文件或目錄的inode,要通過ls 命令的的 -i參數。

2.10 inode 相同的文件是硬鏈接文件;


在Linux 文件系統中,inode值相同的文件是硬鏈接文件,也就是說,不同的文件名,inode可能是相同的,一個inode值可以對應多個文件。理解鏈接文件並不難,看看例子就會了。在Linux中,鏈接文件是通過ln工具來創建的。

2.11 創建硬鏈接,硬鏈接和源文件關系;


用ln 創建文件硬鏈接的語法:

# ln 源文件 目標文件

下面我們舉一個例子,在這個例子中,我們要為sun.txt 創建其硬鏈接sun002.txt。然後看一下sun.txt和sun002.txt的屬性的變化;

[root@localhost ~]# ls -li sun.txt 注:查看sun.txt的屬性;
2408263 -rw-r--r-- 1 root root 29 04-22 21:02 sun.txt 注:這是sun.txt的屬性;

[root@localhost ~]# ln sun.txt sun002.txt 注:我們通過ln 來創建sun.txt的硬鏈接文件sun002.txt

[root@localhost ~]# ls -li sun* 注:我們列一下sun.txt 和sun002.txt

2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt

我們可以看到sun.txt在沒有創建硬鏈接文件sun002.txt的時候,其鏈接個數是1(也就是-rw-r--r--後的那個數值),創建了 硬鏈接sun002.txt創建後,這個值變成了2。也就是說,我們每次為sun.txt創建一個新的硬鏈接文件後,其硬鏈接個數都會增加1。

inode值相同的文件,他們的關系是互為硬鏈接的關系。當我們修改其中一個文件的內容時,互為硬鏈接的文件的內容也會跟著變化。如果我們刪除互為 硬鏈接關系的某個文件時,其它的文件並不受影響。比如我們把sun.txt刪除後,我們還是一樣能看到sun002.txt的內容,並且 sun02.txt仍是存在的。

可以這麼理解,互為硬鏈接關系的文件,他們好象是克隆體,他們的屬性幾乎是完全一樣;

下面的例子,我們把sun.txt刪除,然後我們看一下sun002.txt 是不是能看到其內容。

[root@localhost ~]# rm -rf sun.txt
[root@localhost ~]# more sun002.txt

注意:硬鏈接不能為目錄創建,只有文件才能創建硬鏈接。

2.12 軟鏈接的創建,及軟接與源文件的關系;


創建軟鏈接(也被稱為符號鏈接)的語法;

# ln -s 源文文件或目錄 目標文件或目錄

軟鏈接也叫符號鏈接,他和硬鏈接有所不同,軟鏈接文件只是其源文件的一個標記。當我們刪除了源文件後,鏈接文件不能獨立存在,雖然仍保留文件名,但我們卻不能查看軟鏈接文件的內容了。

[root@localhost ~]# ls -li linuxsir001.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt

[root@localhost ~]# ln -s linuxsir001.txt linuxsir002.txt

[root@localhost ~]# ls -li linuxsir001.txt linuxsir002.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt

解釋

上面的例子,首先我們查看 linuxsir001.txt 的屬性,比如inode 、所屬文件種類、創建或修改時間等... ...我們來對比一下:

首先 對比一下節點:兩個文件的節點不同;
其次 兩個文件的歸屬的種類不同 linuxsir001.txt是-,也就是普通文件,而linuxsir002.txt 是l,它是一個鏈接文件;
第三 兩個文件的讀寫權限不同 linuxsir001.txt 是rw-r--r-- ,而linuxsir002.txt的讀寫權限是 rwxrwxrwx
第三 兩者的硬鏈接個數相同;都是1
第四 兩文件的屬主和所歸屬的用戶組相同;
第五 修改(或訪問、創建)時間不同;

我們還注意到了linuxsir002.txt 後面有一個標記 ->,這表示linuxsir002.txt 是linuxsir001.txt的軟鏈接文件。

值得我們注意的是:當我們修改鏈接文件的內容時,就意味著我們在修改源文件的內容。當然源文件的屬性也會發生改變,鏈接文件的屬性並不會發生變化。當我們把源文件刪除後,鏈接文件只存在一個文件名,因為失去了源文件,所以軟鏈接文件也就不存在了。這一點和硬鏈接是不同的;

[root@localhost ~]# rm -rf linuxsir001.txt  注:刪除linuxsir001.txt
[root@localhost ~]# ls -li linuxsir002.txt  注:查看linuxsir002 的屬性;
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt

[root@localhost ~]# more linuxsir002.txt  注:查看linuxsir002.txt的內容; 
linuxsir002.txt: 沒有那個文件或目錄       注:得到提示,linuxsir002.txt不存在。

上面的例子告訴我們,如果一個鏈接文件失去了源,就意味著他已經不存在了;

我們可以看到軟鏈接文件,其實只是源文件的一個標記,當源文件失去時,他也就是存在了。軟鏈接文件只是占用了inode來存儲軟鏈接文件屬性等信息,但文件存儲是指向源文件的。

軟件鏈接,可以為文件或目錄都適用。無論是軟鏈接還是硬鏈接,都可以用rm來刪除。rm工具是通用的。

Copyright © Linux教程網 All Rights Reserved