क्या ऐसी फ़ाइल होना संभव है जिसकी संशोधित तिथि है जो उसकी बनाई गई तारीख से पहले है? इस घटना के कारण क्या कार्रवाई होगी?
क्या ऐसी फ़ाइल होना संभव है जिसकी संशोधित तिथि है जो उसकी बनाई गई तारीख से पहले है? इस घटना के कारण क्या कार्रवाई होगी?
जवाबों:
निकाले जाने वाले। आर्क संग्रह पर विचार करें। आमतौर पर निकाली गई फ़ाइलों में संग्रह सामग्री से निर्दिष्ट अंतिम संशोधन टाइमस्टैम्प होगा (जो आम तौर पर अतीत में होता है जब तक कि आप एक समय यात्री नहीं होते हैं)। जहां तक फाइल सिस्टम का सवाल है, ये फाइलें अभी बनाई गई हैं।
लिनक्स में मौजूदा फाइलों के संशोधन समय को बदलने के लिए उपयोगिताओं भी मौजूद हैं, उदाहरण के लिए यह टच कमांड है।
cp -p
और ऐसी चीजें जो इसे पसंद करती हैं rcp -p
और scp -p
, साथ ही rsync
साथ -t
या -a
, स्रोत से मोडटाइम लेती हैं।
यदि आप स्क्रैच से फाइल बनाते हैं, तो इसे "अभी" का एक निर्माण समय मिलता है, और "अब" की एक संशोधन तिथि। अब इस फाइल को किसी अन्य ड्राइव पर कॉपी करने की कल्पना करें। 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"))
लिनक्स पर, आप आसानी से फ़ाइल के अंतिम-संशोधित समय को उस -d
ध्वज के साथ बदल सकते हैं touch
, जैसा कि इस उबंटू उत्तर में दिखाया गया है । वास्तव में लिनक्स फ़ाइल सिस्टम ( आगे यूनिक्स और लिनक्स पर पढ़ने ) पर फ़ाइलों के लिए एक निर्माण तिथि की धारणा नहीं है ।
यहां ध्यान देने वाली सबसे महत्वपूर्ण बात यह है कि फ़ाइल संशोधन समय वास्तव में विशेष नहीं है - यह किसी भी अन्य डेटा की तरह ही संग्रहीत है। यह बताने का कोई तरीका नहीं है कि डेटा वास्तव में अंतिम रूप से कब लिखा या पढ़ा गया था।
यहां से, हम देख सकते हैं कि यह हमेशा संभव है (सीडी की तरह राइट-वन मीडिया को छोड़कर) एक ड्राइव पर बिट्स को सीधे संशोधित करें और अंतिम संशोधित समय, या यहां तक कि निर्माण समय को संग्रहीत करें।
अधिक व्यावहारिक रूप से, यह सामान्य ऑपरेटिंग सिस्टम के भीतर से भी उल्लेखनीय है, क्योंकि अन्य उत्तर नोट किए गए हैं। विंडोज में, यह WinAPI SetFileTime
फ़ंक्शन द्वारा प्रदान किया गया है, और आप utime
लिनक्स पर ऐसा कर सकते हैं । touch
इन एपीआई के शीर्ष पर निर्माण जैसे उपकरण ।
इन एपीआई के लिए सबसे आम वैध उपयोग संशोधन समय को संरक्षित करने में होता है, उदाहरण के लिए, जब फ़ाइलों की प्रतिलिपि बनाते हैं, उन्हें अभिलेखागार आदि से निकालते हैं।
मेरे अनुभव में यह तब हुआ है जब फ़ाइल को संशोधित करने के लिए एक या अधिक कंप्यूटर का उपयोग किया गया है और उनमें से एक में गलत सिस्टम समय है। सिस्टम समय के गलत होने के तीन सबसे आम कारण हैं, कोई विशेष क्रम में नहीं हैं: