آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

لینک (Soft Link & hard Link)

شنبه, ۱۰ خرداد ۱۳۹۹، ۰۲:۲۱ ب.ظ

فرض کنید یک کاربر قصد دارد با استفاده از سه مسیر متفاوت به یک فایل دسترسی داشته باشد. برای انجام اینکار می تواند فایل را در این مسیرها کپی نماید. در ظاهر کاربر به هدفش رسیده است اما استفاده از این روش معایبی مانند سه برابر شدن مصرف فضای دیسک را دارد. همچنین مسئله دیگری که کاربر با  ان مواجه می شود، یکسان نگه داشتن محتوای این فایل ها خواهد بود. کاربر باید هر تغییر، در محتوای یک فایل را در دو فایل دیگر نیز اعمال نماید و این موضوع سبب صرف زمان و انرژی می شود. روش دیگر برای پیاده سازی طرح کاربر، ایجاد لینک به یک فایل می باشد.

* در لینوکس دو نوع لینک وجود دارد :

1. Soft Links :

این نوع لینک که با نام Symbolic Link نیز شناخته می شود، بسیار شبیه به مفهوم Shortcut در سیستم عامل ویندوز می باشد. در تصویر زیر ساختار مربوط به Soft link مشخص می باشد.

                                                    

* با بیان چند مثال به بررسی Soft Link می پردازیم.

نکته : مواردی که در این نوشتار بیان می شود، بر روی سیستم عامل Red Hat Enterprise Linux 7.5، با رابط متنی Bash و کاربر masih اعمال شده اند.

 

& ساخت Soft Link :

* با دستور زیر یک فایل متنی با نام test و محتوای Learn Linux ایجاد می شود.

[masih@Class ~]# echo 'Learn Linux' > test

[masih@Class ~]# cat test

Learn Linux

 

* شکل دستور ln برای ایجاد Soft link بصورت زیر می باشد.

ln   -s     نام دلخواه برای لینک       نام فایل اصلی     

* با اجرای دستور زیر یک Soft link از فایل test ، با نام sl-test-1 در مسیر جاری ساخته می شود.

[masih@Class ~]# ln  -s  test  sl-test-1

* برای ایجاد Soft link در مسیر متفاوت، می توان از آدرس دهی کامل استفاده نمود. با اجرای دستور زیر یک Soft link از فایل test ، با نام sl-test-2 در مسیر tmp/ ساخته می شود.

[masih@Class ]# ln  -s  /home/masih/test  /tmp/sl-test-2

* دستورات زیر وضعیت فایل اصلی و Soft link های آن را نشان می دهد.

[masih@Class ~]# file  test  sl-test-1  ; file  /tmp/sl-test-2

test:       ASCII text

sl-test-1: symbolic link to test

/tmp/sl-test-2: symbolic link to /home/masih/test

[masih@Class ~]# ls -l ; ls -l  /tmp/sl-test-2

lrwxrwxrwx. 1 masih masih  4 Apr 29 20:02 sl-test-1 -> test

-rw-r-----.      1 masih masih 12 Apr 29 20:02 test

lrwxrwxrwx. 1 masih masih 10 Apr 29 20:13 /tmp/sl-test-2 -> /masih/test

[masih@Class ~]# cat  sl-test-1

Learn Linux 

[masih@Class ~]# cat  /tmp/sl-test-2

Learn Linux

 

& ویرایش محتوای فایلها :

* برای تغییر در محتوای فایل، می توان فایل اصلی و یا یکی از Soft Link های آن را ویرایش نمود. بطور مثال با اجرای دستور زیر، عبارت مورد نظر به انتهای فایل اصلی افزوده می شود، و با بررسی محتویات این فایل و لینکهایش با دستور cat، مشخص است که تغییرات بصورت، یکسان اعمال شده اند.

[masih@Class ~]#  echo '2020-04-30'>> test

[masih@Class ~]# cat test

Learn Linux

2020-04-30

[masih@Class ~]# cat sl-test-1

Learn Linux 

2020-04-30

[masih@Class ~]# cat /tmp/sl-test-2

Learn Linux 

2020-04-30

*در مثال زیر Soft Link فایل مورد ویرایش قرار می گیرد. با بررسی خروجی سایر دستورات مشخص است که تغییر یکپارچه اعمال شده است.

[masih@Class ~]#  echo 'Soft Link'>> /tmp/sl-test-2

[masih@Class ~]# cat test

Learn Linux

2020-04-22

Soft Link

[masih@Class ~]# cat sl-test-1

Learn Linux 

2020-04-22

Soft Link

[masih@Class ~]# cat /tmp/sl-test-2

Learn Linux 

2020-04-22

Soft Link

 

& بررسی استفاده از فضای دیسک :

* دستورات زیر وضعیت استفاده از فضای دیسک توسط فایل اصلی و Soft Link هایش را نشان می دهد.

[masih@Class ~]# du -sk * ; du -sk /tmp/sl-test-2

0          sl-test-1

4          test

0          /tmp/sl-test-2

* در بالا حجم فایل بر حسب کیلوبایت نشان داده شده است. مشخص است که فقط فایل اصلی در حال استفاده از فضای دیسک می باشد. حتی با ویرایش Soft Link یک فایل، باز هم فقط حجم فایل اصلی تغییر می کند. به دستورات زیر توجه کنید.

[masih@Class ~]# ll  /etc > sl-test-1

* اجرای دستور بالا، سبب درج خروجی قسمت اول به فایل sl-test-1 می شود. با بررسی فایل اصلی و لینک های آن، مشخص می شود که با این روش هم، فقط حجم فایل اصلی تغییر می کند.

[masih@Class ~]# du -sk * ; du -sk /tmp/sl-test-2

0          sl-test-1

