将文件的修改时间更改为未来的用例可能是什么?

将文件的修改时间更改为未来的用例可能是什么?

我正在阅读有关 UNIX(特别是 OS X Mavericks)man的页面ls。这引起了我的兴趣:

如果文件的修改时间在过去或将来超过 6 个月,则将显示上次修改的年份来代替小时和分钟字段。

为什么有人会把修改时间设置为未来呢?

答案1

这一切都取决于参考点。也许不是文件的修改时间是未来的,也许是查看文件的用户生活在过去?

否则,文件系统可用于存储任意数据,并且文件可以具有任意属性(例如在xattrOS X 上),因此,也许有人想在文件系统中存储类似日历的数据,并通过修改时间属性表示事件?

答案2

用户可以自由地将文件的修改时间设置为任何日期(至少在一个很大的范围内,通常是1901年到2038年)。未来的日期可能是由于用户的突发奇想或输入错误造成的。未来的日期也可能是文件系统损坏的结果。

然而,在几乎所有具体情况下,未来的日期都是时钟设置为错误日期的结果,无论是在写入文件的计算机上还是在您正在查看文件的计算机上。

特别是,在使用 NFS 或 Samba 等协议共享文件的网络上,经常会看到带有今天日期而不是时间的文件,但计算机之间的时钟不同步。如果文件的日期甚至是未来的一秒,它也会显示为未来的日期。

答案3

除了 cnst 答案之外,当文件通过 NFS 或 CIFS 存储在远程文件服务器共享上并且客户端和服务器时钟未通过 NTP 同步或其中之一已同步时,可能会发生将来的文件修改时间。时间正确但时区错误。

另请注意,此 ls 行为是 BSD / OS X 特定的,并且违反了 POSIX 标准。如果文件修改时间稍稍晚于未来,则大多数(如果不是全部)其他 Unixls实现都会显示年份而不是时间。

BSD / OS Xls手册页指出

如果文件的修改时间超过过去或未来6个月

如果改写一下,就不会那么含糊了:

如果文件的修改时间超过过去或未来6个月

相关内容