Tha*_*tos 22 linux posix timestamp
使用utimes
,futimes
,futimens
等,也可以设置一个文件的访问和修改时间戳.
修改时间是文件数据更改的最后时间.同样,"ctime"或更改时间是最后一次更改文件上的属性(如权限).(Linux/POSIX维护三个时间戳:mtime和ctime,已经讨论过,'atime'或访问时间.)
是否有设置更改时间戳的功能?(其中"更改"是属性修改或'ctime',而不是修改时间'mtime'.)(我理解想要更改更改时间戳的循环性质,但想想归档软件 - 确切地恢复文件会很好因为它是.)
创建时间戳是否有任何功能?(我意识到这ext2
不支持这个,但我想知道Linux是否支持,对于那些支持它的文件系统.)
如果不可能,那背后的原因是什么呢?
ism*_*ail 21
对于ext2/3
并可能为ext4
你可以做到这一点debugfs
的工具,假设你要更改的ctime
文件/tmp/foo
驻留在磁盘/dev/sda1
我们要设置的ctime到201001010101
,这意味着2010 01月01日,时间01:01:
警告:必须在此操作之前卸载磁盘
# Update ctime
debugfs -w -R 'set_inode_field /tmp/foo ctime 201001010101' /dev/sda1
# Drop vm cache so ctime update is reflected
echo 2 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
从Command Line Kung Fu
博客获取的信息.
我有类似的问题,并在这里写了我的答案.
基本上有两种选择:
根据http://lists.gnu.org/archive/html/coreutils/2010-08/msg00010.html ctime不能伪造(至少它不是假的):
POSIX表示atime和mtime可以通过utimensat()系列调用来用户设置为任意时间,但是ctime 必须能够 无法跟踪任何更改文件元数据或内容的操作的当前时间.
如果您只需要为某些测试/调试更改文件的ctime,bindfs可能会有所帮助.它是一个FUSE文件系统,它将一个目录安装到另一个地方,并且可以对文件属性进行一些转换.使用选项--ctime-from-mtime
,每个文件的ctime与其可以设置的mtime相同touch -t
.