16        test

0          /tmp/sl-test-2

 

& حذف Soft Link :

* برای حذف یک Soft Link می‌توان از دستور unlink بصورت زیر استفاده نمود.

[masih@Class ~]#  unlink sl-test-1

* همچنین دستور زیر نیز سبب حذف Soft Link می شود.

[masih@Class ~]#  rm -f  sl-test-1

* حذف یک Soft Link، تاثیری در سایر Soft Link ها و یا فایل اصلی ندارد. ولی اگر فایل اصلی تغییر (جابجایی ،تغییر نام و یا حذف) کند، تمامی Soft Link هایش غیرفعال می شوند. به مثال زیر توجه کنید.

[masih@Class ~]# mv test change-test

[masih@Class ~]# ll

-rw-r-----.      1 masih masih 2 Apr 30 09:55 change-test

lrwxrwxrwx. 1 masih masih 4 Apr 30 10:29 sl-test-1 -> test

[masih@Class ~]# cat sl-test-1

cat: sl-test-1: No such file or directory

نکته : در رابط گرافیکی، اگر لینکی به هر دلیل غیر فعال شود، در خروجی دستور ll با رنگ قرمز نمایش داده می شود. (حتی اگر در زمان ایجاد به درستی آدرس دهی نشود)

 

& ساخت Soft Link از روی Soft Link دیگر :

* دستور زیر سبب ایجاد یک Soft Link با نام sl-test-5 از لینکsl-test-1 می شود.

[masih@Class ~]# ln -s  sl-test-1  sl-test-5

[masih@Class ~]# ll

lrwxrwxrwx. 1 masih masih  4 Apr 30 10:29 sl-test-1 -> test

lrwxrwxrwx. 1 masih masih 10 Apr 30 10:47 sl-test-5 -> sl-test-1

-rw-r-----.      1 masih masih   2 Apr 30 09:55 test

 

& ساخت Soft Link برای یک دایرکتوری :

* با دستور زیر یک Soft Link با نام sl-dir در مسیر Home Directory ایجاد می شود.

[masih@Class ~]# ln -s  /tmp/dir   /home/masih/sl-dir

 

2. Hard Links :

با ساخت Hard Link، یک اتصال مستقیم به محتوای فایل ایجاد می شود. در تصویر زیر ساختار مربوط به Hard link نشان داده شده است. همانطور که در تصویر مشخص می باشد، لینک و فایل اصلی از یک inode مشترک استفاده می کنند. (inode : هر فایل علاوه بر محتوای اصلی، دارای خصوصیاتی از قبیل اندازه، مالکیت، سطح دسترسی و ... می باشد که این خصوصیات در قالب inode قابل دستیابی می باشد)

                                                 

Hard Link را با بیان چند مثال مورد بررسی قرار می دهیم.

 

& ساخت Hard Link :

* شکل دستور ln برای ایجاد Hard Link بصورت زیر می باشد.

ln      نام دلخواه برای لینک       نام فایل اصلی     

* با دستور زیر یک Hard Link برای فایل test ایجاد می شود. (همانطور که در خروجی مشخص است، عدد inode و سطح دسترسی فایل اصلی و لینک آن یکسان می باشد.)

[masih@Class ~]# ln -s  test  hl-test-1

[masih@Class ~]# ls -il

2359314 -rwxr-x---     2 masih masih 12 May  3 12:55 hl-test-1

2359314 -rwxr-x---     2 masih masih 12 May  3 12:55 test

* با اجرای دستور زیر لینک بعدی برای فایل test ایجاد می گردد و همچنین به تعداد پیوندهای فایل test افزوده می شود. (با ایجاد Soft Link این عدد تغییر نمی کند)

[masih@Class ~]# ln -s  test  hl-test-2

[masih@Class ~]# ls -il

2359314 -rwxr-x---     3 masih masih 12 May  3 12:55 hl-test-1

2359314 -rwxr-x---     3 masih masih 12 May  3 12:55 hl-test-2

2359314 -rwxr-x---     3 masih masih 12 May  3 12:55 test

 

* نکته : فایل اصلی و Hard Link آن حتما باید در یک پارتیشن قرار داشته باشند. (در مورد Soft Link ها این محدودیت وجود ندارد).

* در مثال زیر کاربر قصد ایجاد Hard Link بر روی پارتیشن tmp را دارد. پیغامی که در خروجی دستور زیر نمایش می یابد به دلیل عدم توجه به این محدودیت می باشد.

[masih@Class ~]# ln test  /tmp/hl-test-3

ln: failed to create hard link '/tmp/hln-test-3' => 'test': Invalid cross-device link

 

* نکته : برای دایرکتوری ها نمی توان Hard Link ایجاد کرد.

* نکته : جهت تغییر در محتوای فایل می توان فایل اصلی و یا یکی از Hard Link های آن را ویرایش نمود. به مانند Soft Link تغییرات یکسان اعمال می شود.

 

& حذف Hard Link :

اگر کاربر برای یک فایل، Hard Link ایجاد نماید و سپس فایل اصلی را حذف کند، کاربر همچنان می تواند از طریق Hard Link به فایل دسترسی داشته باشد. این موضوع به این خاطر است که با حذف یک فایل، فقط رکورد مربوط به آن فایل در فایل سیستم حذف می شود و محتوای فایل مورد نظر بر روی دیسک بدون تغییر باقی می ماند.

* برای حذف یک Hard Link می‌توان از دستور unlink بصورت زیر استفاده نمود.

[masih@Class ~]#  unlink hl-test-1

* همچنین دستور زیر نیز سبب حذف Hard Link می شود.

[masih@Class ~]#  rm -f  hl-test-1

۹۹/۰۳/۱۰
عیسی اسداله پور

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی