## 🎯 آموزش انتقال فایلها و دایرکتوریها در لینوکس با دستور `scp`
`scp` مخفف **Secure Copy** است و یکی از سادهترین روشها برای انتقال امن فایلها بین دو سیستم از طریق SSH محسوب میشود.
با `scp` میتوانید به راحتی فایلها یا دایرکتوریها را بین سرورها یا از سیستم خود به سرور و برعکس انتقال دهید.
---
# 🛠️ نصب scp
در اکثر توزیعهای لینوکس، `scp` به صورت پیشفرض همراه با `openssh-client` نصب شده است.
در صورت نیاز:
**Debian/Ubuntu:**
```bash
sudo apt update
sudo apt install openssh-client
```
**CentOS/RHEL/Fedora:**
```bash
sudo dnf install openssh-clients
```
---
# 📂 دستورالعمل پایهی استفاده از scp
فرمت کلی دستور `scp` به صورت زیر است:
```bash
scp [options] source destination
```
---
# بخش اول: 📁 انتقال فایلها
### ✅ کپی فایل از سیستم محلی به سرور ریموت
```bash
scp /path/to/local/file.txt username@remote_host:/path/to/remote/directory/
```
مثال:
```bash
scp /home/user/document.txt [email protected]:/root/
```
---
### ✅ کپی فایل از سرور ریموت به سیستم محلی
```bash
scp username@remote_host:/path/to/remote/file.txt /path/to/local/directory/
```
مثال:
```bash
scp [email protected]:/root/document.txt /home/user/
```
---
# بخش دوم: 📂 انتقال پوشهها (دایرکتوریها)
برای کپی کردن دایرکتوریها باید گزینه `-r` (recursive) را اضافه کنید.
### ✅ کپی دایرکتوری از سیستم محلی به ریموت
```bash
scp -r /path/to/local/folder username@remote_host:/path/to/remote/
```
### ✅ کپی دایرکتوری از ریموت به سیستم محلی
```bash
scp -r username@remote_host:/path/to/remote/folder /path/to/local/
```
---
# 🌟 گزینههای پرکاربرد در scp
| گزینه | توضیح |
|------|------|
| `-r` | کپی به صورت بازگشتی (مخصوص پوشهها) |
| `-P` | مشخص کردن پورت SSH (مثلاً اگر غیر از ۲۲ باشد) |
| `-C` | فشردهسازی دادهها در حین انتقال |
| `-i` | مشخص کردن فایل کلید خصوصی برای اتصال |
---
# 🔥 مثالهای حرفهایتر
### کپی فایل از طریق پورت SSH سفارشی (مثلاً پورت 2222)
```bash
scp -P 2222 /path/to/file username@remote_host:/path/to/remote/
```
---
### استفاده از کلید خصوصی برای اتصال
اگر برای اتصال به سرور به جای پسورد از SSH Key استفاده میکنید:
```bash
scp -i /path/to/private_key.pem /path/to/file username@remote_host:/path/to/remote/
```
---
# 🧠 نکات مهم هنگام استفاده از scp
- اگر میخواهید سرعت بیشتری داشته باشید یا حجم دادهها زیاد است، بهتر است از گزینهی `-C` برای فشردهسازی استفاده کنید.
- اگر حجم انتقال بسیار بزرگ است یا نیاز به انتقال incremental دارید، `rsync` گزینه بهتری نسبت به `scp` است.
- scp از طریق SSH کار میکند؛ پس مطمئن شوید که سرویس SSH روی مقصد فعال است و پورت صحیح باز است.
- امنیت دادهها در `scp` بالا است زیرا انتقال به صورت رمزنگاری شده انجام میشود.
---
# ✅ نتیجهگیری
`scp` ابزاری ساده، قوی و امن برای انتقال فایلها و دایرکتوریها بین سیستمهای مختلف لینوکسی یا حتی بین لینوکس و ویندوز (با WSL یا برنامههایی مثل WinSCP) است.
چه برای انتقال یک فایل ساده، چه برای جابهجایی پوشههای بزرگ، `scp` یک انتخاب سریع و عالی محسوب میشود. 🚀