user@linux-tutorials: ~/tutorials/02-linux-filesystem — linux-tutorials

tutorials / linux / chapter-02.md · utf-8 ⬇ download chapter-02.md

فصل دوم: ساختار فایل سیستم لینوکس

Linux Filesystem Structure

یکی از مهم‌ترین مفاهیمی که هر کاربر لینوکس باید به صورت عمیق یاد بگیرد، ساختار فایل سیستم است.

در سیستم‌عامل‌های مختلف، نحوه سازمان‌دهی فایل‌ها و پوشه‌ها متفاوت است. برای مثال، در ویندوز کاربران معمولاً با مفهوم درایوهایی مانند C و D کار می‌کنند.

اما لینوکس از چنین ساختاری استفاده نمی‌کند.

در لینوکس تمام فایل‌ها، پوشه‌ها، دستگاه‌ها و منابع سیستم در یک ساختار درختی واحد قرار دارند که از یک نقطه اصلی به نام Root Directory آغاز می‌شود.

Root Directory چیست؟

در لینوکس بالاترین سطح فایل سیستم با علامت زیر نمایش داده می‌شود:

user@linux-tutorials: ~/ch-02BASH
/

این مسیر را Root Directory می‌نامند.

Root Directory نقطه شروع تمام مسیرهای موجود در سیستم است.

تمام فایل‌ها و پوشه‌های لینوکس، چه فایل‌های مربوط به سیستم و چه فایل‌های شخصی کاربران، در نهایت زیرمجموعه این مسیر قرار می‌گیرند.

ساختار ساده فایل سیستم:

/
|
├── home
├── etc
├── bin
├── usr
├── var
└── tmp

تفاوت Root Directory و Root User

یکی از اشتباهات رایج کاربران تازه‌کار، یکی دانستن Root Directory و Root User است.

این دو مفهوم کاملاً متفاوت هستند.

Root Directory

Root Directory یک مسیر در فایل سیستم است:

user@linux-tutorials: ~/ch-02BASH
/

این مسیر نشان‌دهنده بالاترین سطح ساختار فایل‌ها در لینوکس است.

Root User

Root User یک حساب کاربری قدرتمند در لینوکس است.

این کاربر بالاترین سطح دسترسی را در سیستم دارد و می‌تواند عملیات‌های مدیریتی مانند نصب نرم‌افزار، تغییر تنظیمات سیستم، مدیریت کاربران و تغییر فایل‌های حساس را انجام دهد.

[i]به زبان ساده: / یعنی محل شروع فایل سیستم.

root یعنی کاربر قدرتمند سیستم.

ساختار استاندارد پوشه‌های لینوکس

یک سیستم لینوکسی دارای پوشه‌های استانداردی در مسیر Root است.

مهم‌ترین این پوشه‌ها:

user@linux-tutorials: ~/ch-02BASH
/bin
/boot
/dev
/etc
/home
/lib
/media
/mnt
/opt
/proc
/root
/run
/sbin
/sys
/tmp
/usr
/var

هرکدام از این مسیرها وظیفه مشخصی دارند.

پوشه Home

مسیر:

user@linux-tutorials: ~/ch-02BASH
/home

محل ذخیره فایل‌های کاربران عادی سیستم است.

هر کاربر معمولاً یک پوشه اختصاصی در این مسیر دارد.

برای مثال:

user@linux-tutorials: ~/ch-02BASH
/home/asa

این مسیر شامل فایل‌های شخصی کاربر است:

  • Documents
  • Downloads
  • Pictures
  • Videos
  • پروژه‌ها
  • فایل‌های شخصی

زمانی که کاربر وارد سیستم می‌شود، معمولاً در Home Directory خود قرار می‌گیرد.

برای مشاهده مسیر فعلی از دستور زیر استفاده می‌کنیم:

user@linux-tutorials: ~/ch-02BASH
pwd

پوشه Root

مسیر:

user@linux-tutorials: ~/ch-02BASH
/root

خانه اختصاصی کاربر Root است.

این مسیر با Root Directory یعنی / متفاوت است.

تفاوت:

user@linux-tutorials: ~/ch-02BASH
/  
Root Directory

/root  
Home Directory کاربر root

پوشه Etc

مسیر:

user@linux-tutorials: ~/ch-02BASH
/etc

محل نگهداری فایل‌های تنظیمات سیستم است.

بسیاری از تنظیمات مهم لینوکس در این مسیر قرار دارند.

نمونه فایل‌ها:

user@linux-tutorials: ~/ch-02BASH
/etc/passwd
user@linux-tutorials: ~/ch-02BASH
/etc/hosts
user@linux-tutorials: ~/ch-02BASH
/etc/fstab

برای مثال:

user@linux-tutorials: ~/ch-02BASH
/etc/passwd

اطلاعات کاربران سیستم را نگهداری می‌کند.

پوشه Bin

مسیر:

user@linux-tutorials: ~/ch-02BASH
/bin

شامل دستورات ضروری سیستم است.

برخی از دستورات معروف:

user@linux-tutorials: ~/ch-02BASH
ls
user@linux-tutorials: ~/ch-02BASH
cp
user@linux-tutorials: ~/ch-02BASH
mv
user@linux-tutorials: ~/ch-02BASH
rm
user@linux-tutorials: ~/ch-02BASH
cat
user@linux-tutorials: ~/ch-02BASH
echo

این ابزارها باید حتی در شرایط خاص مانند تعمیر سیستم نیز قابل استفاده باشند.

پوشه Sbin

مسیر:

user@linux-tutorials: ~/ch-02BASH
/sbin

شامل ابزارهای مدیریتی سیستم است.

این ابزارها معمولاً برای مدیریت بخش‌های حساس سیستم استفاده می‌شوند.

نمونه‌ها:

user@linux-tutorials: ~/ch-02BASH
shutdown
user@linux-tutorials: ~/ch-02BASH
reboot
user@linux-tutorials: ~/ch-02BASH
fdisk

پوشه Usr

مسیر:

user@linux-tutorials: ~/ch-02BASH
/usr

یکی از بزرگ‌ترین بخش‌های فایل سیستم لینوکس است.

بسیاری از برنامه‌ها، کتابخانه‌ها و فایل‌های نرم‌افزاری در این مسیر قرار دارند.

نمونه مسیرها:

user@linux-tutorials: ~/ch-02BASH
/usr/bin

/usr/lib

/usr/share

پوشه Var

مسیر:

user@linux-tutorials: ~/ch-02BASH
/var

برای اطلاعاتی استفاده می‌شود که دائماً تغییر می‌کنند.

نام Var از کلمه Variable گرفته شده است.

نمونه اطلاعات:

  • فایل‌های Log
  • کش برنامه‌ها
  • اطلاعات سرویس‌ها

یکی از مهم‌ترین مسیرها:

user@linux-tutorials: ~/ch-02BASH
/var/log

است که گزارش‌های سیستم در آن ذخیره می‌شوند.

پوشه Tmp

مسیر:

user@linux-tutorials: ~/ch-02BASH
/tmp

برای نگهداری فایل‌های موقت استفاده می‌شود.

برنامه‌ها هنگام اجرا ممکن است فایل‌های موقتی ایجاد کنند.

این فایل‌ها معمولاً دائمی نیستند و ممکن است پس از خاموش شدن سیستم حذف شوند.

پوشه Dev

مسیر:

user@linux-tutorials: ~/ch-02BASH
/dev

شامل فایل‌های مربوط به دستگاه‌های سخت‌افزاری است.

در لینوکس بسیاری از سخت‌افزارها مانند فایل نمایش داده می‌شوند.

برای مثال:

user@linux-tutorials: ~/ch-02BASH
/dev/sda

ممکن است مربوط به یک حافظه ذخیره‌سازی باشد.

یکی از فلسفه‌های معروف لینوکس:

Everything is a file

است.

یعنی بسیاری از منابع سیستم از طریق فایل‌ها قابل مدیریت هستند.

پوشه Proc

مسیر:

user@linux-tutorials: ~/ch-02BASH
/proc

یک فایل سیستم مجازی است.

این مسیر اطلاعات مربوط به پردازش‌های در حال اجرا و وضعیت داخلی Kernel را نمایش می‌دهد.

نمونه‌ها:

user@linux-tutorials: ~/ch-02BASH
/proc/cpuinfo

اطلاعات پردازنده را نمایش می‌دهد.

user@linux-tutorials: ~/ch-02BASH
 /proc/meminfo

اطلاعات حافظه را نمایش می‌دهد.

پوشه Boot

مسیر:

user@linux-tutorials: ~/ch-02BASH
/boot

شامل فایل‌های مورد نیاز برای راه‌اندازی سیستم است.

مانند:

  • Kernel
  • Bootloader

بدون این بخش، سیستم ممکن است نتواند به درستی اجرا شود.

مسیرها در لینوکس

برای کار با فایل‌ها باید مفهوم مسیر یا Path را به خوبی یاد بگیریم.

در لینوکس دو نوع مسیر وجود دارد:

  • Absolute Path
  • Relative Path

Absolute Path چیست؟

مسیر کامل یک فایل که از Root شروع می‌شود.

مثال:

user@linux-tutorials: ~/ch-02BASH
/home/username/Documents/file.txt

این مسیر مکان دقیق فایل را مشخص می‌کند.

Relative Path چیست؟

مسیر نسبی نسبت به موقعیت فعلی کاربر مشخص می‌شود.

برای مثال اگر در مسیر زیر باشیم:

user@linux-tutorials: ~/ch-02BASH
/home/username

مسیر:

user@linux-tutorials: ~/ch-02BASH
Documents/file.txt

به معنی:

user@linux-tutorials: ~/ch-02BASH
/home/username/Documents/file.txt

خواهد بود.

نقطه و دو نقطه

دو علامت مهم در مسیرهای لینوکس وجود دارد.

نقطه

user@linux-tutorials: ~/ch-02BASH
.

به مسیر فعلی اشاره می‌کند.

مثال:

user@linux-tutorials: ~/ch-02BASH
./script.sh

یعنی اجرای فایل script.sh در مسیر فعلی.

دو نقطه

user@linux-tutorials: ~/ch-02BASH
..

به پوشه والد اشاره می‌کند.

مثال:

اگر در مسیر زیر باشیم:

user@linux-tutorials: ~/ch-02BASH
/home/username/Documents

با استفاده از:

user@linux-tutorials: ~/ch-02BASH
..

به مسیر زیر بازمی‌گردیم:

user@linux-tutorials: ~/ch-02BASH
/home/username

مشاهده فایل‌ها و پوشه‌ها

برای مشاهده محتویات یک مسیر از دستور ls استفاده می‌کنیم.

نمایش اطلاعات بیشتر:

user@linux-tutorials: ~/ch-02BASH
ls -l

نمایش فایل‌های مخفی:

user@linux-tutorials: ~/ch-02BASH
ls -a

نمایش کامل:

user@linux-tutorials: ~/ch-02BASH
ls -la

فلسفه فایل سیستم لینوکس

ساختار فایل سیستم لینوکس بر اساس نظم و استاندارد طراحی شده است.

هر پوشه وظیفه مشخصی دارد و قرار دادن فایل‌ها در مسیر مناسب باعث می‌شود سیستم قابل مدیریت‌تر باشد.

یک کاربر حرفه‌ای لینوکس باید بداند:

  • فایل‌های تنظیمات کجا قرار دارند.
  • برنامه‌ها در چه مسیرهایی نصب می‌شوند.
  • گزارش‌های سیستم کجا ذخیره می‌شوند.
  • فایل‌های کاربران در چه محلی قرار دارند.

تمرین‌های فصل دوم

[01]مسیر فعلی خود را مشاهده کنید.

دستور:

user@linux-tutorials: ~/ch-02BASH
pwd

[02]محتویات مسیر فعلی را مشاهده کنید.

دستور:

user@linux-tutorials: ~/ch-02BASH
ls

[03]محتویات Root Directory را بررسی کنید.

دستور:

user@linux-tutorials: ~/ch-02BASH
ls /

[04]پوشه کاربران را مشاهده کنید.

دستور:

user@linux-tutorials: ~/ch-02BASH
ls /home

جمع‌بندی

در این فصل با ساختار فایل سیستم لینوکس آشنا شدیم.

یاد گرفتیم:

  • لینوکس از یک ساختار درختی واحد استفاده می‌کند.
  • نقطه شروع فایل سیستم / است.
  • هر پوشه وظیفه مشخصی دارد.
  • مسیرهای Absolute و Relative تفاوت دارند.
  • بسیاری از منابع سیستم در قالب فایل مدیریت می‌شوند.

شناخت فایل سیستم، یکی از پایه‌ای‌ترین مهارت‌ها برای تبدیل شدن به یک کاربر حرفه‌ای لینوکس است.

در فصل‌های بعدی از این دانش برای مدیریت فایل‌ها، مجوزها، کاربران و سیستم استفاده خواهیم کرد.