任何人可以告訴我爲什麼unix不存儲文件創建時間? 因爲它存儲修改時間,更改時間和訪問時間,而不是創建時間,它是如此大的負擔嗎? 有什麼特別的理由嗎?unix中的文件創建時間
還是通過使用某種語言(任何編程語言)和一些系統調用我們可以得到一些文件創建時間?
任何人可以告訴我爲什麼unix不存儲文件創建時間? 因爲它存儲修改時間,更改時間和訪問時間,而不是創建時間,它是如此大的負擔嗎? 有什麼特別的理由嗎?unix中的文件創建時間
還是通過使用某種語言(任何編程語言)和一些系統調用我們可以得到一些文件創建時間?
我相信這樣的信息是inode存儲的責任,因此也是文件系統本身的限制。一個快速的谷歌搜索,事實證明ext4文件系統已經在其inode中爲該文件屬性添加了存儲。
由於WhiteboardDev筆記,許多現代文件系統做商店文件的創建時間,但它不是標準的SO訪問細節的方法有所不同。
至於具體的原因,它基本上是歷史性的。實際上,是當許多這些API第一次被定義時,在70年代存儲太多元數據的一個負擔。 (值得一提的是,當前的文件系統並不總是更新「上次訪問時間」,因爲那是負擔......)
嗨斯蒂芬你可以請鏈接到不同的方法來獲取創建日期,這將是真正的真棒!我目前正在爲他們進行搜索。編輯:啊我認爲@ jlliagre列出他們是真的嗎? http://stackoverflow.com/a/10172234/1828637 – Noitidart 2015-05-21 09:46:18
統計將返回修改變化st_ctime 一旦文件被修改或它的主人改變了它的出處變化因此,所有的賭注都關閉的內容 DOS/NT是靠不住在這點上,你可以完全回收站的文件,它重寫它是一個命令行shell和創作的時間內全部不會改變
相關的元數據使用unix中的文件不能保證原始創建時間,但會保留最新版本的創建時間。如果您需要版本的文件,那麼該版本應該明確外部或內部
場st_ctime改變通過寫或通過設置inode信息 (即所有者,組,鏈接數,模式等)。
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
嗨帕迪,你的意思是說,'st_ctime',「上次狀態改變的時間」,是獲得生育時間的可靠方法嗎? – Noitidart 2016-09-07 11:14:07
的主要原因Unix的不存儲創建時間是這樣的信息是有爭議的,因爲有一個什麼樣的文件創建日期應設置爲標準定義。
有些人希望創建時間來表示創建數據的時間(例如:jpeg照片被拍攝),從而在從備份複製或恢復文件時保留該時間。另一方面,一些其他人更喜歡創建這個文件系統對象(例如:inode)的時間。
前者完成後通常出現在文件內部(例如:EXIF)。
後者正是最近使用的文件系統提供:
請注意,沒有協議來命名用於存儲此創建時間的字段。
嗨jilliagre這是真棒謝謝分享!自從這篇文章已經過去幾年了,我想知道你是否可以用任何新信息更新它,比如你知道HFS +的一種方法,以及是否還有其他文件系統?謝謝!! – Noitidart 2015-05-21 09:56:11
如果inode數據(如所有者,組模式等)未更改,則可以使用「ctime」字段(如果存在)。 – 2012-04-16 08:58:44