首页 > 解决方案 > 用于在 btrfs 中设置文件和目录时间戳的 API

问题描述

BTRFS 文件/目录包含时间戳:

是否有一些 API 可以让我为文件设置所有这些时间戳?我用谷歌搜索了一下,但还没有找到任何东西。

编程语言无关紧要,我希望会有一些 C API,但 python 也很好,而且会更好。

标签: cbtrfs

解决方案


在 C 中,可以使用utime(2)及其亲属设置 mtime 和 atime。 utime(2)本身给你秒精度,utimes(2)有微秒,utimensat(2)给你纳秒。有一些变体,比如futime如果你有一个文件句柄而不是一个文件名。

Python 可以通过该函数提供相同的os.utime功能。

传统上,除了手动编辑原始文件系统外,不可能随意修改 otime 或 ctime。我不知道 Linux 提供了任何内核 API 来修改它们。当然,你可以通过某种方式改变它的状态来更新ctime到当前时间,你可以通过删除和重新创建文件来更新otime到当前时间。原则上,您可以通过首先更改系统时钟(如果您是 root)将它们设置为不同的时间,但这可能会弄乱系统上的许多其他东西,并且可能是一个坏主意。


推荐阅读