# ایجاد لینکهای سخت و نمادین در لینوکس
در لینوکس، **لینکها** روشی برای ایجاد ارجاع (یا میانبر) به یک فایل یا دایرکتوری هستند. دو نوع لینک وجود دارد:
1. **Hard Link (لینک سخت)**
2. **Symbolic Link (لینک نمادین یا soft link)**
در این مقاله با تفاوتها، کاربردها و نحوه ساخت آنها آشنا میشوید.
---
## 🧱 لینک سخت (Hard Link) چیست؟
لینک سخت در واقع یک ورودی دیگر در سیستم فایل است که مستقیماً به **inode** فایل اشاره دارد. یعنی فایل و لینک سخت آن، از دید سیستم، عملاً یک فایل هستند.
### 📌 ویژگیهای Hard Link:
- فایل و لینک آن محتوای یکسان دارند.
- حذف فایل اصلی تأثیری روی لینک ندارد.
- فقط برای فایلها قابل استفاده است (نه دایرکتوریها).
- نمیتوان بین دو پارتیشن مختلف ایجاد کرد.
### 📥 ایجاد Hard Link
```bash
ln original.txt hardlink.txt
```
### 📤 بررسی لینکهای سخت
```bash
ls -li
```
ستون اول (inode) باید برای هر دو فایل یکسان باشد.
---
## 🔗 لینک نمادین (Symbolic Link) چیست؟
لینک نمادین مانند یک **میانبر** یا **شورتکات** عمل میکند. این لینک، یک فایل جداگانه است که مسیر فایل اصلی را در خود ذخیره میکند.
### 📌 ویژگیهای Symbolic Link:
- میتواند به فایل یا دایرکتوری اشاره کند.
- بین پارتیشنها و حتی شبکه قابل استفاده است.
- اگر فایل اصلی حذف شود، لینک شکسته میشود (broken link).
### 📥 ایجاد Symbolic Link
```bash
ln -s /path/to/original target_link
```
مثال:
```bash
ln -s /home/user/file.txt link.txt
```
### 🔍 بررسی لینکهای نمادین
```bash
ls -l
```
خروجی مانند زیر خواهد بود:
```
lrwxrwxrwx 1 user user 13 Apr 14 10:00 link.txt -> /home/user/file.txt
```
---
## 🧪 تفاوت لینک سخت و نمادین
| ویژگی | Hard Link | Symbolic Link |
|----------------------|-------------------------------|-----------------------------|
| اشاره به | inode فایل | مسیر فایل |
| حذف فایل اصلی | لینک همچنان کار میکند | لینک شکسته میشود |
| کار با دایرکتوریها | معمولاً غیرمجاز | مجاز |
| بین پارتیشنها | امکانپذیر نیست | امکانپذیر است |
| تشخیص از طریق `ls -l`| inode مشترک دارد | به مسیر اشاره میکند |
---
## 🧹 حذف لینکها
### حذف Hard Link:
مثل حذف فایل عادی است:
```bash
rm hardlink.txt
```
(تا وقتی حداقل یک لینک باقی مانده باشد، داده حذف نمیشود.)
### حذف Symbolic Link:
```bash
rm link.txt
```
(این کار فایل اصلی را حذف نمیکند.)
---
## جمعبندی
استفاده از لینکهای سخت و نمادین به شما این امکان را میدهد که ساختار فایلها را انعطافپذیرتر کنید، میانبر بسازید، یا چند مسیر برای دسترسی به یک فایل داشته باشید. این ابزارها به ویژه در اسکریپتنویسی و مدیریت فایلها بسیار کاربردی هستند.