نماد سایت بلاگ ایران هاست

آشنایی با Hard Link در لینوکس و نحوه ساخت آن

Hard Link در سیستم عامل لینوکس

در این مقاله به Hard Link در لینوکس می پردازیم. در این میان به اینکه inode چیست پرداخته و سپس تفاوت هارد لینک و سافت لینک در لینوکس را بررسی می کنیم.

inode چیست؟

inode محل نگهداری اطلاعات مربوط به یک فایل است و محل فایل با شماره inode مشخص می شود. فایل سیستم مجموعه بسیار زیادی از inod ها می باشد. به طور کلی از آنجایی که همه چیز در همه توزیع های لینوکس به صورت یک فایل است هر فایل دارای یک inod number یکتا می باشد.

در inode هر فایل اطلاعات بسیار زیادی نگه داری می شود:

در حقیقت فایل سیستم شامل میلیون ها inode می باشد که با ایجاد هر فایل در لینوکس این فایل به یکی از این شماره ها (inode ) لینک می شود.

hard link در لینوکس چیست؟

در صورتی که بخواهیم یک فایل با دو نام متفاوت داشته باشیم به گونه ای که فایل مورد نظر از دو مسیر قابل دسترسی باشد از مفهومی بنام hard link استفاده می شود.  هارد لینک با دستور ln که مخفف link است ساخته میشود.

ویژگی های هارد لینک

نحوه ساخت hard link با یک مثال

یک سناریو عملی را بررسی خواهیم کرد.برای مثال در فولدری بنام folder1 اقدام به ایجاد یک فایل بنام orginalfile می نماییم.با دستور nano در این فایل عبارت هایی را وارد و ذخیره می کنیم.

Mkdir folder1

Cd folder1

Touch orginalfile

Nano orginalfile

حال به مسیر دیگری می رویم و یک فولدر دیگری بنام folder2 ایجاد می کنیم  و داخل آن با دستور ln در لینوکس که برای ایجاد هارد لینک ها می باشد فایل جدیدی بنام linkfile را به orginalfile در مسیر قبلی ساخته شده لینک می کنیم.

Cd /

Mkdir folder2

Cd folder2

Ln /folder1/orginalfile  /folder2/linkfile

به همین راحتی توانستیم اقدام به ساخت یک لینک از نوع Hard نماییم. با گرفتن لیست از هر دو فایل مورد نظر از طریق دستور زیر میشخص می شود که inode number هر دو فایل یکی است. این بدان معنی و مفهوم است که از دید سیستم این دو فایل در حقیقت یک فایل هستند اما با دو نام متفاوت. هر تغییری که در فایل orginalfile انجام شود این تغییر در فایل linkfile نیز اعمال خواهد شد و بالعکس.

در صورتی که تاریخ آخرین به روز رسانی هر کدام از فایل ها تغییر کند این تغییر بر دیگری نیز اعمال خواهد شد. در صورتی که permission مربوط به هرکدام از فایل ها تغییر کند سطح دسترسی فایل دیگر نیز به همان صورت تغییر خواهد یافت.نتیجه گیری نهایی اینکه هر تغییری که در یکی از فایل ها انجام شود آن تغییر در فایل دوم نیز اعمال خواهد شد.

در این نوع از لینک دهی در صورتی که فایل اصلی (اورجینال) اولیه حذف گردد می توانید از طریق مسیر دوم مجدد به فایل دسترسی داشته باشید در حقیقت می توان به عنوان یک mirror و یا بک آپ فایل در نظر گرفت. اما در نظر داشته باشید این نوع لینک دهی دارای محدویت های اساسی می باشد که در زیر به بررسی این محدودیت ها می پردازیم.

محدودیت های لینکدهی با hard link

۱.در صورتی که فایل اصلی در یک پارتیشن دیگری باشد و شما بخواهید hard link این فایل را در پارتیشن مجزای دیگری داشته باشید امکان پذیر نمی باشد.علت این مورد به دلیل تفاوت file system های مختص به هر پارتیشن می باشد.پس نتیجه گیری ما از این محدودیت این است که Hard Link در لینوکس قابلیت cross partitioning نداشته و هر دو فایل یعنی فایل اصلی و hardlink ان حتما بایستی داخل یک پارتیشن باشند

۲.hardlink فقط برروی فایل اعمال می شود و شما نمی توانید این سناریو را در دایرکتوری ها نیز داشته باشید.اساسا یک دایرکتوری با دو نام متفاوت در directory tree لینوکس نمی توان داشت .پس نتیجه گیری مهم این شد که ما تنها و فقط از file ها می توانیم hardlink ایجاد کنیم

در ادامه یک مثال و نمونه عملی از Hard Link در لینوکس را بررسی خواهیم کرد

echo “Welcome to OSTechNix” >source.file

cat source.file

Welcome to OSTechNix

ln source.file hardlink.file

cat hardlink.file

ls –lia

Sample output:

total 16

۱۵۷۴۵۳۲۶ drwxr-xr-x 2 sk users 4096 Dec 13 15:22 .

۱۵۷۲۸۶۴۲ drwx—— ۴۹ sk users 4096 Dec 13 14:50 ..

۱۵۷۴۵۵۵۵ -rw-r–r– ۲ sk users 21 Dec 13 15:20 hardlink.file

۱۵۷۴۵۵۵۵ -rw-r–r– ۲ sk users 21 Dec 13 15:20 source.file

rm source.file

cat hardlink.file

soft link در لینوکس

سافت لینک در لینوکس مفهومی شبیه مفهوم shortcut در ویندوز را دارد. به soft link سمبولیک لینک هم می گویند. با ساخت این نوع از لینک، یک فایل جدید ساخته می شود که در آن مسیر فایل اول قرار دارد.

تفاوت hard link و soft link

خروج از نسخه موبایل