لینک سخت (Hard Link) در مقابل لینک نمادین (Symbolic Link)
لینک سخت اشارهگر دیگری به همان inode روی دیسک است و عملاً دو نام برای یک فایل واقعی محسوب میشود، در حالی که لینک نمادین (Symlink) یک فایل کوچک جداگانه است که فقط مسیر فایل مقصد را نگه میدارد و میتواند به دایرکتوری یا فایل روی پارتیشن دیگر اشاره کند.
| ویژگی | لینک سخت (Hard Link) | لینک نمادین (Symbolic Link) |
|---|---|---|
| اشاره به | همان inode | مسیر فایل مقصد |
| کار بین پارتیشنها | خیر | بله |
| لینک به دایرکتوری | خیر (معمولاً ممنوع) | بله |
| رفتار پس از حذف مبدأ | داده باقی میماند | لینک شکسته میشود |
کِی از لینک سخت (Hard Link) استفاده کنیم؟
وقتی میخواهید فایل حتی بعد از حذف نام اصلی هم باقی بماند یا نیاز به لینک در همان پارتیشن دارید.
کِی از لینک نمادین (Symbolic Link) استفاده کنیم؟
وقتی میخواهید به یک دایرکتوری اشاره کنید، لینک را بین پارتیشنهای مختلف بسازید یا بخواهید مسیر مقصد را بتوان دید و تغییر داد.
مثال لینک سخت (Hard Link)
ln original.txt hardlink.txt
ls -li original.txt hardlink.txt
# هر دو یک شماره inode دارند
مثال لینک نمادین (Symbolic Link)
ln -s /var/www/html/app app-link
ls -l app-link
# app-link -> /var/www/html/app
اشتباه رایج
اشتباه رایج حذف فایل اصلی و انتظار از بین رفتن hard link همزمان است؛ اما چون هر دو به یک inode اشاره میکنند، تا وقتی همه لینکها حذف نشوند داده واقعی روی دیسک باقی میماند؛ برعکس، حذف فایل اصلی symlink را به یک لینک شکسته (Broken Link) تبدیل میکند.
جمعبندی
برای اشاره به دایرکتوری یا بین پارتیشنها از symlink و برای اطمینان از باقی ماندن داده حتی پس از حذف یک نام از linkهای سخت استفاده کنید.
