terminal:l:symbolic-links
تفاوتها
تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده میکنید.
نگارش قبل در دو طرفنگارش قبلنگارش بعد | نگارش قبل | ||
terminal:l:symbolic-links [2019/01/14 20:04] – phoenix | terminal:l:symbolic-links [2019/01/17 22:40] (فعلی) – [لینک های soft] phoenix | ||
---|---|---|---|
خط 1: | خط 1: | ||
====== | ====== | ||
===== مفهوم link در لینوکس چیست؟ ===== | ===== مفهوم link در لینوکس چیست؟ ===== | ||
- | در کل لینک ها یک نقظه اشاره به نقشه ای از یک سیستم فایل میسازند . این می تواند برای شما بسیار مفید باشد شما با ساخت یک لینک به یک دایرکتوری دیگر احتیاجی به تایپ کامل مسیر آن ندارید و یا لازم نیست در مدیر فایل گرافیکی خود دائم به بالا و پایین بروید و کافیست یکبار بر روی لینک خود کلیک کنید. شما میتوانید لینک ها را همان Shortcut ها (میانبرها) در مایکروسافت ویندوز در نظر بگیرید که البته چند تقاوت نیز با یکدیگر دارند. \\ | + | در کل لینک ها یک نقظه اشاره به نقشه ای از یک سیستم فایل میسازند . این می تواند برای شما بسیار مفید باشد شما با ساخت یک لینک به یک دایرکتوری دیگر احتیاجی به تایپ کامل مسیر آن ندارید و یا لازم نیست در مدیر فایل گرافیکی خود دائم به بالا و پایین بروید و کافیست یکبار بر روی لینک خود کلیک کنید. شما میتوانید لینک ها را همان |
همانطور که اشاره شد لینک ها در لینوکس همان مفهوم Shortcut ویندوز هستند. در خروجی [[terminal: | همانطور که اشاره شد لینک ها در لینوکس همان مفهوم Shortcut ویندوز هستند. در خروجی [[terminal: | ||
دستور ln برای ایجاد اینکهای soft و hard استفاده میشود. هر فایل لینوکسی از دو بخش داده ها و نام فایل تشکیل شده است داده ها مرتبط با **inode** هستند و **inode** نکاشت اینکه داده در کجا هستند را بر عهده دارد. \\ | دستور ln برای ایجاد اینکهای soft و hard استفاده میشود. هر فایل لینوکسی از دو بخش داده ها و نام فایل تشکیل شده است داده ها مرتبط با **inode** هستند و **inode** نکاشت اینکه داده در کجا هستند را بر عهده دارد. \\ | ||
برای درک بهتر داده ها در غالب فایلها ذخیره میشوند و این داده ها روی هارد قرار میگیرند وقتی [[terminal: | برای درک بهتر داده ها در غالب فایلها ذخیره میشوند و این داده ها روی هارد قرار میگیرند وقتی [[terminal: | ||
===== لینک های سخت یا hard link ها ===== | ===== لینک های سخت یا hard link ها ===== | ||
- | یک hard link یک ورودی دایرکتوری است که به محل فیزیکی یک فایل اشاره دارد. ((به محل فیزیکی یک فایل **inode** میگویند)) در حقیقت ما تنها یک فایل داریم اما ورودی ۲ یا بیشتر دایرکتوری به محل فیزیکی آن بر روی دیسک سخت اشاره دارند. برای ایجاد یک **hard link** در خط فرمان از دستور ln استفاده میشود. این دستور بطور پیش فرض یک **hard link** میسازد. برای نمونه من در اینجا یک **hard link** به فایل **art.txt** در دایرکتوری خانگی ام می سازم. | + | یک **hard link** یک ورودی دایرکتوری است که به محل فیزیکی یک فایل اشاره دارد. ((به محل فیزیکی یک فایل **inode** میگویند)) در حقیقت ما تنها یک فایل داریم اما ورودی ۲ یا بیشتر دایرکتوری به محل فیزیکی آن بر روی دیسک سخت اشاره دارند. برای ایجاد یک **hard link** در خط فرمان از دستور ln استفاده میشود. این دستور بطور پیش فرض یک **hard link** میسازد. برای نمونه من در اینجا یک **hard link** به فایل **art.txt** در دایرکتوری خانگی ام می سازم. |
+ | |||
+ | < | ||
+ | ln / | ||
+ | </ | ||
+ | در این نمونه یک ورودی در دایرکتوی ''/ | ||
+ | اگر من فایل اصلی یعنی '' | ||
+ | <WRAP center round tip 60%> | ||
+ | باید توجه داشته باشید که **hard link** برای لینک دادن به دایرکتوری ها و به فایلی که در فایل سیستمی بر روی کامپیوتر دیگری است نمیتوان استفاده کرد. | ||
+ | </ | ||
+ | ===== لینک های نرم یا soft link ها ===== | ||
+ | لینک های نرم یا **soft link** | ||
+ | |||
+ | < | ||
+ | ln -s / | ||
+ | </ | ||
+ | اگر شما از [[terminal: | ||
+ | < | ||
+ | lrwxrwxrwx. 1 phoenix phoenix 32 Jan 17 18:24 art.txt -> / | ||
+ | </ | ||
+ | همانطور که مشاهده میکنید بیت اول حرف l میباشد به معنی Link و بعد از پایان نام فایل بعد از یک **"< | ||
+ | ===== تفاوت بین انواع لینک ها ===== | ||
+ | ==== لینک های hard ==== | ||
+ | * با لینکهای **Hard** نمیتوان دایرکتوری ها را لینک کرد. | ||
+ | * فقط در همان سیستم فایلی که هستند در دسترس هستند و در صورت انتقال آنها به یک سیستم فایل دیگر (پارتیشن دیگر) فایل استفاده نیستند. | ||
+ | * اگر فایل اصلی پاک شود باز هم به آخرین محتوای فایل اصلی دسترسی داریم. | ||
+ | * مجوز های دسترسی تمام لینکها مانند فایل اصلی است و شما برای تغییر مجوز های دسترسی میبایست از فایل اصلی اقدام کنید. | ||
+ | |||
+ | ==== لینک های soft ==== | ||
+ | * میتوان یک **inode** را به چندین نام فایل اختصاص داد. | ||
+ | * برای لینک دادن میان دایرکتوری ها استفاده میشوند. | ||
+ | * میتوان در دیگر سیستم فایل ها هم استفاده کرد. | ||
+ | * اگر فایل اصلی پاک شوند دیگر از طریق لینک به فایل اصلی دسترسی نداریم. | ||
+ | * سایز فایلها به شما دروغ میگویند! به این دلیل که این لینک ها خود یک فایل هستند با حجمی بسیار کوچک در صورتیکه **hard link** ها به دلیل اشاره مستقیم به فایل اصلی حجم فایل اصلی را نمایش میدهند. | ||
+ | * زمان اصلاح یا **modification** ی که در لینکهای نرم نمایش داده میشود مربوط به اصلاحاتی است که شما بر روی این لینک انجام داده اید اما در **hard link** این زمان همان زمان دقیق اصلاحات فایل اصلی است. | ||
+ | * نام فایل اصلی بعد از یک علامت < | ||
+ | * همانطور که بالاتر اشاره شد برای دایرکتوری های و فایل سیستم هایی که از راه دور با آنها کار میکنید و یا به هر طریقی بر روی کامپیوتر شما نیستند نمیتوانید از لینکهای نرم و سخت استفاده کنید. | ||
+ | |||
+ | ===== چرا با پاک شدن فایل اصلی همچنان میتوان به آخرین محتوای آن از طریق hard link دسترسی داشت؟ ===== | ||
+ | چونکه inode فایل اصلی و hard link با هم یکی هستند ولی inode فایل اصلی و soft link متفاوت هستند برای درک بهتر [[terminal: | ||
+ | < | ||
+ | mkdir test | ||
+ | cd test | ||
+ | echo "in file baray test inode hast" > file | ||
+ | </ | ||
+ | حالا با دستور زیر یک لینک سخت بسازید | ||
+ | < | ||
+ | ln file file2 | ||
+ | </ | ||
+ | و با دستور زیر یک لینک نرم بسازید با استفاده از گزینه **s** | ||
+ | < | ||
+ | ln -s file file3 | ||
+ | </ | ||
+ | حالا [[terminal: | ||
+ | < | ||
+ | -> $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 | ||
+ | </ | ||
+ | حالا اگر با [[terminal: | ||
terminal/l/symbolic-links.1547483685.txt.gz · آخرین ویرایش: 2019/01/14 20:04 توسط phoenix