نحوه رسیدن به یک فایل، Hardlink و Softlink

بسیاری از دانشجویان درک درستی از نحوه دسترسی به یک فایل و یا نحوه آدرس دهی آن ندارند.  علاوه برآن مباحثی مانند نحوه عملکرد Hardlink و Softlink برایشان مبهم است. در این سند قصد دارم تا این موضوع را تا جای ممکن شفاف کنم. ساختاری که در زیر برای شما تشریح خواهد شاختار فایل سیستم دسته EXT می باشد.

قبل از هر چیز لازم هست که چندین مفهوم و اصطلاح شفاف شود. در زیر توضیح مختصری در مورد هر کدام آورده ام:

Superblock: در هر فایل سیستم شامل توضیحات و مشخصات اصلی آن فایل سیستم است. یکی از مهمترین این ویژگی ها اولین شماره Inode مربوط به این فایل سیستم است که در یک سیستم یونیکسی این شماره ، شماره Inode مربوط به روت یا “/” است.
محتوای Superblock  را می توانید با دستور زیر ملاحظه کنید.

tune2fs  -l /dev/sda1

Inode: ساختمان داده ای است در که مشخصات مربوط به هر فایل به غیر از نام آن را نگه می دارد. مانند اندازه، آدرس داده، مجوز‌های دسترسی و …
برای مشاهده محتویات inode یک فایل می توانید از دستور زیر استفاده کنید.

stat filename.ext

directory entry: هر دایرکتوری مانند یک فایل معمولی دارای Inode و بخش داده است . با این تفاوت که در بخش داده هر دایرکتوری نام و Inode فایل‌ها و پوشه‌های دیگر داخل آن فهرست شده است. به این فهرست directory entry می گویند.

نحوه دسترسی به فایل

زمانی که شما تصمیم می گیرید فایلی به نام home/behrad/test.txt/ را باز کنید، برای پیدا کردن آن سیستم مراحل زیر را انجام  می دهد.

۱- ابتدا به Superblock مراجعه می کند و آدرس اولین Inode سیستم یا همان “/” را به دست می آورد.
۲- سپس در Directory entry های آن به دنبال آدرس Inode پوشه home می گردد
۳- پس از پیدا کردن home در directory entry مربوط به پوشه home به دنبال آدرس Inode پوشه behrad می گردد.
۴- پس از آن در Directory entry پوشه behrad شماره Indoe فایل test.txt را پیدا می کند و از طریق آن به داده ها دسترسی پیدا می کند

ext2fs

اگه موضوع  درست فهمیده باشید، درک Hardlink و softlink کار سختی نیست و تنها با دوشکل زیر گویای هر موضوع هست.

Hardlink

hardlink

Softlink

softlink

منبع
The Linux Documentation Project: Filesystem
Concept of Symlink and hardlink in Linux

2 پاسخ

  1. تشکر. بسیار مفید بود.
    یه سوال داشتم: وقتی تو محیط گرافیکی از یک فایل (مثلا foo.txt) یک لینک یا به اصطلاح shortcut می سازم، و ls -li می زنم به مسیر کامل foo.txt لینک می دهد و در ضمن با کپی کردن فایل لینک در پارتیشن دیگه هم به foo.txt دسترسی دارم ولی وقتی به صورت دستی ln -s foo.txt sym_foo می سازم و ls -li می زنم تنها به اسم فایل لینک می دهد و با کپی کردن sym_foo در پارتیشن دیگر هم، فایل foo.txt قابل دسترسی نیست!!! جریان چیه؟
    ممنون

  2. خواهش می کنم. خوشحالم مفید بوده.
    به خاطر اینه که در محیط گرافیکی لینک را با مسیر کامل می سازه ln -s /home/user/foo.txt /home/user2/foo.txt خوب این لینک را کپی کنی، چون مسیر کامل داره هر جا بزاری کار می کنه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *