मैं दो अलग अलग तरीकों के साथ ctime संशोधित करने में सक्षम था:
- ताकि
ctime
mtime
- एक सरल (लेकिन hacky) खोल स्क्रिप्ट लेखन से मेल खाता गिरी बदल रहा है।
पहला तरीका: कर्नेल बदलना।
मैं KERNEL_SRC/fs/attr.c
में बस कुछ ही लाइनों बदलाव इस संशोधन mtime है जब भी mtime मैच के लिए ctime अद्यतन करता है "स्पष्ट रूप से परिभाषित।"
लिनक्स में:
touch -m --date="Wed Jun 12 14:00:00 IDT 2013" filename
जावा में (जावा 6 या 7, और शायद दूसरों का प्रयोग करके):
वहाँ "स्पष्ट रूप से परिभाषित" के लिए कई तरीके mtime, उदाहरण के लिए कर रहे हैं
01:
long newModificationTime = TIME_IN_MILLIS_SINCE_EPOCH;
File myFile = new File(myPath);
newmeta.setLastModified(newModificationTime);
यहाँ notify_change
समारोह में KERNEL_SRC/fs/attr.c
करने के लिए परिवर्तन है
(1) यह लाइन, असम्बद्ध, फ़ाइल में बदलाव पर वर्तमान घड़ी के समय में सीटा को अपडेट करेगी। हम यह नहीं चाहते हैं, क्योंकि हम खुद को सीटा सेट करना चाहते हैं। इस प्रकार, हम इस लाइन पर टिप्पणी करते हैं। (यह अनिवार्य नहीं है)
(2) यह वास्तव में समाधान का क्रूक्स है।notify_change
समारोह एक फ़ाइल के बाद मार डाला जाता है, बदल दिया गया है, जहां समय मेटाडाटा अपडेट करने की आवश्यकता है। यदि कोई mtime निर्दिष्ट नहीं किया गया था, तो mtime वर्तमान समय पर सेट है। अन्यथा, अगर mtime को किसी विशिष्ट मान पर सेट किया गया था, तो हम उस मान पर ctime और atime भी सेट करते हैं।
2 विधि: सरल (लेकिन hacky) खोल स्क्रिप्ट।
संक्षिप्त विवरण: 1) अपने लक्ष्य समय 2) फ़ाइल पर एक chmod प्रदर्शन के लिए परिवर्तित करें सिस्टम का समय, फ़ाइल ctime अब लक्ष्य समय 3) वापस जाएं प्रणाली समय को दर्शाता है।
changectime.sh
#!/bin/sh
now=$(date)
echo $now
sudo date --set="Sat May 11 06:00:00 IDT 2013"
chmod 777 $1
sudo date --set="$now"
भागो इस रूप में इस प्रकार है: ./changectime.sh myFile
फ़ाइल के ctime अब फाइल में समय दिखाएंगे।
बेशक, आप शायद नहीं 777 अनुमति के साथ फ़ाइल चाहते हैं। यह सुनिश्चित करने से पहले कि आप इस स्क्रिप्ट को अपनी आवश्यकताओं के अनुसार संशोधित करते हैं, सुनिश्चित करें।
लिनक्स टर्मिनल में, ls उत्पादन के लिए, यह अंतिम संशोधित समय आप की कोशिश की थी पता चलता है, कि संशोधित? –
हां। मैंने ऊपर दिए गए कोड की पहली पंक्ति का उपयोग करके अंतिम संशोधित समय को सफलतापूर्वक संशोधित किया। – Eitan