
如何更改文件的“更改”日期?使用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