Oct 14, 2025

Linux File System & Directory Structure

যখন আমরা উইন্ডোজ অপারেটিং সিস্টেম ইন্সটল করি, তখন, আমাদের একটি পার্টিশন অবশ্যই করতে হয় সেটি হচ্ছে ‘C:\’ ড্রাইভ। এছাড়া একটা MBR (Master Boot Record) পার্টিশন টেবিলের ক্ষেত্রে একটি ‘System Reserved’ পার্টিশন তৈরি হয়। আর GPT (GUID Partition Table) পার্টিশন টেবিলের ক্ষেত্রে সিস্টেম নিজে থেকেই ‘EFI’, ‘MSR’ এবং ‘Recovery’ নামে কয়েকটি অতিরিক্ত পার্টিশন তৈরি করে নেয়। যদি অতিরিক্ত পার্টিশনের দরকার হয়, তাহলে আমরা সাধারণত ‘D\: Documents’, ‘E\: Training’, ‘F\: Entertainment’ ইত্যাদি নামে আলাদা পার্টিশন তৈরি করি। এর কারণ, ‘C\: System’ ড্রাইভ অনেক সময় ক্র্যাশ (Crash) করতে পারে, এজন্য ব্যাক্তিগত বা গুরুত্বপূর্ণ ডেটা আলাদাভাবে সংরক্ষণের জন্য আলাদা পার্টিশন তৈরি করা হয়।  উইন্ডোজ অপারেটিং সিস্টেমে ডেস্কটপ থেকে ‘This PC’ ওপেন করলে উক্ত পার্টিশনসমূহ দেখা যায়। নিচের স্ক্রিনশট থেকে বিষয়টি আরও পরিষ্কারভাবে বোঝা যাবেঃ

এখন আমরা যদি লিনাক্স ভিত্তিক অপারেটিং সিস্টেমে আসি, সেটা যেকোনও ডিস্ট্রিবিশন (RedHat, CentOS, Ubuntu, Debian) হতে পারে, লিনাক্স ইনস্টল করার সময় যে তিনটি পার্টিশন তৈরি করার প্রয়োজন হয়ঃ

  • /boot/efi (শুধুমাত্র GPT পার্টিশনের ক্ষেত্রে)
  • boot পার্টিশন  – /boot
  • root পার্টিশন  – /
  • swap পার্টিশন – swap

নোটঃ এখানে ‘/’ (রুট) পার্টিশনকে আমরা উইন্ডোজ অপারেটিং সিস্টেমের ‘C:\’ ড্রাইভের সাথে তুলনা করতে পারি। একইভাবে, ‘/boot’ পার্টিশনকে উইন্ডোজের ‘System Reserved’ পার্টিশনের সাথে এবং ‘swap’ পার্টিশনকে উইন্ডোজের ভার্চুয়াল মেমরি (Page File) সিস্টেমের সাথে তুলনা করা যায়।”

লিনাক্স অপারেটিং সিস্টেমের (RedHat, CentOS, Ubuntu, Debian) ডিরেক্টরি স্ট্রাকচার উইন্ডোজের চেয়ে একটু ভিন্ন। লিনাক্সের ডিরেক্টরি স্ট্রাকচার সাধারণত ট্রি (Tree/Hierarchical) আকৃতির হয়ে থাকে। লিনাক্সে সকল পার্টিশন বা মাউন্ট পয়েন্ট থাকে রুট(/) পার্টিশনের অধীনে। অর্থাৎ উইন্ডোজ অপারেটিং সিস্টেম থেকে ‘This PC’ ওপেন করলে যেমন অন্য পার্টিশন দেখা যায়, তেমনি লিনাক্সে রুট(/) পার্টিশনে ঢুকলে সিস্টেমের সকল মাউন্ট পয়েন্ট (Partition) দেখা যাবে।

আমরা যদি গ্রাফিক্যাল মোডে লিনাক্সের (RHEL/CentOS, Ubuntu, Kali) রুট(/) পার্টিশনে প্রবেশ করি তাহলে নিচের স্ক্রিনশট অনুযায়ী দেখা যাবেঃ 

Figure: Ubuntu Linux ‘root’ partition
Figure: RHEL/CentOS ‘root’ partition
Figure: Kali Linux ‘root’ partition Location

অর্থাৎ, আমরা RHEL/Ubuntu/Kali যেকোনও লিনাক্স ডিস্ট্রিবিউশনের রুট (/) পার্টিশনেই প্রবেশ করি না কেন, নিচের স্ক্রিনশটের মতো ডিরেক্টরি স্ট্রাকচার দেখা যাবে। অর্থাৎ সিস্টেমের সকল ডিরেক্টরিই রুট (/) পার্টিশনের অধীনে থাকে। লিনাক্স ইন্সটলের সময়ে বা পরবর্তীতে যদি আরও কিছু অতিরিক্ত পার্টিশন তৈরি করা হয়, সেগুলার মাউন্ট পয়েন্ট (ম্যাপিং ডিরেক্টরি) হিসেবে রুট (/) পার্টিশনের অধীনে দেওয়া হয়। কিন্ত, যদি কোনও কারণে রুট (/) পার্টিশন ক্র্যাশ (Crash) করে তাহলে আলাদা আলাদা মাউন্ট পয়েন্ট বা পার্টিশন অক্ষত থাকবে।

