ไฟล์ดูเหมือนว่าจะถูกแก้ไขก่อนที่จะถูกสร้างขึ้น? [ซ้ำ]


9

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


7
สร้างไฟล์ หันหลังกลับนาฬิกา แก้ไขไฟล์ นำนาฬิกากลับมาอีกครั้ง
DavidPostill

@DavidPostill โปรดทราบว่าอย่างน้อยที่สุดใน Windows การเปลี่ยนเวลาของระบบจำเป็นต้องมีสิทธิ์ระดับผู้ดูแลระบบในขณะที่มีวิธีอื่นในการสร้างไฟล์เวลาตลกที่ไม่มี
Ben N

คำตอบ:


8

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

นอกจากนี้ยังมียูทิลิตี้เพื่อเปลี่ยนเวลาแก้ไขของไฟล์ที่มีอยู่บน Linux ตัวอย่างเช่นนี่คือคำสั่งtouch


และสำหรับไฟล์เดียวcp -pและสิ่งที่เลียนแบบมันเหมือนrcp -pและscp -pเช่นเดียวrsyncกับ-tหรือ-aใช้เวลา modtime จากแหล่งที่มา
dave_thompson_085

"เวลาในการสร้าง" เป็นคำศัพท์ของ windows ไม่ใช่ * nix one * ระวังมี "เปลี่ยนเวลา" ซึ่งง่ายต่อการสับสนกับ "เวลาสร้าง" แต่ไม่เหมือนกัน
plugwash

ext4 ดูเหมือนจะเก็บ "เวลาเกิด" ซึ่งคล้ายกับ (แต่ไม่เหมือนกัน) หน้าต่าง "เวลาสร้าง" แต่ไม่มีวิธีที่ดีในการเข้าถึง unix.stackexchange.com/a/50184/122182
plugwash

8

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

มันถูกต้องจริง:

  • ครั้งล่าสุดที่เนื้อหาของไฟล์ถูกเปลี่ยนแปลงจะถูกเก็บไว้ในเวลาการแก้ไข
  • เวลาที่ไฟล์ถูกสร้างขึ้นในไดรฟ์นี้ถูกเก็บไว้ในเวลาที่สร้าง

ความคิดเห็นนี้เหมาะสมที่สุดเพราะแสดงให้เห็นถึงสถานการณ์ที่มีโอกาสเกิดขึ้นได้มากเมื่อความแตกต่างของวันที่สร้าง / แก้ไขจะเกิดขึ้น
Shukri Adams

7

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

วิธีตั้งเวลาสร้างไฟล์ด้วย PowerShell โดยใช้SetCreationTime:

[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))

ในการตั้งเวลาที่แก้ไขล่าสุดโดยใช้SetLastWriteTime:

[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))

บน Linux คุณสามารถเปลี่ยนเวลาแก้ไขล่าสุดของไฟล์ได้อย่างง่ายดายด้วยการ-dตั้งค่าสถานะtouchตามที่แสดงในคำตอบ Ask Ubuntuนี้ ไม่มีความคิดเกี่ยวกับวันที่สร้างไฟล์บนระบบไฟล์ Linux ( อ่านเพิ่มเติมที่ Unix & Linux )


3

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


1

สิ่งที่สำคัญที่สุดที่ควรทราบคือเวลาในการแก้ไขไฟล์ไม่ได้พิเศษจริงๆมันเก็บไว้เหมือนกับข้อมูลอื่น ๆ ไม่มีทางที่จะบอกเมื่อข้อมูลที่ได้รับไม่ได้จริงเขียนสุดท้ายที่จะหรืออ่านจาก

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

ยิ่งไปกว่านั้นยังสามารถทำได้จากระบบปฏิบัติการทั่วไปตามคำตอบอื่น ๆ ใน Windows สิ่งนี้ได้มาจากSetFileTimeฟังก์ชั่นWinAPI และคุณสามารถทำได้ด้วยutimeบน Linux เครื่องมือเช่นtouchสร้างบน API เหล่านี้

การใช้งานที่ถูกต้องตามกฎหมายที่พบบ่อยที่สุดสำหรับ API เหล่านี้คือในการรักษาเวลาการปรับเปลี่ยนเช่นเมื่อคัดลอกไฟล์การแยกมันออกจากที่เก็บถาวร ฯลฯ


0

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

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