[unix] 파일의 ‘변경’날짜를 어떻게 변경합니까?

‘변경’날짜를 어떻게 변경합니까?

$ 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) 디스크의 비트를 돌리십시오 (파일 시스템이 마운트되어있는 동안하지 마십시오).

답변

extX의 경우 jw013이 지적한 관련 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


답변

메타 데이터가 변경되면 파일의 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


답변