मुझे NTFS तार्किक वॉल्यूम पर फ़ाइल की निर्माण तिथि कैसे मिलती है?


9

मैंने विंडोज फाइल स्टोरेज के लिए अपने लिनक्स सिस्टम पर एक NTFS लॉजिकल वॉल्यूम बनाया क्योंकि मैं अपनी फाइलों की निर्माण तिथि को बनाए रखना चाहता हूं (मैं शायद उन्हें एक आर्काइव में जिप करूंगा और फिर उन्हें अनझिप कर दूंगा, हालांकि मुझे पता नहीं है कि यह काम करेगा)। क्या NTFS-3G लिनक्स पर फाइलों के निर्माण की तारीख को बचाता है? यदि हां, तो मैं इसे कैसे एक्सेस करूं?

इस थ्रेड को पढ़ते हुए , ओपी NTFS पर प्रलेखन लिंक करता है जो निर्माण तिथि खोजने के लिए एक शेल स्क्रिप्ट प्रदान करता है। मैंने इसे हेक्स मान से सेकंड प्राप्त करने के प्रयास में संशोधित किया, लेकिन मुझे विश्वास है कि मैं कुछ गलत कर रहा हूं:

#!/bin/sh
CRTIME=`getfattr -h -e hex -n system.ntfs_times $1 | \
    grep '=' | sed -e 's/^.*=\(0x................\).*$/\1/'`
SECONDS=$(($CRTIME / 10000000))
echo `date --date=$SECONDS`

जवाबों:


6

से https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimes ,

NTFS फ़ाइल चार टाइम स्टैम्प के एक सेट द्वारा योग्य है "1 जनवरी, 1601 (UTC) के बाद से 100-नैनोसेकंड अंतराल की संख्या का प्रतिनिधित्व", हालांकि UTC को 1961 से पहले पृथ्वी के घूर्णन के अज्ञात रूपांतरों के कारण वर्षों से परिभाषित नहीं किया गया है।

आपको वहां और भी अधिक जानकारी मिलेगी जिसमें शामिल हैं:

Ntfs-3G के नए संस्करण एक ntfs.ntfs_crtimeऔर ntfs.ntfs_crtime_beविशेषता को उजागर करते हैं ।

इसलिए:

getfattr --only-values -n system.ntfs_crtime_be /some/file |
  perl -MPOSIX -0777 -ne '$t = unpack("Q>");
  print ctime $t/10000000-11644473600'

यह सभी देखें:

ntfsinfo -F /file/in/ntfs /dev/fs-device

पुराने ntfs-3G के साथ, यह काम करना चाहिए:

getfattr --only-values -n system.ntfs_times /some/file |
  perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'

या ग्नू उपकरण और उप-दूसरी परिशुद्धता के साथ:

date '+%F %T.%N' -d "@$({ echo 7k
  getfattr --only-values -n system.ntfs_times /some/file |
    od -A n -N 8 -vt u8; echo '10000000/ 11644473600-p'; } |dc)"

आह, मैं वास्तव में इस प्रश्न को पोस्ट करने के बाद 11,644,473,600 घटा रहा था, लेकिन क्योंकि मेरे पास 100-नैनोसेकंड अंतराल गलत था, जिसके परिणामस्वरूप यह अमान्य परिणाम था। जब मैं अपने बॉक्स पर वापस आऊंगा तो मैं इसका परीक्षण करूंगा।
नोबल उत्थान

इसने काम कर दिया! धन्यवाद। कैसे unpack("Q>")काम करता है ? मैंने पर्ल डॉक को पढ़ा है और मैं इसे पूरी तरह से नहीं समझता।
नोबल अपलिफ्ट

1
@ नोबलअपलिफ्ट, एक बड़े एंडियन को अनपैक करता है (>) [Q] uad (64 बिट पूर्णांक)
स्टीफन चेजलस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.