[Linux] DEBUGFS查看檔案的建立時間 & [Mac] GetFileInfo

一般來說用 ls 就可以查到檔案的建立時間,或是使用 stat 指令也可以查到,那到底為什麼還要特地使用別的指令來檢查呢?
有個小原因就是這兩個指令查到的時間都不一定是完全正確的,因為可以修改,
在Linux的環境中,時間大概有下面4種類型

  • ctime: Shows file change time.

    ctime會根據檔案的內容、所有權、屬性被變更時而改變。

  • atime: Shows file access time.

  • mtime: Shows file modification time.
  • crtime: Shows file creation time.

這4種分別就是代表建立(Create/Birth)、修改(Modify/mtime)、存取(Access/atime)及變更(Change/ctime),但建立日期在Linux上並沒有被儲存起來(應該說在檔案系統上沒有辦法很直觀的看到),因此,可以查到和修改的,就只有後面的三種類型,這三種中的修改(mtime)和存取(atime)日期可以用 touch 指令來改變,而crtime就比較難以變更。

使用DEBUGFS來查檔案的正確建立時間:

可以用 stat 指令來查出該檔案在inode表上的位置值,

再來是確認檔案所在的裝置位子,如果不確定檔案在哪個裝置上,可以用以下指令,

再把查到的inode值和位置資料輸入到以下的指令中,假設查到的inode值是54692346

就可以找到檔案的crtime了,

另外DEBUGFS是Linux上用來查看 Ext File System 用的指令,所以在Mac上就沒有這樣的指令可以用,反倒是Mac上的 GetFileInfo 可以使用而且比Linux容易多了呢。

Reference

Ubuntu 用指令變更及檢視檔案修改日期

DEBUGFS Command – Show File Creation Times in Linux

OSX – How to get the creation & modification time of a file from the command line

Add a Comment