【问题标题】:Change ctime of file under FreeBSD UFS / MacOS X HFS在 FreeBSD UFS / MacOS X HFS 下更改文件的 ctime
【发布时间】:2017-04-06 16:26:27
【问题描述】:

我正在寻找一种在不同文件系统上使用旧 ctime 创建文件的方法。 在 Linux ext 上,这是通过使用来实现的

touch /path/to/file debugfs -w -R 'set_inode_field /path/to/file ctime 201001010101' /dev/sdX echo 3 > /proc/sys/vm/drop_caches

FreeBSD 的 UFS 上是否有任何等价物? 甚至可能在 MacOSX HFS+ 上?

【问题讨论】:

    标签: linux macos filesystems freebsd ctime


    【解决方案1】:

    在 FreeBSD 上,使用 -f 选项的 touch 命令可能适用于此,例如:

    touch -t 0510242022.13 file
    

    将日期设置为 2005 年 11 月 24 日 20:22:13

    格式为[[CC]YY]MMDDhhmm[.SS],来自man touch

       -t      Change the access and modification times to the specified time
                 instead of the current time of day.  The argument is of the form
                 ``[[CC]YY]MMDDhhmm[.SS]'' where each pair of letters represents
                 the following:
    
                       CC      The first two digits of the year (the century).
                       YY      The second two digits of the year.  If ``YY'' is
                               specified, but ``CC'' is not, a value for ``YY''
                               between 69 and 99 results in a ``CC'' value of 19.
                               Otherwise, a ``CC'' value of 20 is used.
                       MM      The month of the year, from 01 to 12.
                       DD      the day of the month, from 01 to 31.
                       hh      The hour of the day, from 00 to 23.
                       mm      The minute of the hour, from 00 to 59.
                       SS      The second of the minute, from 00 to 61.
    

    要更改 ctime,您可以使用 fsdb,可能您需要以单模式启动以使磁盘处于只读模式,例如:

    > fsdb /dev/vtbd0p2
    ** /dev/vtbd0p2 (NO WRITE)
    Editing file system `/dev/vtbd0p2'
    Last Mounted on /
    current inode: directory
    I=2 MODE=40755 SIZE=1024
            BTIME=Sep 29 01:45:50 2016 [0 nsec]
            MTIME=Nov 26 09:47:37 2016 [339135000 nsec]
            CTIME=Nov 26 09:47:37 2016 [339135000 nsec]
            ATIME=Nov 26 09:28:38 2016 [679268000 nsec]
    OWNER=root GRP=wheel LINKCNT=20 FLAGS=0 BLKCNT=8 GEN=37b9b524
    fsdb (inum: 2)>
    

    从那里我可以 cd 到目录,然后选择它:

    fsdb (inum: 2)> cd /usr/home/nbari
    

    还有

    fsdb (inum: 644816)> lookup file
    

    你可以输入active来仔细检查是不是文件,例如:

    fsdb (inum: 642101)> active
    current inode: regular file
    I=642101 MODE=100644 SIZE=29
            BTIME=Oct 24 20:22:13 2005 [0 nsec]
            MTIME=Jan  1 12:12:12 2012 [0 nsec]
            CTIME=Jan  1 12:12:12 2012 [0 nsec]
            ATIME=Jan  1 12:12:12 2012 [0 nsec]
    OWNER=nbari GRP=nbari LINKCNT=1 FLAGS=0 BLKCNT=8 GEN=384445f7
    

    稍后只需将 ctime 更改为您想要的日期:

     fsdb (inum: 642101)> ctime 20121212010101
    

    格式为YYYYMMDDHHMMSS[.nsec]

    然后只需键入qexit 即可退出,以仔细检查运行stat,例如:

    > stat -x test_file
      File: "test_file"
      Size: 29           FileType: Regular File
      Mode: (0644/-rw-r--r--)         Uid: ( 1002/   nbari)  Gid: ( 1002/   nbari)
    Device: 0,68   Inode: 642101    Links: 1
    Access: Sun Jan  1 12:12:12 2012
    Modify: Sun Jan  1 12:12:12 2012
    Change: Sun Jan  1 12:12:12 2012
    

    【讨论】:

    • 对不起,您的回答只对修改atime或mtime有效,对ctime无效。
    • 对于 OSX 和 HFS+ 文件系统是否有 fsdb 的等价物?
    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 2012-05-18
    • 2013-04-14
    • 2015-04-15
    • 2012-01-10
    • 1970-01-01
    • 2023-03-03
    • 2018-03-09
    相关资源
    最近更新 更多