c - 用于在 btrfs 中设置文件和目录时间戳的 API
问题描述
BTRFS 文件/目录包含时间戳:
- 创造 (otime)
- 修改(mtime)
- 属性修改(ctime)
- 访问(一次)
是否有一些 API 可以让我为文件设置所有这些时间戳?我用谷歌搜索了一下,但还没有找到任何东西。
编程语言无关紧要,我希望会有一些 C API,但 python 也很好,而且会更好。
解决方案
在 C 中,可以使用utime(2)
及其亲属设置 mtime 和 atime。 utime(2)
本身给你秒精度,utimes(2)
有微秒,utimensat(2)
给你纳秒。有一些变体,比如futime
如果你有一个文件句柄而不是一个文件名。
Python 可以通过该函数提供相同的os.utime
功能。
传统上,除了手动编辑原始文件系统外,不可能随意修改 otime 或 ctime。我不知道 Linux 提供了任何内核 API 来修改它们。当然,你可以通过某种方式改变它的状态来更新ctime到当前时间,你可以通过删除和重新创建文件来更新otime到当前时间。原则上,您可以通过首先更改系统时钟(如果您是 root)将它们设置为不同的时间,但这可能会弄乱系统上的许多其他东西,并且可能是一个坏主意。
推荐阅读
- reactjs - 如何为 React 中的所有下拉菜单切换 SideBar?
- javascript - 为什么我的 discord.js 频道发送抛出错误?
- javascript - discord.js addrole 命令可能被版主滥用
- reactjs - 如何将 mp3 文件添加到反应 js 文件中
- reactjs - 我想看刚刚添加的评论
- django - 我们可以在django模型的字段中输入html代码吗?
- react-native - 反应原生。在标记旁边显示组件
- linux - 无法启动自定义内核 - mkinitpcio 不添加任何模块
- r - 在R中组合字符时只粘贴一次
- php - 如何存储已根据日期计算的每个数据,并且在 php 代码中创建的表中没有计划以显示