-
- 08 تیر 1404
- سیستم عامل لینوکس
scp یا Secure Copy یک دستور لینوکس برای کپی کردن فایلها و پوشهها بین دو کامپیوتر از طریق یک اتصال امن SSH است. این ابزار به دلیل سادگی و امنیت بالا، برای انتقال فایل بین سرورها، رایانههای شخصی و ماشینهای مجازی بسیار پرکاربرد است. scp شبیه به دستور cp (کپی فایلها در سیستم محلی) است، اما فایلها را بین دو دستگاه (محلی و ریموت) منتقل میکند.
🔧 ساختار کلی دستور scp
scp [options] [source] [destination]
🎯 اجزای ساختار:
-
[options]
= تنظیمات اضافه (مثل-r
,-P
,-i
) -
[source]
= مسیر فایل یا پوشهای که میخواهی کپی کنی -
[destination]
= مقصدی که میخواهی فایل به آن منتقل شود
✅ حالتهای مختلف استفاده از scp
1. 📤 کپی فایل از محلی به ریموت:
scp file.txt user@remote_host:/remote/path/
📌 توضیح:
-
file.txt
= فایلی در سیستم شما -
user
= نام کاربری سیستم مقصد -
remote_host
= IP یا دامنه مقصد -
/remote/path/
= مسیر ذخیره فایل در سیستم مقصد
📌 مثال عملی:
scp index.html root@192.168.1.50:/var/www/html/
2. 📥 کپی فایل از ریموت به محلی:
scp user@remote_host:/remote/path/file.txt /local/path/
📌 مثال:
scp root@192.168.1.50:/etc/hosts /home/user/Downloads/
3. 📁 کپی پوشه به صورت بازگشتی (recursive):
scp -r myfolder/ user@remote_host:/remote/path/
📌 مثال:
scp -r /home/user/logs/ root@192.168.1.50:/backup/logs/
4. 🔁 کپی چند فایل همزمان:
scp file1.txt file2.txt user@remote_host:/remote/path/
📌 مثال:
scp a.txt b.txt c.txt root@192.168.1.50:/tmp/
⚙️ مهمترین گزینههای scp
گزینه | توضیح |
---|---|
-r |
کپی بازگشتی (برای پوشهها) |
-P |
تعیین پورت SSH (مثلاً -P 2222 ) |
-i |
مشخص کردن کلید خصوصی SSH |
-C |
فشردهسازی دادهها حین انتقال |
-v |
حالت verbose برای نمایش جزئیات |
-q |
خاموش کردن خروجیها (quiet mode) |
-o |
ارسال تنظیمات اضافی به SSH (مثل تنظیمات امنیتی) |
🔐 مثالهای پیشرفته
✔️ استفاده از پورت خاص SSH:
scp -P 2222 file.txt user@host:/path/
📝 اگر سرور مقصد از پورت غیرپیشفرض SSH (یعنی 22) استفاده کند، باید با -P
پورت را مشخص کنیم.
✔️ استفاده از کلید خصوصی (برای ورود بدون رمز عبور):
scp -i ~/.ssh/id_rsa file.txt user@host:/path/
📝 این روش زمانی مفید است که احراز هویت با کلید انجام شود، نه با رمز عبور.
✔️ ترکیب چند گزینه:
scp -r -P 2222 -i ~/.ssh/id_rsa /var/www/ user@host:/backup/www/
💡 نکات و ترفندهای مفید
-
🔄 scp نمیتواند انتقال افزایشی انجام دهد؛ یعنی اگر فایل وجود داشته باشد، دوباره کامل کپی میکند. برای انتقال هوشمند، از
rsync
استفاده کن. -
⚠️ اگر برای بار اول به یک سرور SSH وصل میشوی، پیام تأیید کلید میزبان نمایش داده میشود.
-
اگر با پیغام زیر مواجه شدی:
Host key verification failed
میتونی با این گزینه ادامه بدی:
scp -o StrictHostKeyChecking=no ...
-
برای کپی از یک سرور به سرور دیگر از سیستم واسطه:
scp user1@host1:/path/file.txt user2@host2:/path/
اما برای این مورد بهتره از
ssh
وrsync
استفاده بشه.
📦 جایگزینها
ابزار | ویژگی |
---|---|
rsync |
کپی هوشمند و سریعتر با پشتیبانی از انتقال افزایشی |
sftp |
محیط امن و تعاملی برای مدیریت فایلها روی سرور |
rclone |
مناسب برای فضای ابری مانند Google Drive، S3 و ... |
✅ جمعبندی
کاربرد | دستور نمونه |
---|---|
فایل محلی → ریموت | scp file.txt user@host:/path/ |
فایل ریموت → محلی | scp user@host:/path/file.txt ./ |
پوشه → ریموت | scp -r folder/ user@host:/path/ |
استفاده از پورت و کلید | scp -P 2222 -i id_rsa file user@host:/path/ |
نظر خود را اینجا بنویسید