
دستور ln در لینوکس برای ایجاد لینک به فایل یا دایرکتوری
دستور ln در لینوکس برای ساخت لینک Hard یا soft (symlink) برای فایل ها یا دایرکتوری ها استفاده می شود تا به عنوان یک میانبر برای دسترسی سریع تر به فایل/دایرکتوری و مدیریت کارآمدتر آنها به کار رود.
لینک های سخت و نرم تفاوت های ویژه ای دارند که همین تفاوت ها باعث شده است هر کدام در زمینه های خاصی به کار روند. با دستور ln در لینوکس می توانید مطابق با نیاز خود برای فایل ها یا دایرکتوری های موردنظر خود لینک ایجاد کنید و از آن به عنوان shortcut برای دسترسی به آنها استفاده کنید.
پیش نیازهای استفاده از دستور ln در لینوکس
- سیستم یا سرور مبتنی بر لینوکس
- حساب کاربری با امتیازات sudo
- دسترسی به فایل سیستم
- نصب بودن دستور ln
دستور ln به طور پیش فرض در اکثر توزیع های لینوکس نصب است ولی اگر بعد از اجرای دستور ln –version متوجه شدید که این دستور در سیستم شما نصب نیست، ابتدا باید دستور نصب ln را اجرا کنید:
دستور نصب ln در توزیع های مبتنی بر دبیان مثل اوبونتو
sudo apt install coreutils
دستور نصب ln در توزیع های مبتنی بر ردهت مثل CentOS و فدورا
sudo yum install coreutils
یا
sudo dnf install coreutils
دستور نصب ln در آرچ لینوکس
sudo pacman -S coreutils
دستور نصب ln در OpenSUSE
sudo zypper install coreutils
بعد از اینکه دستور نصب با موفقیت اجرا شد، با استفاده از دستور زیر می توانید از نصب موفقیت آمیز آن مطمئن شوید:
ln --version
اگر به دنبال سروری هستید که عملکرد، امنیت و پایداری ایده آلی را برای مدیریت کارآمدتر فایل ها برای شما فراهم کنید و از انعطاف لازم برای ایجاد انواع لینک های سخت و نرم برخودار باشد، توصیه می کنیم به صفحه خرید سرور مجازی لینوکس مراجعه کنید و پلن ایده آل خود را سفارش دهید.
سینتکس دستور ln در لینوکس
در حالت کلی دستور ln در ۳ فرم مختلف قابل استفاده است:
فرم ۱)
ln [OPTION]... [-T] TARGET LINK_NAME
ایجاد لینک LINK_NAME برای فایل موردنظر
فرم ۲)
ln [OPTION]... TARGET
ایجاد یک لینک برای فایل مبدا در دایرکتوری فعلی به اسم همان فایل
فرم ۳)
ln [OPTION]... TARGET... DIRECTORY
ایجاد لینک از فایل های مبدا در دایرکتوری موردنظر
با اینکه موقع بررسی مثال های کاربردی به طور کامل با نحوه استفاده از این سینتکس ها آشنا خواهید شد ولی OPTION که در همه فرم ها موجود است چه می تواند باشد؟
آپشن های دستور ln
آپشن | کاربرد |
b- | ایجاد یک بکاپ از فایل مقصد |
f- | حذف فایل های مقصد موجود |
i- | درخواست حذف فایل های موردنظر به صورت تعاملی |
P- | ایجاد هارد لینک مستقیم برای لینک های نمادین |
r- | ایجاد لینک نسبت به مکان لینک |
s- | ایجاد لینک نرم به جای لینک سخت |
T- | برخورد با اسم لینک به عنوان یک فایل عادی |
t- | تعیین دایرکتوری برای ایجاد لینک ها |
v- | ارائه اطلاعات از پروسه لینک سازی |
برای دسترسی به اطلاعات و جزئیات بیشتر در مورد آپشن های دستور ln می توانید از دو دستور زیر کمک بگیرید:
man ln
ln -h
مثال های کاربردی از دستور ln در لینوکس
با این مثال ها می توانید نحوه استفاده و کاربردهای این دستور را به طور کامل یاد بگیرید:
ایجاد یک hard link از فایل موردنظر
در حالت پیش فرض (بدون آپشن)، لینکی که برای فایل موردنظر ایجاد می شود، از نوع لینک سخت است.
به عنوان مثال اگر دستور زیر را ایجاد کنید:
ln /home/asam/videos/video.mp4 hard_link
دستور ln برای فایل video.mp4 موجود در مسیر مشخص شده یک لینک سخت ایجاد می کند و در مسیر فعلی ترمینال نگهداری می کند که شما هم بدون هیچ مشکل و افت اعتباری می توانید این فایل هارد لینک را به دایرکتوری دیگری منتقل کنید.
البته می توانید مسیر دلخواهی را برای ذخیره سازی فایل لینک لحاظ کنید:
ln /home/asam/videos/video.mp4 /documnts/files/hard_link
ایجاد لینک نرم یا Symlink برای یک فایل
برای این کار کافیست اسم فایل مبدا و فایل لینکی که می خواهید برای آن ایجاد کنید را به صورت زیر در دستور ln لحاظ کنید:
ln -s my_file.txt my_link.txt
آپشن s به دستور ln می گوید که فایل لینک ایجاد شده را از نوع Symlink در نظر بگیرد.
از این به بعد هر وقت my_link.txt را باز کنید، سیستم شما به طور خودکار به فایل اصلی my_file.txt رجوع می کند.
اما قاعده ای برای تنظیم پسوند فایل لینک وجود دارد؟
نه. این پسوند به قالب یا قاعده ای خاصی محدود نیست و به انتخاب شما بستگی دارد. در کل، ۳ روش برای نام گذاری فایل لینک ها وجود دارد.
۱. بدون پسوند
۲. پسوند مشابه فایل اصلی
۳. پسوند اختیاری
ضرورت و اجباری برای انتخاب این روش ها وجود ندارد و این شما هستید که باید بر اساس نیاز و ترجیح خود از یک پسوند مناسب استفاده کنید.
ایجاد سیملینک برای یک دایرکتوری
دستور ایجاد لینک نمادین برای دایرکتوری مثل ایجاد symlink برای فایل است. فقط این بار به جای مسیر فایل، مسیر دایرکتوری لحاظ می شود و لینک نمادین هم به صورت دایرکتوری مشخص می شود:
ln -s /mnt/my_drive/movies ~/my_movies
دستور بالا، برای مسیر mnt/my_drive/movies/ یک لینک ایجاد می کند و آن را در دایکتوری home ذخیره می کند.
هر زمان که با دستور cd ~/my_movies به این مسیر بروید، سیستم عامل به طور خودکار شما را به دایرکتوری mnt/my_drive/movies/ هدایت می کند.
بازنویسی لینک های نمادین
اگر قبلا برای مسیر موردنظر لینک نمادین ایجاد کرده اید و اکنون باز می خواهید برای آن لینک دیگری ایجاد کنید، با خطای Overwriting مواجه خواهید شد.
برای اینکه این محدودیت را دور بزنید و لینک قبلی را حذف و آن را با لینک جدید جایگزین کنید، باید آپشن f را هم به دستور ln در لینوکس اضافه کنید:
ln -sf my_file.txt my_link.txt
حذف لینک های نمادین
اگر به هر دلیلی می خواهید میانبری که برای فایل یا دایرکتوری موردنظر ایجاد کرده را از بین ببرید، می توانید از دستور unlink یا rm استفاده کنید.
unlink my_link.txt
یا
rm my_link.txt
حالا اگر دایرکتوری (محل ذخیره سازی فایل لینک) را بررسی کنید، می بینید که اثری از این لینک نیست.
تفاوت های لینک سخت و نرم
بررسی لینک سخت
- لینک سخت به محتوای فایل اشاره می کند و یک کپی یا نسخه پشتیبان از آن را نگهداری می کند.
- امکان ایجاد چند لینک سخت برای فایل اصلی وجود دارد.
- حذف یک لینک سخت به معنی حذف فایل نیست و تا زمانی که حداقل یکی از لینک های سخت باقی مانده اند، حتی اگر فایل اصلی حذف شده باشد هم باز هم امکان دسترسی به آن وجود دارد.
- لینک های سخت زمانی کار می کنند که فایل مبدا و لینک در یک پارتیشن یا سیستم فایل قرار داشته باشند. دلیل این امر این است که لینک سخت به inode فایل اصلی اشاره می کند و inode در هر پارتیشن منحصر به فرد است.
- لینک سخت برای دایرکتوری قابل استفاده نیست.
- لینک های سخت فقط با استفاده از خط فرمان ایجاد می شوند.
بررسی لینک نرم
- لینک نرم یا symlink یک فایل جداگانه است که به مسیر فایل موردنظر اشاره می کند.
- با حذف فایل اصلی، لینک نرم بی فایده می شود و به یک لینک شکسته تبدیل می شود.
- با حذف لینک نرم، فایل اصلی بدون هیچ تغییری، دست نخورده باقی می ماند.
- بر خلاف لینک سخت، لینک نرم می تواند علاوه بر فایل ها به دایرکتوری ها، پارتیشن ها یا حتی فایل سیستم ها اشاره کند.
- وقتی لینک نرم اجرا می شود، سیستم به آدرس مقصد هدایت می شود و فایل اصلی را باز می کند.
- لینک های نرم علاوه بر ترمینال با رابط گرافیکی هم ایجاد می شوند.
ویژگی | لینک سخت | لینک نرم |
اتصال به فایل | اتصال به inode | اتصال به آدرس فایل |
پارتیشن | محدود به یک پارتیشن | بدون محدودیت در پارتیشن |
ماندگاری در صورت حذف فایل اصلی | امکان دسترسی به محتوای فایل حذف شده | شکسته (بدون استفاده) شدن لینک |
امکان استفاده برای دایرکتوری | غیرممکن | ممکن |
روش های ساخت | ترمینال | ترمینال و رابط گرافیکی |
بیایید با یک مثال، تفاوت این دو لینک را بهتر درک کنیم:
فرض کنید دو نفر به اسم علی (لینک سخت) و رضا (لینک نرم) به کتاب A علاقمند هستند و می خواهند به آن دسترسی داشته باشند.
علی یک کپی دقیق از کتاب A ندارد ولی هر زمان که نیاز داشته باشد می تواند نسخه اصلی را از کتابخانه بگیرد و استفاده کند.
رضا یک یادداشت در دفتر خود دارد که می گوید: “برای خواندن کتاب A، به کتابخانه برو و آن را از قفسه شماره X بردار.”
یادداشت رضا خود کتاب نیست، بلکه فقط یک نشانی از آن است.
حالا اگر کتابخانه تصمیم بگیرید به خاطر کمبود جا کتاب A را فهرست حذف کند، اگر علی همچنان آن کتاب را در اختیار داشته باشد، می تواند آن را نگه دارد و بخواند.
اما رضا که فقط یک نشانی از آن دارد، با رفتن به کتابخانه نمی تواند آن را پیدا کند.
پس در لینک سخت، حذف فایل اصلی یا دسترسی ها باعث از بین رفتن فایل اصلی نمی شود و تا زمانی که حداقل یک دسترسی وجود دارد، همچنان می توان به فایل اصلی دست پیدا کرد.
اما با حذف شدن فایل اصلی، لینک نرم بدون استفاده می شود چون دیگر خبری از منبعی که به آن اشاره می کند، نیست.
سخن آخر
دستور ln برای ساخت لینک نرم و سخت از فایل ها یا دایرکتوری های لینوکسی استفاده می شود که حکم یک میانبر برای دسترسی سریع تر و مدیریت کارآمدتر به داده ها را دارد.