پرش به محتویات

104.6 - ایجاد و تغییر لینک‌های سخت و نمادین (Hard & Symbolic links)

اهداف یادگیری

در این درس با موارد زیر آشنا می‌شوید:

  • مفهوم لینک (link) و تفاوت بین لینک سخت و نمادین
  • نحوهٔ ایجاد، حذف و بررسی لینک‌ها با ln, unlink, ls, find
  • موارد کاربرد لینک‌ها در مدیریت سیستم

کلیدواژه‌ها

ln, unlink, find -type l, ls -i, ls -l, hard link, symlink, symbolic link


مقدمه و فلسفه

فایل‌ها روی دیسک از طریق inode‌ها شناسایی می‌شوند؛ یک لینک صرفاً یک ورودی دایرکتوری اضافی است که به همان inode اشاره می‌کند. این امکان را می‌دهد که یک فایل بیش از یک نام داشته باشد.

برای دیدن شمارهٔ inode:

$ ls -i script.sh
785379 script.sh

نمایش مجوز و نوع لینک با ls -l انجام می‌شود (برای symlink حرف اولیه l خواهد بود).


ایجاد لینک‌ها

لینک سخت (hard link):

ln new_file hard_link

لینک نمادین (symlink / soft link):

ln -s new_file soft_link

نمونهٔ خروجی:

$ ls -l
-rw------- 2 jadi jadi 9 Mar  6 11:37 new_file
-rw------- 2 jadi jadi 9 Mar  6 11:37 hard_link
lrwxrwxrwx 1 jadi jadi 8 Mar  6 11:37 soft_link -> new_file

تفاوت اصلی: hard link مستقیماً به inode اشاره می‌کند و در صورت حذف فایل اصلی، hard link همچنان قابل استفاده است؛ اما symlink به نام فایل اشاره می‌کند و اگر هدف حذف شود، symlink شکسته می‌شود.

هشدار

نمی‌توانید لینک سخت برای دایرکتوری‌ها ایجاد کنید (به جز موارد خاص مثل . و ..)، و لینک‌های سخت نمی‌توانند از یک فایل‌سیستم عبور کنند؛ اگر نیاز به لینک بین فایل‌سیستم‌ها دارید از symlink استفاده کنید.


لینک‌های شکسته و مشکلات معمول

اگر فایل مقصد حذف شود، cat soft_link خطا خواهد داد؛ برای بررسی لینک‌های نمادین شکسته از find . -xtype l یا find . -lname '*bad*' استفاده کنید.

برای یافتن همهٔ symlink‌ها:

find . -type l

برای حذف لینک از rm یا unlink استفاده کنید:

rm soft_link
unlink hard_link

نکات عملی

  • هنگام ایجاد symlink از مسیر کامل (absolute path) وقتی که احتمال تغییر CWD/موقعیت وجود دارد استفاده کنید تا لینک شکسته نشود.
  • برای تغییر نسخهٔ پیش‌فرض یک باینری (مثلاً python3) معمولاً از symlink استفاده می‌کنند تا بتوان به‌سادگی به نسخهٔ جدید اشاره کرد.

تمرین‌ها

  1. یک فایل جدید بسازید، یک hard link و یک soft link بسازید، فایل اصلی را حذف کنید و رفتار هر دو لینک را مشاهده کنید.
  2. با find در ریشهٔ کار، همهٔ symlink‌های شکسته را پیدا کنید و یک گزارش آماده کنید.

خلاصه

لینک‌ها ابزاری ساده اما قدرتمند برای مدیریت اسامی فایل‌ها هستند؛ hard link برای ایجاد نام‌های متعدد برای همان inode مفید است و symlink برای ارجاع بین فایل‌سیستم‌ها و مسیرهای متغیر مناسب‌تر است.

نکات کلیدی برای آزمون

  • دستور ln : ln file hardlink و ln -s file symlink
  • find . -type l لیست symlinkها را نشان می‌دهد و ls -i شمارهٔ inode را نمایش می‌دهد
  • لینک سخت فقط برای فایل‌ها و در همان فایل‌سیستم کار می‌کند؛ symlink می‌تواند cross-filesystem باشد
  • حذف فایل اصلی: hard link کاربردی باقی می‌ماند، symlink شکسته می‌شود