1. 程式人生 > >檔案,資料夾和inode表的關係

檔案,資料夾和inode表的關係

檔案資料包括兩部分內容;元資料和資料兩部分,存放分別在元資料空間 和資料空間,

0 每個新檔案都會系統分配一個iNode節點編號 相當於人的×××號 在一個分割槽內具有唯一性,如果inode 編號不一樣 所佔的空間的指標指向的資料也不一樣
比如 在 /home 建立大小 一個G的檔案 f1 把 f1檔案複製 當前資料夾 f2
實驗結果發現 這兩個檔案一共佔用了 2G的空間大小 意味著 f1的指標和f2的所指的指標指向的資料空間不是一個 如果是兩個檔案的指標指向同一個資料空間 那麼 兩個資料的資料所佔空間大小為1G ,但是實驗結果相反佔用了 2G的空間.
1 mode 許可權
2ownership 所屬 使用者 所屬組
3時間戳 資訊(讀時間atime ,修改時間mtime,屬性修改時jian間ctime)
4直接指標12個,一個指標是 4K的資料,由於直接指標因為能指定的資料較小
所以引入間接指標的概念間接指標包含了 一級指標 二級指標 三級指標 ..
把4個位元組為一個單位那麼這個檔案的資料空間的一個最小的塊單位4k的資料空間可以分成1024份,一級指標的資料空間大小位10244k=4m,以及類推 二級指標可以制定的資料空間大小位4m

1024=4G,三級指標指定資料空間大小 4T
5size 檔案資料所佔空間大小
6連結數 有幾個檔案指向這個inode的資料空間
實際上 資料夾也是一種特殊的檔案 ,檔案元資料部分和普通檔案沒差異
在資料空間存放的內容是一條一條的 檔名>>>inode節點編碼 有很多條這樣的資料組成,我們刪除檔案其實是把所在資料夾這個特殊的檔案內容刪除某條記錄而已
刪除,這個時候由於檔名和linode就在資料夾內容空間不存在 ,qu系統認為 沒有名只有 inode資料是可用空間,但是這個時候資料還是實際存在的
如果是硬連結,就是在同一個分割槽內 一個檔案指向另一個檔案共用資料空間
在所在的資料夾內容列表有 兩條資料 sqiud 1001
squid-link 1001
就算刪除其中任意一條 資料 另外一個檔案都可以訪問,因為另外一個檔名指向了inode節點 到元資料列表中找所在的節點inode資料就可以
硬連結智慧是 檔案 對檔案 不支援 資料夾 當一個inode的link數為0 則 這個檔案被刪除了
一個檔案做了1硬連結 那麼連結數為2
目錄的連結數最少為2
軟連結是一個檔案指向另外一個檔案只不過是 垮分割槽的由於 不同分割槽的inode 編號不通用 就相當於 兩個 檔案的內容存放的是相對路徑
軟連結是通過相對路徑的辦法 找到不同分割槽的資料的
如果刪除原始檔案 ,那麼原始檔案 軟連結就找不到 資原始檔了 因為軟連結資料空間是記錄的相對路徑並沒有寫指向的 inode編號 ,所以 不會增加原始檔的連結數(links)
相反 硬連結 不同名字指向同一個 inode 在同一個分割槽中,連結數為2

建立檔案
touch
-a 修改檔案的讀時間[[email protected] /home/wang]#stat f1
File: ‘f1’
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 806h/2054d Inode: 114 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-12-16 13:25:30.766286983 +0800
Modify: 2018-12-16 13:25:30.766286983 +0800
Change: 2018-12-16 13:25:31.118287001 +0800

沒修改之前的
現在把讀時間修改成2025-12-11 08:30:30

touch -a -t 201812110830.30 f1
檢視檔案時間
stat f1
File: ‘f1’
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 806h/2054d Inode: 114 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2018-12-11 08:30:30.000000000 +0800
Modify: 2018-12-16 13:25:30.766286983 +0800
Change: 2018-16 13:29:58.326300564 +0800
Birth: -
讀時間 已經修改成 需要的時間
-m 制定檔案更改資料內容時間
-t 格式為 [[CC]YY]MMDDhhmm[.ss]
如果要cc 那麼 yy必須 寫出來

cp 源 目標
cp 源... 目錄
1當源是檔案 目標不存在 建立設定的名字 內容放在該檔案裡
2當源是檔案 目標存在為f1 檔案 內容覆蓋 名字不變
3當源是檔案f1是 目標是dir 目錄在dir 目錄檔案下建立f1 同名檔案
4當源是多個檔案 目標是不存在 不能完成建立
5當源是多個檔案 目標是一個檔案 也不能完成複製功能
6當源是多檔案 目標是目錄 把檔案放在目標目錄下面
7當源是多個目錄 目標不存在 不能執行復制
8當源是目錄 目標是檔案 不能執行復制
9當源是多個目錄 目標是一個目錄 把源目錄目標目錄放到下邊
10當源是多個目錄 目標不存在 建立目標目錄把多個目錄拷貝到這個目錄下面
11當源是一個目錄 目標不存在 就相當於 複製裡面的內容把目錄的名字修改了

cp
-t 把源 和目標對調位置
-v 看到 複製的過程
--preserv
ownership 所有者資訊
mode 複製許可權資訊
context 複製內容資訊
timestamp 複製檔案的時間資訊 讀時間 修改時間 狀態更改時間
all 複製所有
-R 遞迴複製 深入資料夾裡面

-d 複製連結名


‘’ 單引號 不認識變數也不認識命令
“” 雙引號 認識 變數 不認識命令
` 反單引號 認識命令和變數<br/>設定 一個 rm的 別名 <br/>首先 把在/date 目錄下面見一個隨機的時間資料夾<br/>mkdir -p /date/date +%s這裡用反單引號<br/>mv -t /date/date +%s移動檔案到隨機生成的目錄 這個命令還沒制定 刪除哪個檔案 因為後面的檔案由 rm 後面新增<br/>alias rm="mkdir -p /date/date +%s;mv -t /date/date +%s`"
快捷鍵就生成了
如果想去掉這個快捷鍵 unalias rm
這個快捷鍵長期生效 放在~/bashr 裡面追加sourcce ~.bashr生效 就可以呼叫