আমি কীভাবে একটি এনটিএফএস লজিক্যাল ভলিউমে কোনও ফাইল তৈরির তারিখ পেতে পারি?


9

আমি উইন্ডোজ ফাইল স্টোরেজের জন্য আমার লিনাক্স সিস্টেমে একটি এনটিএফএস লজিক্যাল ভলিউম তৈরি করেছি কারণ আমি আমার ফাইলগুলি তৈরির তারিখটি ধরে রাখতে চাই (আমি সম্ভবত সেগুলি একটি সংরক্ষণাগারে জিপ করব এবং তারপরে আনজিপ করব, যদিও এটি কাজ করে কিনা আমার কোনও ধারণা নেই)। এনটিএফএস-জি লিনাক্সে ফাইল তৈরির তারিখটি সংরক্ষণ করে? যদি তা হয় তবে আমি কীভাবে এটি অ্যাক্সেস করব?

পড়া এই থ্রেড , অপ সংযোগগুলি ডকুমেন্টেশন এনটিএফএস উপর তৈরির তারিখ খোঁজার জন্য একটি শেল স্ক্রিপ্ট প্রদান করে। হেক্স মান থেকে সেকেন্ড নেওয়ার প্রয়াসে আমি এটিকে সংশোধন করেছি, তবে আমি বিশ্বাস করি যে আমি কিছু ভুল করছি:

#!/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/commune/ntfs-3g-advanced/extended-attributes/#filetimes থেকে ,

একটি এনটিএফএস ফাইল চারটি টাইম স্ট্যাম্পের একটি সেট দ্বারা যোগ্যতা অর্জন করে: "জানুয়ারী 1, 1601 (ইউটিসি) থেকে 100-ন্যানোসেকেন্ড অন্তরগুলির সংখ্যা উপস্থাপন করে", যদিও পৃথিবীর ঘূর্ণনের অজানা পরিবর্তনের কারণে 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

পুরানো এনটিএফএস -3 জি সহ, এটি কাজ করা উচিত:

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-ন্যানোসেকেন্ডের বিরতি ছিল কারণ এটি একটি অবৈধ ফলাফলের ফলস্বরূপ ছিল। আমি আমার বাক্সে ফিরে এলে এটি পরীক্ষা করব।
NobleUplift

এটা কাজ করেছে! ধন্যবাদ। কিভাবে unpack("Q>")কাজ করে? আমি পার্ল ডকটি পড়েছি এবং এটি সম্পূর্ণরূপে বুঝতে পারি না।
NobleUplift

1
@ নোবেলপ্লিফ্ট, একটি বড় এন্ডিয়ান (>) [কিউ] উড (bit৪ বিট পূর্ণসংখ্যার) আনপ্যাক করুন
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.