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


23

如何更改“更改”日期?

$ touch -t 9901010000 test;stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fe01h/65025d    Inode: 11279017    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    x)   Gid: ( 1000/    x)
Access: 1999-01-01 00:00:00.000000000 +0100
Modify: 1999-01-01 00:00:00.000000000 +0100
**Change: 2012-04-08 19:26:56.061614473 +0200**
 Birth: -

3
设置任意ctime值并不容易。有关SO的相关问题
jw013

Answers:


22

您不能通过常规方式更改ctime。这是设计使然:更改文件的任何元数据时,ctime始终会更新为当前值,并且无法施加其他ctime。要更改文件的ctime,您需要执行以下操作之一:

  • 将系统时间设置为要施加的ctime,然后触摸文件,然后重设系统时间。
  • 修改内核以添加用于更改ctime的接口。
  • 直接访问磁盘映像(例如,使用debugfs)并旋转磁盘上的位(在挂载文件系统时不要这样做)。

2
设置系统时间和chmod对我有用。在此处查看脚本:stackoverflow.com/questions/16126992/…–
gaoithe

11

您可以在jw013指向的未安装磁盘上的extX的相关SO问题上找到答案:

# 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

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

但是如何修改而不更新
Someone1234
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.