1. 程式人生 > >文件,文件夾和inode表的關系

文件,文件夾和inode表的關系

acc bash 特殊 現在 不同 源文件 目標 不存在 不支持

文件數據包括兩部分內容;元數據和數據兩部分,存放分別在元數據空間 和數據空間,

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,以及類推 二級指針可以制定的數據空間大小位4m1024=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 修改文件的讀時間[root@localhost /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當源是多個目錄 目標是一個目錄 把源目錄目標目錄放到下邊

  1. 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生效 就可以調用

文件,文件夾和inode表的關系