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


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.