কম্পিউটার টিউটোরিয়াল

লিনাক্স ফাইল টাইমস্ট্যাম্প বোঝা: mtime, ctime, এবং atime

লিনাক্স অপারেটিং সিস্টেম আপনার সিস্টেমের প্রতিটি ফাইলের জন্য তিনটি টাইমস্ট্যাম্প ট্র্যাক করে। এই টাইমস্ট্যাম্পগুলো আপনাকে জানতে দেয় একটি ফাইল কখন শেষ আপডেট হয়েছিল। কিন্তু এগুলো কী বোঝায়? এবং আপনি একটি ফাইলের জন্য এই সময়গুলো কীভাবে জানবেন? ডিরেক্টরির ক্ষেত্রে কি কোনো পার্থক্য আছে?

atime, ctime, এবং mtime বোঝা এই সব প্রশ্নের উত্তর দিতে পারে। এগুলো তিনটি টাইমস্ট্যাম্প যা ইউনিক্স ফাইলসিস্টেম ট্র্যাক করে। আপনি যদি কখনো জানতে চান কী পরিবর্তন হয়েছে এবং কখন, তবে পড়তে থাকুন।

তিনটি ইউনিক্স টাইমস্ট্যাম্প কী?

প্রতিটি ফাইলের সাথে তিনটি টাইমস্ট্যাম্প জড়িত থাকে। লিনাক্স এগুলো ইউনিক্স টাইম ফরম্যাটে সংরক্ষণ করে যা ইপক থেকে সেকেন্ড গণনা করে। তিনটি টাইমস্ট্যাম্পকে সাধারণত atime, ctime, এবং mtime বলা হয়।

mtime সবচেয়ে সাধারণ এবং প্রায়শই সবচেয়ে উপকারী। এটি modified time (সংশোধন করা সময়) বোঝায়। এটি সেই সময়কে নির্দেশ করে যখন ফাইলের কন্টেন্ট শেষবার ডিস্কে লেখা হয়েছিল।

কিছুটা ভিন্ন হল ctime যা change time (পরিবর্তনের সময়) বোঝায়। এই টাইমস্ট্যাম্প মেটাডেটা পরিবর্তন ট্র্যাক করে যেমন ওনারশিপ এবং পারমিশন। এতে ফাইল রিনেম করা অন্তর্ভুক্ত—কমপক্ষে সাধারণ আধুনিক লিনাক্স OS-এ। কিন্তু এটি ফাইলের কন্টেন্ট পরিবর্তন হলেও আপডেট হয়, তাই এটি সবসময় mtime-এর মতো আপ-টু-ডেট থাকে।

তৃতীয় টাইমস্ট্যাম্প হল atime, যা কারো ফাইলটি এক্সেস করার শেষ সময় সংরক্ষণ করে।

ডিরেক্টরিতে টাইমস্ট্যাম্প কীভাবে প্রযোজ্য

একটি লিনাক্স ডিরেক্টরি, মূলত, সেই ডিরেক্টরির ফাইলগুলির একটি তালিকা। তাই একটি ডিরেক্টরির ভিতরে ফাইল তৈরি করলে সেই ডিরেক্টরির mtime আপডেট হবে। ls কমান্ড ব্যবহার করে ডিরেক্টরির ফাইলগুলো লিস্ট করলে এর এক্সেস টাইম আপডেট হবে। এবং, একটি ফাইল처럼, ডিরেক্টরির পারমিশন বা নাম পরিবর্তন করলে এর ctime আপডেট হবে।

কাঁচা টাইম (Creation Time) কী?

আপনাকে জানলে আশ্চর্য হতে পারে যে লিনাক্স সৃষ্টির সময় (creation time) ট্র্যাক করে না। আপনি প্রাথমিকভাবে অনুমান করতে পারেন যে ctime creation time বোঝায়। সমানভাবে, আপনি এটা খুব উপকারী একটি জিনিস বলে ভাবতে পারেন।

অনেক অ্যাপ্লিকেশন ফাইল সেভ করার সময় প্রতিবার স্ক্র্যাচ থেকে সেটা তৈরি করে। এটি creation time ব্যবহারকে মislead করবে।

ভিন্ন টাইমস্ট্যাম্প দেখার উপায়

টাইমস্ট্যাম্প ইনফরমেশন পাওয়ার সবচেয়ে সহজ উপায় হল ls কমান্ড। ডিফল্ট লং ফরম্যাট mtime-এর জন্য ডিটেইলস দেখায়:

$ date
Sat Mar 6 16:57:01 GMT 2021
$ echo "hello, world" > tmp
$ ls -l tmp.txt
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

আপনি -u ফ্ল্যাগ ব্যবহার করে atime দেখতে পারেন:

