如何更改文件的“更改”日期?

如何更改文件的“更改”日期?

如何更改文件的“更改”日期?使用touch不起作用:

$ touch -t 9901010000 测试;统计测试
  文件:“测试”
  大小:0 块:0 IO 块:4096 常规空文件
设备:fe01h/65025d 索引节点:11279017 链接:1
访问权限:(0644/-rw-r--r--) Uid:( 1000/ x) Gid:( 1000/ x)
访问:1999-01-01 00:00:00.000000000 +0100
修改: 1999-01-01 00:00:00.000000000 +0100
更改: 2012-04-08 19:26:56.061614473 +0200
 出生:-

答案1

您无法通过普通方式更改 ctime。这是设计使然:当您更改任何文件的元数据时,ctime 始终更新为当前值,并且无法强制使用不同的 ctime。要更改文件的 ctime,您需要执行以下操作之一:

  • 将系统时间设置为您想要施加的ctime,然后触摸该文件,然后重置系统时间。
  • 修改内核,添加更改ctime的接口。
  • 直接访问磁盘映像(例如使用debugfs)并调整磁盘上的位(在安装文件系统时不要执行此操作)。

答案2

你有 jw013 指出的相关 SO 问题的答案,对于 extX,未安装的磁盘:

# 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

答案3

$NOW=$(date) && date -s "2030-08-15 21:30:11" && touch file.txt && date -s "$NOW"

https://www.shellhacks.com/fake-file-access-modify-change-timestamps-linux

答案4

当任何元数据更改时,文件的 ctime 都会更新。

$ ls -l x.py
-rw-rw-r--. 1 ignacio ignacio 485 Mar 26  2010 x.py
$ stat -c %z x.py
2010-03-26 11:57:56.237068175 -0400
$ chown ignacio x.py
$ stat -c %z x.py
2012-04-08 15:31:33.682383575 -0400
$ ls -l x.py
-rw-rw-r--. 1 ignacio ignacio 485 Mar 26  2010 x.py

相关内容