การเปลี่ยนชื่อส่งผลกระทบต่อการแก้ไขไฟล์หรือเวลาในการเข้าถึงหรือไม่? มีรายการที่ไหนบ้างที่เปลี่ยนแปลงตามเวลา?
การเปลี่ยนชื่อส่งผลกระทบต่อการแก้ไขไฟล์หรือเวลาในการเข้าถึงหรือไม่? มีรายการที่ไหนบ้างที่เปลี่ยนแปลงตามเวลา?
คำตอบ:
การเปลี่ยนชื่อจะอัปเดตเวลาเปลี่ยน:
$ mkdir tmp
$ cd tmp
$ echo abc > a
$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000 / zelda Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
Birth: -
$ mv a b
$ stat b
File: `b'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ zelda) Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
Birth: -
เวลาเข้าถึงได้รับการอัปเดตเมื่ออ่านเนื้อหาของไฟล์ แก้ไขเมื่อคุณอัปเดตไฟล์จริง (การเปิดเพื่อแก้ไขไม่เพียงพอที่จะเปลี่ยนเวลาแก้ไข)
cp
และmv
และvi
สำหรับการแก้ไข บรรณาธิการอื่น ๆ หรือเดสก์ท็อปของคุณอาจจัดการกับงานที่แตกต่างกันและมีการปรับปรุงการประทับเวลาเพิ่มเติม
mv
การเปลี่ยนแปลงที่ส่งผลต่อ mtime ของไฟล์คือการเปลี่ยนแปลงข้อมูลของไฟล์: การเขียนจำนวนไบต์ที่ไม่ใช่ศูนย์หรือการตัดปลายที่ลงท้ายด้วยการแก้ไขไฟล์ การสร้างไฟล์ตั้งค่า mtime เป็นวันที่ปัจจุบันเช่นกัน การเปิดไฟล์เพื่อการเขียนเพียงอย่างเดียวจะไม่มีผลต่อ mtime โดยสันนิษฐานว่าไฟล์นั้นไม่ได้ถูกสร้างหรือตัดทอน
การอ่านจากไฟล์ (หากอ่านจำนวนไบต์ที่ไม่ใช่ศูนย์) หรือเรียกใช้งานไฟล์จะตั้งค่า atime เป็นเวลาปัจจุบัน การเปิดไฟล์เพื่อการอ่านเพียงอย่างเดียวจะไม่ส่งผลกระทบต่อ atime บน Linux นี้ตอนนี้ยกเลิกโดยปริยายในสถานการณ์มากที่สุด; atime
ติดคืนตัวเลือก Atime การปรับปรุงในขณะที่noatime
ติดพิการตัวเลือกพวกเขาอย่างสมบูรณ์
โปรแกรมสามารถเปลี่ยน mtime และ atime ของไฟล์; touch
คำสั่งพื้นฐานในการทำเช่นนี้คือ บางโปรแกรมคัดลอกแฟ้มตั้งสำเนาไปยัง mtime เหมือนกับต้นฉบับเช่นหรือcp -p
rsync -t
การเปลี่ยนแปลงที่ส่งผลต่อ ctime ของไฟล์คือการเปลี่ยนแปลงข้อมูลเมตาของไฟล์: การอนุญาต, เจ้าของ, เวลา, จำนวนลิงค์, ฯลฯ การเปลี่ยนชื่อไฟล์จะเป็นการอัพเดตเวลาของมันด้วย การเปลี่ยนแปลงของข้อมูลไฟล์ก็มีผลต่อเวลาด้วยเช่นกัน แต่การอ่านจากไฟล์จะไม่เปลี่ยนเวลาแม้ว่ามันจะเปลี่ยนเวลาก็ตาม เป็นไปไม่ได้ที่จะเปลี่ยน ctime ด้วยวิธีอื่นนอกเหนือจากการตั้งค่าเป็นเวลาปัจจุบัน (แม้แต่ root ถูก จำกัด แต่ root สามารถตั้งค่า ctime ทางอ้อมโดยการเปลี่ยนเวลาของระบบเป็นครั้งแรกหรือโดยการเข้าถึงพาร์ติชันที่มีระบบไฟล์โดยตรง)
การสังเกตเชิงประจักษ์เพิ่มเติมที่ไม่ได้กล่าวถึงโดยคำตอบอื่น ๆ :
การเปิดไฟล์สำหรับการเขียนพร้อมO_TRUNC
การเปลี่ยนแปลง mtime แม้ว่าไฟล์นั้นจะว่างเปล่า
นี่น่าจะเป็นอย่างน้อยใน ext3 บน Linux 3.10