$ date
Sat Mar 6 16:59:33 GMT 2021
$ cat tmp
hello, world
$ ls -lu tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp
$ ls -l tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

শেষ লাইনটি নিশ্চিত করে যে এই ফাইলের mtime atime-এর থেকে ভিন্ন। সর্বশেষ, ctime দেখতে -c ফ্ল্যাগ ব্যবহার করুন:

$ date
Sat Mar 6 17:02:34 GMT 2021
$ mv tmp tmp2
$ ls -lc tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 17:02 tmp2
$ ls -l tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp2
$ ls -lu tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp2

এইবার, আমরা নিশ্চিত করি যে তিনটি সময়ই আলাদা এবং সঠিক: আমরা মডিফাইড, তারপর অ্যাক্সেসড, তারপর চেঞ্জড করেছি ফাইলটি, এই ক্রমে।

ls-এর একটি বিকল্প হল stat কমান্ড। এই কমান্ড ফাইলের inode থেকে লো-লেভেল ডিটেইলস প্রদর্শন করে। এটি একসাথে তিনটি সময় চেক করা সহজ করে তোলে। এটি অনবোঝা -u ফ্ল্যাগের সমস্যাও সমাধান করে। একই ফাইলের জন্য একটি উদাহরণ আউটপুট:

$ stat tmp2
File: `tmp2'
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 327688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-03-06 16:59:45.000000000 +0000
Modify: 2021-03-06 16:57:59.000000000 +0000
Change: 2021-03-06 17:02:43.000000000 +0000

টাইমস্ট্যাম্প আপডেট করার উপায়

touch কমান্ড একটি ফাইলের মডিফিকেশন এবং এক্সেস টাইম পরিবর্তন করে। এটি একটি খালি ফাইল তৈরির একটি সুবিধাজনক উপায়ও, যা এটি করবে যদি ফাইলটি ইতিমধ্যে না থাকে:

touch tmp

ডিফল্টভাবে, এটি mtime এবং atime বর্তমান সময়ে সেট করে। আপনি -t ফ্ল্যাগ দিয়ে অন্য সময় সেট করতে পারেন:

touch -t 202103061200 tmp

আপনি -m এবং -a ফ্ল্যাগ যথাক্রমে শুধু mtime বা atime সেট করতে পারেন:

touch -t 202103061300 -m tmp

মনে রাখবেন যে ctime সবসময় আপডেট হয় যখন আমরা atime বা mtime সেট করি।

টাইমস্ট্যাম্পের ভিত্তিতে ফাইল খুঁজে বের করা

find কমান্ড একটি আরেকটি টুল যা টাইমস্ট্যাম্পের ওপর কাজ করে। এটি atime, ctime, বা mtime-এর ভিত্তিতে ফাইল ফিল্টার করতে পারে। উদাহরণস্বরূপ:

find . -amin 15

ঠিক ১৫ মিনিট আগে অ্যাক্সেস করা ফাইলগুলো খুঁজে বের করবে, যখন:

find . -mtime -2

গত দুই দিনের মধ্যে মডিফাইড ফাইলগুলো খুঁজে বের করবে।

লিনাক্স প্রতিটি ফাইল তিনবার ট্র্যাক করে

সবচেয়ে সাধারণত রেফারেন্স করা ফাইল টাইমস্ট্যাম্প হল mtime। এটি হল वह তারিখ এবং সময় যা একটি ফাইল লিস্টিং দেখায়, উদাহরণস্বরূপ। কিন্তু অন্যান্য দুটি টাইমস্ট্যাম্পও উপকারী হতে পারে, শর্তে আপনি বুঝতে পারেন সেগুলো কী বোঝাচ্ছে। বিশেষ করে, স্দা মনে রাখবেন যে ctime প্রতিনিধিত্ব করে change time, creation time নয়।

touch এবং stat কমান্ড লিনাক্স কমান্ড লাইন টুলবক্সের উপকারী সদস্য। এই কমান্ডগুলো আপনাকে দ্রুত নতুন ফাইল তৈরি করার অনুমতি দিয়ে আপনার লিনাক্স ওয়ার্কফ্লোকে উন্নত করবে।

  1. থুনার (Thunar) ফাইল ম্যানেজার থেকে ইমেজ কম্প্রেস ও রিসাইজ করুন

  2. লিনাক্সে শাটডাউন এবং রিবুটের তারিখ চেক করার পদ্ধতি

  3. শেল ইনিশিয়ালাইজেশন ফাইল ও ইউজার প্রোফাইল মास্টার করুন: লিনাক্স অ্যাডমিনের জন্য গাইড

  4. chmod 777 বুঝুন: এর অর্থ এবং লিনাক্স পারমিশনে এর প্রভাব