V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dengyutongcn
V2EX  ›  Linux

如何改变时间戳的 ctime 属性

  •  
  •   dengyutongcn · 2020-06-28 20:55:09 +08:00 · 2506 次点击
    这是一个创建于 1613 天前的主题,其中的信息可能已经有所发展或是发生改变。
    rt,在迁移文件的时候时间戳会改变,只保留 Modify ( mtime ),为了避免在文件管理器里的混乱,我希望能从 mtime 复制到其他的所有属性( atime 、ctime 、mtime )。

    但我看到通常使用的 touch 命令不能更改 ctime,而且只能精确到秒
    所以有没有什么好方法来修改时间戳?
    平台是 Android 手机,但好像跟 Linux 关系更大就发到这个节点
    ps:要修改的大多是文档,所以 exif 什么的就行不通了
    6 条回复    2020-07-01 22:46:04 +08:00
    lululau
        1
    lululau  
       2020-06-28 21:23:37 +08:00
    简单点的做法是修改目标系统的系统时间,麻烦一点应该得修改内核才行
    ReVanTis
        2
    ReVanTis  
       2020-06-28 21:31:00 +08:00 via Android
    http://stroke.sourceforge.net/
    没试过行不行,只是以前听人提起过…
    fasionchan
        3
    fasionchan  
       2020-06-28 22:53:43 +08:00
    写个程序调 utime 系统调用去改,可以精确到微秒,但是同样不能改 ctime

    https://man7.org/linux/man-pages/man2/utime.2.html
    vk42
        4
    vk42  
       2020-06-28 23:46:37 +08:00
    如果有 debugfs 可以试试直接用 debugfs 改 inode 数据。不然就只能像#1 那样改系统时间了
    soji18
        5
    soji18  
       2020-06-29 01:07:13 +08:00 via Android
    purplewall
        6
    purplewall  
       2020-07-01 22:46:04 +08:00
    找到当前保存文件的文件系统代码,ioctl 里面加点内容,通过匹配 d_cache 的文件名,找到 inode,然后直接改 inode 里面的 atime ctime 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:21 · PVG 22:21 · LAX 06:21 · JFK 09:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.