首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定文件系统时间戳精度

确定文件系统时间戳精度
EN

Unix & Linux用户
提问于 2011-04-19 07:01:19
回答 4查看 10.8K关注 0票数 9

对于EXT3,文件时间戳的精度被限制为1秒,对于UFS,文件时间戳的精度限制为1微秒,对于EXT4,文件时间戳的精度被限制为1毫秒(至少根据经验)。是否有任何方法仅根据文件系统信息来确定这一点?

我能想到的麻烦的替代方案要么是将我所有的单元测试限制在秒(我现在就这样做了),要么是touch一堆文件,并检查stat -c %x中哪些数字是零。

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2011-05-06 17:40:46

据我所知,没有任何地方可以储存这些资料。它被编码到文件系统中。但是,您可以手动创建一个文件系统列表以及相应的精度。我将使用一个case语句来根据您的文件系统列表测试文件系统id。您可以创建默认的1,因为很少有精度小于1秒的例子。

较早版本的FAT和当前版本的zip使用2秒的时间戳精度,据我在网上看到的。不过,我建议你去核实一下。

您可以使用以下命令获取文件文件系统的id。

代码语言:javascript
复制
stat -f --format="%t" $file
票数 6
EN

Unix & Linux用户

发布于 2011-04-19 07:26:49

通常,您可以使用statvfs路径,但它们似乎不支持任何查找该信息的方法。

显然,这种特性是未来POSIX标准的正在讨论中

我们还将提交一些路径增强文件,以便在每个路径基础上返回时间戳的粒度。

不幸的是,我今天看不出有什么干净的方法可以做到这一点,即使是以操作系统特有的方式也不行。

任何试图构建文件系统列表的方法,以及它是否支持次秒级解析,都是危险的。例如,如果节点为256个字节,则ext4似乎支持纳秒分辨率,但如果节点为128个字节,则不支持纳秒分辨率。

汇编一个全面和准确的列表将是困难的,可能需要根访问,它可能会改变明天。这听起来比我只运行stat几次还困难。

票数 3
EN

Unix & Linux用户

发布于 2018-12-26 14:08:03

我刚刚实现了一个文件数据库的检测。我首先将文件的时间戳设置为1234 millis,然后再读取它并检查它是1234 (至少ms精度)还是1000 (第二精度)。到目前为止,我学到的是:

  • XFS和EXT3:第二精度
  • EXT4:毫秒精度
  • NTFS: 100 NTFS精度(好的,这是从docs.)
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/11599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档