2015-06-24

Ubuntu 用指令找出檔案建立日期

阿舍上次在弄修改檔案日期的時候才發現,原來,除了 BSD 之外,其它的 Unix 或 Linux 系統都沒有直接保留檔案的建立日期,所以,沒辦法用 stat 或 ls 指令來查詢檔案的建立日期,因此,阿舍就很好奇的研究了一下,看看是不是有方法可查到檔案的建立日期哩 ! ... 結果,還是可查的到,只是要多幾個步驟和指令囉 ! ...


阿舍就為了要知道如何查詢檔案的建立日期,所以,就去研究了一下 Linux 的 Inode,因為,每個檔案在建立時,在硬碟上,除了會有一個放檔案內容的地方之外,還會同時建立一個 Inode 來存放檔案的內容和檔名以外的資訊,因此,就可以透過查詢該檔案的 Inode 的建立日期的方式來得知檔案的建立日期哩 !...
用 debugfs 指令執行 stat 指令的畫面

首先,要先取得要檢視的檔案的二項資訊,一個是檔案所在的裝置名稱,以阿舍的arthurtoday.txt 檔案是放在 /home/arthurtoday 這個資料夾下為例,那麼阿舍就可以用下面這一行指令的執行結果得知,阿舍的 arthurtoday.txt 這個檔案是放在 /dev/sda1 這個裝置(檔案系統)上。

$ df -T /home/arthurtoday

接下來,要取得的第二項資訊就是該檔案的 Inode 編號,這個就比較簡單一點,只要用 ls 指令加上 -i 選項和路徑就可以從執行結果的第一行來取得各個檔案的 Inode 編號哩 !

$ ls -li /home/arthurtoday

取到上述的二項檔案的資訊後,再來,就可以透過 debugfs 指令來取得 Inode 的建立日期的資訊,以阿舍取到的裝置位置是 /dev/sda1 和 Inode 編號是 556888 為例,操作指令就是下面這一行。(阿舍要提醒的是,指令中的大於和小於符號是不可省略的哩 ! )

$  sudo debugfs -R 'stat <556888>' /dev/sda1

上面的指令執行後,就可以看到類似上面那張圖的畫面,而畫面裡的 crtime 就是 Inode 的建立日期,原則上來說,也就可以當做是該檔案的建立日期哩 ... 可是阿舍,怎麼會有跑出來的 atime 和 mtime 的日期會比 crtime 的時間早的情形哩 ? .... 這個,就要參考一下阿舍寫的這一篇的說明囉 !




推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