เป็นไปได้หรือไม่ที่จะมีไฟล์ที่มีวันที่แก้ไขซึ่งอยู่ก่อนวันที่สร้างไฟล์ การกระทำใดที่ทำให้เหตุการณ์นี้เกิดขึ้น
เป็นไปได้หรือไม่ที่จะมีไฟล์ที่มีวันที่แก้ไขซึ่งอยู่ก่อนวันที่สร้างไฟล์ การกระทำใดที่ทำให้เหตุการณ์นี้เกิดขึ้น
คำตอบ:
พิจารณาไฟล์. tar ที่แยกออกมา โดยทั่วไปแล้วไฟล์ที่แยกจะมีการประทับเวลาการแก้ไขครั้งล่าสุดที่ได้รับมอบหมายจากเนื้อหาที่เก็บถาวร (ซึ่งโดยทั่วไปจะเป็นอดีตที่ผ่านมาเว้นแต่คุณจะเป็นนักเดินทางข้ามเวลา) เท่าที่ระบบไฟล์เกี่ยวข้องไฟล์เหล่านี้เพิ่งถูกสร้างขึ้น
นอกจากนี้ยังมียูทิลิตี้เพื่อเปลี่ยนเวลาแก้ไขของไฟล์ที่มีอยู่บน Linux ตัวอย่างเช่นนี่คือคำสั่งtouch
cp -p
และสิ่งที่เลียนแบบมันเหมือนrcp -p
และscp -p
เช่นเดียวrsync
กับ-t
หรือ-a
ใช้เวลา modtime จากแหล่งที่มา
หากคุณสร้างไฟล์ตั้งแต่เริ่มต้นมันจะได้รับเวลาการสร้างเป็น "ตอนนี้" และวันที่แก้ไข "ตอนนี้" ทีนี้ลองนึกถึงการคัดลอกไฟล์นี้ไปยังไดรฟ์อื่น Windows จะเก็บเวลาการแก้ไข แต่เวลาสร้างไฟล์นั้นจะถูกกำหนดเป็นเวลาที่คุณคัดลอกไฟล์ไปยังไดรฟ์นั้น (เช่นเวลาที่สร้างไฟล์บนไดรฟ์นั้น ) เรียบง่ายเหมือนที่
มันถูกต้องจริง:
บน 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 )
ใช่. บน Windows ทำการเปลี่ยนแปลงกับไฟล์และบันทึก ตอนนี้คัดลอกไฟล์ ดูที่คุณสมบัติของสำเนาคุณจะเห็นว่ามีวันที่แก้ไขก่อนหน้านี้
สิ่งที่สำคัญที่สุดที่ควรทราบคือเวลาในการแก้ไขไฟล์ไม่ได้พิเศษจริงๆมันเก็บไว้เหมือนกับข้อมูลอื่น ๆ ไม่มีทางที่จะบอกเมื่อข้อมูลที่ได้รับไม่ได้จริงเขียนสุดท้ายที่จะหรืออ่านจาก
จากที่นี่เราจะเห็นได้ว่าเป็นไปได้เสมอ (ไม่รวมสื่อบันทึกครั้งเดียวเช่นซีดี) เพื่อไปและปรับเปลี่ยนบิตโดยตรงบนไดรฟ์ที่เก็บเวลาแก้ไขล่าสุดหรือแม้กระทั่งเวลาสร้าง
ยิ่งไปกว่านั้นยังสามารถทำได้จากระบบปฏิบัติการทั่วไปตามคำตอบอื่น ๆ ใน Windows สิ่งนี้ได้มาจากSetFileTime
ฟังก์ชั่นWinAPI และคุณสามารถทำได้ด้วยutime
บน Linux เครื่องมือเช่นtouch
สร้างบน API เหล่านี้
การใช้งานที่ถูกต้องตามกฎหมายที่พบบ่อยที่สุดสำหรับ API เหล่านี้คือในการรักษาเวลาการปรับเปลี่ยนเช่นเมื่อคัดลอกไฟล์การแยกมันออกจากที่เก็บถาวร ฯลฯ
จากประสบการณ์ของฉันมันเกิดขึ้นเมื่อมีคอมพิวเตอร์หนึ่งเครื่องหรือมากกว่าถูกใช้เพื่อแก้ไขไฟล์และหนึ่งในนั้นมีเวลาระบบที่ไม่ถูกต้อง สาเหตุที่พบบ่อยที่สุดสามประการสำหรับเวลาของระบบคือผิดโดยไม่เรียงลำดับดังนี้: