API 在 btrfs 中设置文件和目录的时间戳
API to set the timestamps on files & directories in btrfs
BTRFS files/directories 包含时间戳:
- 创作(时间)
- 修改(mtime)
- 属性修改(ctime)
- 访问(一次)
是否有一些 API 我可以在其中为文件设置所有这些时间戳?我用谷歌搜索了一下,但还没有找到任何东西。
编程语言并不重要,我希望有一些 C API,但 python 也可以,而且会更好。
从 C 开始,mtime 和 atime 可以使用 utime(2)
及其亲属来设置。 utime(2)
本身给你秒精度,utimes(2)
有微秒,而 utimensat(2)
给你纳秒。如果您有文件句柄而不是文件名,则有 futime
等变体。
Python 可以通过 os.utime
函数提供相同的功能。
传统上不可能任意修改 otime 或 ctime,除非手动编辑原始文件系统。我不知道 Linux 提供了任何内核 API 来修改它们。当然,您可以通过某种方式更改其状态来将 ctime 更新为当前时间,并且可以通过删除并重新创建文件来将 otime 更新为当前时间。原则上,您可以通过先更改系统时钟(如果您是 root)来将它们设置为不同的时间,但这可能会弄乱系统上的许多其他内容,并且可能是个坏主意。
BTRFS files/directories 包含时间戳:
- 创作(时间)
- 修改(mtime)
- 属性修改(ctime)
- 访问(一次)
是否有一些 API 我可以在其中为文件设置所有这些时间戳?我用谷歌搜索了一下,但还没有找到任何东西。
编程语言并不重要,我希望有一些 C API,但 python 也可以,而且会更好。
从 C 开始,mtime 和 atime 可以使用 utime(2)
及其亲属来设置。 utime(2)
本身给你秒精度,utimes(2)
有微秒,而 utimensat(2)
给你纳秒。如果您有文件句柄而不是文件名,则有 futime
等变体。
Python 可以通过 os.utime
函数提供相同的功能。
传统上不可能任意修改 otime 或 ctime,除非手动编辑原始文件系统。我不知道 Linux 提供了任何内核 API 来修改它们。当然,您可以通过某种方式更改其状态来将 ctime 更新为当前时间,并且可以通过删除并重新创建文件来将 otime 更新为当前时间。原则上,您可以通过先更改系统时钟(如果您是 root)来将它们设置为不同的时间,但这可能会弄乱系统上的许多其他内容,并且可能是个坏主意。