Как изменить дату изменения файла?

Как я могу изменить дату «изменения»?

$ 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: - 

Вы не можете изменить ctime обычными способами. Это по дизайну: ctime всегда обновляется до текущего, когда вы меняете какой-либо из метаданных файла, и нет способа навязать другое время ctime. Чтобы изменить ctime файла, вам необходимо выполнить одно из следующих действий:

  • Установите системное время на время, которое вы хотите наложить, затем коснитесь файла, а затем сбросьте системное время.
  • Измените ядро, чтобы добавить интерфейс для изменения ctime.
  • Получите доступ к изображению диска напрямую (например, с помощью debugfs ) и сверните биты на диске (не делайте этого, пока монтируется файловая система).

У вас есть ответ на связанный вопрос SO, указанный jw013, для 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 

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