有谁知道 Unix 何时支持文件和目录的出生/创建时间戳?如果可能的话,当第一个文件管理器(GUI)默认为用户显示它时。
与 Windows、类 Unix 和 Linux 进行比较:
我从实践经验中知道,从 Windows XP(2001 年)开始,Windows 文件管理器(GUI)中就显示目录和文件。
文件 Finder 1.0 中的 System 0.97(Macintosh 系统软件)(1984 年)。对于目录我不再知道了。
iOS 11(2017 年)集成了“文件”应用程序,并默认为用户显示目录和文件的出生/创建时间。
例如一些 Linux 发行版。
Dolphin 中的 KDE(自 2019 年起)。
Nemo 中的 Linux Mint(自 2018 年起)。
这些操作系统直到今天还没有。
Android 11(2020 年)
许多面向最终用户的流行 Linux 发行版,例如 Fedora 33(2020 年)、Ubuntu 20.10(2020 年)。
答案1
对出生时间戳的完全支持包含三个组成部分:
- 文件系统必须能够存储它们;
- 操作系统必须提供对它们的访问;
- 最终用户软件必须显示它们。
在 Unix 世界中,似乎至少有 3 个 POSIX 风格的文件系统支持出生时间戳:
- UFS2,自 2003 年以来 FreeBSD 中的默认设置;
- Veritas 文件系统,又名 HP-UX 上的 VxFS 和 JFS,至少从 1996 年起就在 HP-UX 中使用(但我不确定它当时是否支持出生时间戳);
- ZFS,自 2006 年起在 Solaris 上可用。
(支持出生时间戳的非 POSIX 风格文件系统包括 FAT 和 ISO-9660;虽然 Unix 长期以来一直支持这些文件系统,但我在这里忽略它们,因为它们不会对核心 API 产生太大影响。)
据我所知,HP-UX 和 Solaris 都没有提供stat
-style 系统调用来提供对出生时间戳的访问。 FreeBSD 提供st_birthtime
了struct stat
从 FreeBSD 5.1 开始;它是stat(1)
从 5.1 开始,实现也可以证明这一点。