อะไรคือการดัดแปลงหรือเปลี่ยนแปลงไฟล์


คำตอบ:


9

การเปลี่ยนชื่อจะอัปเดตเวลาเปลี่ยน:

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

เวลาเข้าถึงได้รับการอัปเดตเมื่ออ่านเนื้อหาของไฟล์ แก้ไขเมื่อคุณอัปเดตไฟล์จริง (การเปิดเพื่อแก้ไขไม่เพียงพอที่จะเปลี่ยนเวลาแก้ไข)


การคัดลอกไฟล์และการวางเปลี่ยนเวลา "แก้ไข" ในไฟล์ใหม่หรือไม่ การใช้ Ctrl + X และการวางเปลี่ยนเวลา "เปลี่ยน" หรือไม่

1
การคัดลอกจะสร้างไฟล์ใหม่ด้วย Modify, Access และ Change ด้วยค่าใหม่ (เหมือนกันทั้งหมด) การวางบางอย่างในเครื่องมือแก้ไข (แล้วบันทึก) จะอัปเดตทั้งสาม (เปลี่ยนด้วยการประทับเวลาในภายหลังกว่าอีกสองหลักสูตรหลังจากที่คุณบันทึกเท่านั้น)
Zelda

ฉันหมายถึงการใช้ CTRL + x ในไฟล์และ CTRL + v ที่อื่น

นี่คือการใช้เครื่องมือ commandline cpและmvและviสำหรับการแก้ไข บรรณาธิการอื่น ๆ หรือเดสก์ท็อปของคุณอาจจัดการกับงานที่แตกต่างกันและมีการปรับปรุงการประทับเวลาเพิ่มเติม
Zelda

เช่น Nautilus ไม่อัปเดตการเข้าถึงและแก้ไขโดยใช้ Ctrl + X จากนั้น Ctrl + V การเปลี่ยนแปลงเท่านั้นที่แตกต่างกันเช่นmv
Zelda

9

การเปลี่ยนแปลงที่ส่งผลต่อ mtime ของไฟล์คือการเปลี่ยนแปลงข้อมูลของไฟล์: การเขียนจำนวนไบต์ที่ไม่ใช่ศูนย์หรือการตัดปลายที่ลงท้ายด้วยการแก้ไขไฟล์ การสร้างไฟล์ตั้งค่า mtime เป็นวันที่ปัจจุบันเช่นกัน การเปิดไฟล์เพื่อการเขียนเพียงอย่างเดียวจะไม่มีผลต่อ mtime โดยสันนิษฐานว่าไฟล์นั้นไม่ได้ถูกสร้างหรือตัดทอน

การอ่านจากไฟล์ (หากอ่านจำนวนไบต์ที่ไม่ใช่ศูนย์) หรือเรียกใช้งานไฟล์จะตั้งค่า atime เป็นเวลาปัจจุบัน การเปิดไฟล์เพื่อการอ่านเพียงอย่างเดียวจะไม่ส่งผลกระทบต่อ atime บน Linux นี้ตอนนี้ยกเลิกโดยปริยายในสถานการณ์มากที่สุด; atimeติดคืนตัวเลือก Atime การปรับปรุงในขณะที่noatimeติดพิการตัวเลือกพวกเขาอย่างสมบูรณ์

โปรแกรมสามารถเปลี่ยน mtime และ atime ของไฟล์; touchคำสั่งพื้นฐานในการทำเช่นนี้คือ บางโปรแกรมคัดลอกแฟ้มตั้งสำเนาไปยัง mtime เหมือนกับต้นฉบับเช่นหรือcp -prsync -t

การเปลี่ยนแปลงที่ส่งผลต่อ ctime ของไฟล์คือการเปลี่ยนแปลงข้อมูลเมตาของไฟล์: การอนุญาต, เจ้าของ, เวลา, จำนวนลิงค์, ฯลฯ การเปลี่ยนชื่อไฟล์จะเป็นการอัพเดตเวลาของมันด้วย การเปลี่ยนแปลงของข้อมูลไฟล์ก็มีผลต่อเวลาด้วยเช่นกัน แต่การอ่านจากไฟล์จะไม่เปลี่ยนเวลาแม้ว่ามันจะเปลี่ยนเวลาก็ตาม เป็นไปไม่ได้ที่จะเปลี่ยน ctime ด้วยวิธีอื่นนอกเหนือจากการตั้งค่าเป็นเวลาปัจจุบัน (แม้แต่ root ถูก จำกัด แต่ root สามารถตั้งค่า ctime ทางอ้อมโดยการเปลี่ยนเวลาของระบบเป็นครั้งแรกหรือโดยการเข้าถึงพาร์ติชันที่มีระบบไฟล์โดยตรง)


1

การสังเกตเชิงประจักษ์เพิ่มเติมที่ไม่ได้กล่าวถึงโดยคำตอบอื่น ๆ :

การเปิดไฟล์สำหรับการเขียนพร้อมO_TRUNCการเปลี่ยนแปลง mtime แม้ว่าไฟล์นั้นจะว่างเปล่า

นี่น่าจะเป็นอย่างน้อยใน ext3 บน Linux 3.10

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