ฉันจะเปลี่ยนวันที่ 'เปลี่ยน' ไฟล์ได้อย่างไร


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

คำตอบ:


22

คุณไม่สามารถเปลี่ยนเวลาได้ด้วยวิธีธรรมดา สิ่งนี้เกิดจากการออกแบบ: เวลาจะได้รับการอัปเดตเป็นปัจจุบันเสมอเมื่อคุณเปลี่ยนข้อมูลเมตาของไฟล์ใด ๆ และไม่มีวิธีกำหนดเวลาที่ต่างกัน ในการเปลี่ยนเวลาของไฟล์คุณต้องทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • ตั้งเวลาของระบบเป็นเวลาที่คุณต้องการกำหนดจากนั้นแตะที่ไฟล์จากนั้นรีเซ็ตเวลาของระบบ
  • ปรับเปลี่ยนเคอร์เนลเพื่อเพิ่มอินเตอร์เฟสเพื่อเปลี่ยน ctime
  • เข้าถึงดิสก์อิมเมจโดยตรง (เช่นด้วยdebugfs) และบิดบิตบนดิสก์ (อย่าทำในขณะที่ติดตั้งระบบไฟล์)

2
การตั้งค่าเวลาของระบบและ chmod ใช้งานได้สำหรับฉัน ดูสคริปต์ที่นี่: stackoverflow.com/questions/16126992/…
gaoithe

11

คุณมีคำตอบสำหรับคำถาม 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

4

เวลาของไฟล์ถูกอัพเดตเมื่อเมทาดาทาใด ๆ เปลี่ยนไป

$ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.