Figure: Linux File System and Directory Structure

যদি কমান্ড মোডে রুট(/) পার্টিশনে প্রবেশ করা হয়, তাহলে নিচের মত আউটপুট দেখতে পাবঃ

  • প্রথমে ‘cd’ কমান্ড দিয়ে রুট পার্টিশনে ( / ) প্রবেশ করব তারপর ‘ls’ কমান্ড দিতে হবেঃ

বিভিন্ন লিনাক্স ডিস্ট্রিবিউশনের রুট(/) পার্টিশনের মধ্যে যে সকল ডিরেক্টরি/ফোল্ডার দেখা যায়, সেই গুলার কোনটার কি কাজ এবং কোন ডিরেক্টরির মধ্যে কি কি তথ্য থাকে এই বিষয়ে নিচে আলোচনা করা হয়েছেঃ

  • /root’ – এটা ‘root’ ইউজারের হোম ডিরেক্টরি অর্থাৎ root’ ইউজার যখন তার ইউজার নাম এবং পাসওয়ার্ড দিয়ে সিষ্টেমে লগইন করে, তখন সে /root’ ডিরেক্টরির মধ্যে অবস্থান করে। সিস্টেমে অন্য ইউজারদের এই /rootডিরেক্টরিতে প্রবেশনের পার্মিশন থাকে না।
  • /home‘ – সধারন ইউজারের (student, sumon, lucky) হোম ডিরেক্টরি। সধারন ইউজার, যারা ‘root’ ইউজার কর্তৃক তৈরি হয়, সেই সকল ইউজাররা সাধারনত /home ডিরেক্টরির মধ্যে থাকে। চাইলে আমরা অন্য যেকোনও ডিরেক্টরিকেও /home ডিরেক্টরি বানাতে পারি।
  • ‘/etc’ – সিস্টেমের যাবতীয় কনফিগারেশন ফাইল, যেমনঃ সিস্টেম সকল কনফিগারেশন ফাইল, সার্ভার (DNS, FTP, Mail, HTTP, NFS, Proxy, Firewall, etc.) কনফিগারেশন ফাইল, সিকিউরিটি কনফিগারেশন ফাইল, ইউজার ডাটাবেস, গ্রুপ ডাটাবেস, ইউজার এবং গ্রুপের পাসওয়ার্ড সম্পর্কিত তথ্য থাকে।
  •  ‘/var’ – সিস্টেমের যাবতীয় ভ্যারিয়েবল ফাইল যেমনঃ সিস্টেম সকল লগ ফাইল (log message), প্রক্সি সার্ভারের cache/log/history, ডিফল্টFTP সার্ভার ডেটা, ওয়েব (HTTP) সার্ভারের হোস্টিং ডেটা, RPM ডাটাবেস, মেইল সার্ভারের SMTP ডেটা, ভার্চুয়াল মেশিন ইমেজ (VM) ইত্যাদি ‘/var’ ডিরেক্টরির মধ্যে থাকে।  
  •  ‘/media’ – সিস্টেমের অটো মাউন্ট পয়েন্ট অর্থাৎ CD/DVD/USB বা অন্য কোনও ডিভাইস অটো মাউন্ট হলে ‘/media’ ডিরেক্টিরর ভিতরে মাউন্ট হয়।
  • ‘/mnt’ – সিস্টেমের আরেকটি মাউন্ট (MAP) পয়েন্ট। এই জায়গায় আমরা ম্যানুয়ালি কোনও ডিভাইস DVD/USB/HDD/Network শেয়ার মাউন্ট (MAP) করতে পারি।
  • ‘/bin‘ – এটাকে ইউজার বাইনারি (User Binary) ডিরেক্টরি বলে। সাধারন ইউজার কর্তৃক যে সকল কমান্ড এক্সিকিউট বা চালানো হয়, সেই কমান্ড গুলো ‘/bin‘ ডিরেক্টরির মধ্যে থাকে।
  • ‘/sbin’ – এই ডিরেক্টরিকে সিস্টেম বাইনারি (System Binary) ডিরেক্টরি বলে। অর্থাৎ, ‘root’  ইউজার কর্তৃক যে সকল কমান্ড এক্সিকিউট বা চালানো হয় সেগুলো ‘/sbin‘ ডিরেক্টরির মধ্যে থাকে।
  •  ‘/tmp’  – অস্থায়ী (Temporary)  ফাইলের জন্য ব্যবহার হয়। এটা উইন্ডোজ অপারেটিং সিস্টেমের ‘Temp‘ ফোল্ডারের মতো কাজ করে। ‘/tmp’  ডিরেক্টরি থেকে ফাইল প্রতি দশ (১০) দিন অন্তর অন্তর আটমেটিক্যালি ডিলিট হয়ে যায়।
  •  ‘/dev’ – সিস্টেমের সকল ডিভাইস (Block/Character) ফাইল থাকে ‘/dev’ ডিরেক্টরির মধ্যে, যেমনঃ DVD/CD/USB/HDD/Soundcard/Keyboard/Mouse/Serial/tty/Printer পোর্ট ইত্যাদি।
  •  ‘/opt’  –  এই ডিরেক্টরিটা সাধারনত ফাঁকা (Empty) থাকে। ‘/opt’ (Optional) হিসেবে ব্যবহার হয়ে থাকে। যেকোনও ফাইল টেস্টিং বা অস্থায়ী ভাবে এখানে রাখতে পারি।  
  • ‘/proc’  – এটা মূলত ভার্চুয়াল ফাইল সিস্টেম (Virtual File System) হিসেবে কাজ করে। এটাকে বলা হয়ে থাকে ‘procfs’  এবং সিস্টেমের সকল প্রসেস, কার্নেল, কার্নেল মডিউল, ড্রাইভার, প্রসেসর, মেমেরি, ভার্চুয়াল মেমরি, ফাইল সিস্টেম এবং অন্য সকল সিস্টেম ইনফরমেশন পাওয়া যায়।   
  • ‘/run’  –  লিনাক্স সিস্টেম রানিং অবস্থায় যে সকল প্রসেস চলে সেইগুলো এই লোকেশন পাওয়া যাবে। প্রতি রিবুট/রিস্টার্টের পরে ‘/run’  ডিরেক্টরির মধ্যে ফাইল/ফোল্ডার নতুন করে তৈরি হয়।
  •  ‘/lib’ –  লিনাক্স সিস্টেমে ‘/lib’ এবং ‘/lib64 নামে দুইটা Library (lib) ফাইলের ডিরেক্টরি থাকে। এই Library ফাইল উইন্ডোজ অপারেটিং সিস্টেমের DLL (.dll) ফাইলের মত কাজ করে। লিনাক্সে Library ফাইলের এক্সটেনশন হিসবে .so (shared object) ব্যাবহার হয়। এটা মূলত বিভিন কার্নেল মডিউল এবং ‘C’ প্রোগ্রামিং কোডের Library লোকেশন। সিস্টেম বুট (boot) হতে এবং ‘/binও ‘/sbinডিরেক্টরির সকল কমান্ড চালাতে এই Library ফাইল ব্যবহার হয়।   
  • ‘/usr‘ – সিস্টেম এডমিনিস্ট্রেটর কর্তৃক সকল ইন্সটলকৃত সফটওয়্যার, শেয়ারড লাইব্রেরী (shared Libraries) এবং সকল Read Only প্রোগ্রাম ডেটা  (Program Data) থাকে ‘/usr’ ডিরেক্টরির মধ্যে। এই ‘/usr’ ডিরেক্টরির তিনটা (০৩) গুরুত্বপূর্ণ সাব-ডিরেক্টরি হচ্ছেঃ
    • ‘/usr/bin’ রেগুলার ইউজার কর্তৃক রানকৃত সকল কমান্ড।
    • ‘/usr/sbin – সিস্টেম এডমিনিস্ট্রেটর কর্তৃক রানকৃত সকল কমান্ড।
    • ‘/usr/local’ – সকল ইন্সটলকৃত সফটওয়্যারের লোকেশন।

এখানে ‘/usr/bin এবং ‘/usr/sbin ডিরেক্টরির একটা করে লিংক ডিরেক্টরি (Soft Link) থাকে যথাক্রমে রুট(/) পার্টিশনের অধীনে ‘/bin ও ‘/sbinনামে থাকে।  

নোটঃ বিভিন্নলিনাক্স ডিস্ট্রিবিশনের মধ্যে যে ডিরেক্টরি সমূহ কমন সেইগুলাই শুধু এখানে উল্লেখ করা হয়েছে।  কিছু কিছু লিনাক্স ডিস্ট্রিবিশনের ক্ষেত্রে কিছু অতিরিক্ত ডিরেক্টরি থাকে, সেইগুলা এখানে উল্লেখ করা হয়নি।

Avatar photo
Md. Azaj Ikbal

Red Hat | CentOS | Ubuntu | Shell Scripting | Server Hardening | Server Clustering | Virtualization | VMware | vSphere | vCenter | ESXi | vMotion | SAN Storage | vSAN | VMware Data Center | Windows Server Domain Controller | DNS & DNS Sec | RADIUS | Cacti | Observium | GrayLog | Veeam Backup | Huawei Networking | Cisco Networking | IP Telephony | Server Admin | Network Engineer