ابزار کاربر

ابزار سایت


terminal:l:symbolic-links

تفاوت‌ها

تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.

پیوند به صفحه‌ی تفاوت‌ها

نگارش قبل در دو طرفنگارش قبل
نگارش بعد
نگارش قبل
terminal:l:symbolic-links [2019/01/17 18:16] phoenixterminal:l:symbolic-links [2019/01/17 22:40] (فعلی) – [لینک های soft] phoenix
خط 16: خط 16:
 باید توجه داشته باشید که **hard link** برای لینک دادن به دایرکتوری ها و به فایلی که در فایل سیستمی بر روی کامپیوتر دیگری است نمیتوان استفاده کرد. باید توجه داشته باشید که **hard link** برای لینک دادن به دایرکتوری ها و به فایلی که در فایل سیستمی بر روی کامپیوتر دیگری است نمیتوان استفاده کرد.
 </WRAP> </WRAP>
 +===== لینک های نرم یا soft link ها  =====
 +لینک های نرم یا **soft link**  ها که با نام های **symbolic links** یا **symlinks** نیز شناخته میشوند. بسیار شبیه **shortcut** های ویندوز هستند در soft link ها بر خلاف hard link ها هر لینک آدرس سخت افزاری((inode)) مخصوص به خودشان را دارند. ایم لینکها تنها یک فایل هستند که میتوانند به یک فایل دیگر اشاره کنند. برای ایجاد این لینکها از گزینه ''s-'' به همراه دستور **ln** استفاده میشود
 +
 +<code;bash;>
 +ln -s /tmp/art.txt ~/Pic/art.txt
 +</code> 
 +اگر شما از [[terminal:l:ls_command_list_file_and_directory_names_and_attributes|دستور ls -l]] برای دیدن این فایل استفاده کنید به نتیجه ای مانند زیر خواهید رسید.
 +<code;bash;>
 +lrwxrwxrwx. 1 phoenix phoenix 32 Jan 17 18:24 art.txt -> /tmp/art.txt
 +</code> 
 +همانطور که مشاهده میکنید بیت اول حرف l میباشد به معنی Link و بعد از پایان نام فایل بعد از یک **"<-"** آدرس فایل اصلی آمده است.
 +===== تفاوت بین انواع لینک ها =====
 +==== لینک های hard ====
 +  * با لینکهای **Hard** نمیتوان دایرکتوری ها را لینک کرد.
 +  * فقط در همان سیستم فایلی که هستند در دسترس هستند و در صورت انتقال آنها به یک سیستم فایل دیگر (پارتیشن دیگر) فایل استفاده نیستند.
 +  * اگر فایل اصلی پاک شود باز هم به آخرین محتوای فایل اصلی دسترسی داریم.
 +  * مجوز های دسترسی تمام لینکها مانند فایل اصلی است و شما برای تغییر مجوز های دسترسی میبایست از فایل اصلی اقدام کنید.
 +
 +==== لینک های soft ====
 +  * میتوان یک **inode** را به چندین نام فایل اختصاص داد.
 +  * برای لینک دادن میان دایرکتوری ها استفاده میشوند.
 +  * میتوان در دیگر سیستم فایل ها هم استفاده کرد.
 +  * اگر فایل اصلی پاک شوند دیگر از طریق لینک به فایل اصلی دسترسی نداریم.
 +  * سایز فایلها به شما دروغ میگویند! به این دلیل که این لینک ها خود یک فایل هستند با حجمی بسیار کوچک در صورتیکه **hard link** ها به دلیل اشاره مستقیم به فایل اصلی حجم فایل اصلی را نمایش میدهند.
 +  * زمان اصلاح یا **modification** ی که در لینکهای نرم نمایش داده میشود مربوط به اصلاحاتی است که شما بر روی این لینک انجام داده اید اما در **hard link** این زمان همان زمان دقیق اصلاحات فایل اصلی است.
 +  * نام فایل اصلی بعد از یک علامت <key><-</key> میآید و بر خلاف **hard link** اگر فایل اصلی را پاک کنید این لینک به یک لینک خراب یا به اصطلاح درست به لینک یتیم (**orphan**) تبدیل میشود.
 +  * همانطور که بالاتر اشاره شد برای دایرکتوری های و فایل سیستم هایی که از راه دور با آنها کار میکنید و یا به هر طریقی بر روی کامپیوتر شما نیستند نمیتوانید از لینکهای نرم و سخت استفاده کنید.
 +
 +===== چرا با پاک شدن فایل اصلی همچنان میتوان به آخرین محتوای آن از طریق hard link دسترسی داشت؟ =====
 +چونکه inode فایل اصلی و hard link با هم یکی هستند ولی inode فایل اصلی و soft link متفاوت هستند برای درک بهتر [[terminal:m:how_to_create_a_directory_or_folder_mkdir_command|یک دایرکتوری به نام test بسازید]] و سپس یک فایل را با دومین دستور در آن ایجاد کنید و محتوایی را در آن بنویسید.
 +<code;bash;>
 +mkdir test
 +cd test
 +echo "in file baray test inode hast" > file
 +</code> 
 +حالا با دستور زیر یک لینک سخت بسازید
 +<code;bash;>
 +ln file file2
 +</code> 
 +و با دستور زیر یک لینک نرم بسازید با استفاده از گزینه **s**
 +<code;bash;>
 +ln -s file file3
 +</code>  
 +حالا [[terminal:l:ls_command_list_file_and_directory_names_and_attributes|دستور ls -li]] را اجرا کنید تا بتوانید **inode** ها را مقایسه نمایید در خروجی مشاهده میکنید که **inode** فایل اصلی و لیسنک سخت با هم یکی هستند ولی **inode** فایل اصلی و لینک نرم متفاوتند.
 +<code;bash;>
 +-> $ls -li
 +total 8
 +9445379 -rw-rw-r--. 2 phoenix phoenix 28 Jan 17 20:06 file
 +9445379 -rw-rw-r--. 2 phoenix phoenix 28 Jan 17 20:06 file2
 +9445380 lrwxrwxrwx. 1 phoenix phoenix  4 Jan 17 20:06 file3 -> file
 +</code>  
 +حالا اگر با [[terminal:c:linux_cat_command_usage_with_examples|دستور cat]] محتوای هر یک از فایلها را بخوانید خواهید دید که خروجی همه یکی هستند اما اگر فایل اصلی را پاک کنید دیگر از طریق لینک نرم نیمتوانید محتوای فایل را بخوانید.
 +
  
terminal/l/symbolic-links.1547736393.txt.gz · آخرین ویرایش: 2019/01/17 18:16 توسط phoenix

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki