تفاوت بین Soft Link و Hard Link در سیستم عامل لینوکس
لینک نرم و سخت
در هر سیستم عاملی مفهوم به نام shortcut یا میانبر وجود دارد و کارش هم مشخص است ، برای اینکه سرعت دسترسی به فایل ها را بالا ببرد و نیازی نباشد کاربر همه دایرکتوری ها را زیر و رو کند .
در سیستم عامل ویندوز ما این مفهوم را به نام shortcut می شناسیم و در سیستم عامل لینوکس تقریبا همین مفهوم به عنوان Link شناخته می شود.
قبل از اینکه بخواهیم کامل این مفاهیم را تشریح کنیم ابتدا باید بررسی کنیم که inode چیست ؟
بصورت خلاصه بدانید که inode اطلاعات مربوط به یک فایل را نگهداری می کند ، در واقع بر خلاف سیستم عامل ویندوز که ساختار دسترسی به اطلاعات آن به شکل دایرکتوری است در سیستم عامل لینوکس فایل ها با مفهوم inode شناسایی می شوند و محل فایل با یک شماره inode مشخص می شود.
Hard Link لینک سخت
زمانیکه شما یک Shortcut یا Link در لینوکس بصورت Hard Link ایجاد می کنید ،
این Shortcut شما به Inode فایل مورد نظر اشاره می کند و این یعنی اگر فایل شما جابجا شود و یا تغییر نام بدهد اصلا مهم نیست و Link شما همیشه درست کار می کند زیرا اصلا ارتباطی به اسم فایل شما ندارد و به inode متصل شده است .
از ویژگی های Hard Link می توان به این اشاره کرد که شما هر تغییری که بر روی Hard Link یا فایل اصلی انجام بدهید بر روی هر دو اعمال می شود ، اگر شما اسم فایل اصلی را تغییر بدهید Hard Link شما با توجه به اینکه به ماهیت Inode اشاره می کند تغییر نخواهد کرد.
اما از معایب استفاده از Hard Link این است که نمی توان از آن در بین چند فایل سیستم یا پارتیشن استفاده کرد ،
با توجه به اینکه در هر فایل سیستم ساختار inode ها متفاوت است و شماره گذاری ها نیز تفاوت دارد Hard Link ها فقط در یک فایل سیستم قابل پیاده سازی هستند.
(soft link (symbolic link یا لینک نرم
اما Soft Link ها که آنها را به عنوان Symbolic Link هم می شناسیم چیزی مشابه یا تقریبا همان مفهوم shortcut را در ویندوز برای ما تداعی می کنند .
شما آدرس یک فایل را دارید و به سیستم Soft Link با مسیر کوچکتر و دسترسی راحت تر معرفی می کنید ،
ساختار Soft Link ها بسیار انعطاف پذیر است و شما از هر جایی می توانید به جای دیگر Soft Link بزنید و هیچگونه مشکلی در خصوص محل و فایل سیستم در Soft Link ها وجود ندارد ،
اما معایبی هم در این نوع Link وجود دارد ، زمانیکه شما اسم فایل اصلی را تغییر بدهید Soft Link شما خراب یا در اصطلاح Broke می شود و دیگر نمی توانید از آن استفاده کنید زیرا ماهیت اصلی آن اتصال به اسم فایل است نه inode فایل ،
برای اینکه بتوانید راحت تر از برخی از فایل ها استفاده کنید شما می توانید برای آنها با استفاده از Soft Link ها اسم مستعار هم بسازید ،
معمولا در سرویس های پر کاربرد ما از Link ها در پروفایل های کاربری خودمان برای دسترسی سریعتر به فایل ها استفاده می کنیم. به تصویر زیر دقت کنید تفاوت این دو نوع Link نمایش داده شده است.
نحوه ساخت Hard Link و Soft Link
ایجاد کردن Soft Link و Hard Link شاید ساده ترین کاری باشد که شما در سیستم عامل لینوکس می توانید انجام بدهید ،
برای اینکار کافیست مسیر فایل اول را به همراه دستور ln وارد کرده و در قسمت دوم نیز اسم فایل جدید در مسیر جدید را وارد کنید به مثال زیر توجه کنید
ما یک فایل به نام test که در مسیر ابتدایی وجود دارد را در پروفایل شخصی خودمان به نام softlink-test خالی link می کنیم :
[aria@Stark ~/Desktop]$ ln -s test softlink-test
مثال بالا با توجه به آوردن حرف s به معنی symbolic است و یک soft link است
اگر بخواهیم مثال بالا را بصورت hard link ایجاد کنیم فقط s را حذف می کنیم و دقت کنید که hardlink-test شما باید در همان فایل سیستمی باشد که پروفایل کاربری aria نیز قرار گرفته است
به مثال زیر برای ایجاد hard link توجه کنید :
[aria@Stark ~/Desktop]$ ln test hardlink-test
در خروجی دستور ls -l و ls -li تفاوت بین این دو لینک مشخص است
من از دستود command قبل از ls استفاده کردم چون کامند ls من alias شده و واسه اینکه اون دستور انجام نشه و از خود کامند به جا الیاس استفاده شه از command قبل دستور استفاده کرد.اطلاعات بیشتر در مورد الیاس ها در مقاله ” alias در لینوکس – چند alias کاربردی “