برای جابهجایی فایلهای موجود در لوکال هاست با سرور لینوکس به سرورهای دیگر و برعکس آن نیاز به استفاده از دستورهای خاصی دارید و بدون آگاهی از دستورات لینوکس نمیتوانید این کارها را به درستی انجام دهید. دستور SCP یکی از این دستورات به شمار میآید. اما برای استفاده از آن باید گزینههای مختلف و کارهای متفاوت قابل انجام با این دستور را بشناسید.
به همین دلیل، در این مطلب از سری مطالب آموزش لینوکس آموزش استفاده از دستور SCP برای انتقال فایلها در لینوکس را به طور کامل بیان میکنیم تا بتوانید این کارها را به درستی انجام دهید. پس پیشنهاد میکنیم تا انتهای این متن همراه ما باشید.
SCP چیست؟
نام دستور SCP مخفف کلمه Secure Copy Protocol است. این فرمان به افراد اجازه میدهد تا بتوانند فایلها و محتواهای خودشان را بین دو سیستم مانند unix و linux انتقال دهند. این دستور بهصورت کامل رمزنگاری شده و همین موضوع باعث میشود تا ریسک دسترسی افراد مشکوک به اطلاعاتتان، بسیار کم شود.
برای استفاده از دستور SCP باید یک سری پیشنیازها را داشته باشید که دو مورد از مهمترین آنها را در زیر برای شما بیان کردیم:
· SSh روی سرور اصلی و فرعی نصب شده باشد.
· امکان Root access در هر دو سیستم موجود باشد و بتوان از آن به خوبی استفاده کرد.
نحوه نوشتن دستور SCP به چه صورتی است؟
برای انتقال امن فایلها با ابزار SCP لینوکس باید مانند دیگر دستورهای مختلف، نسبت به قالب درست نوشتن آن آگاهی داشته باشید. شما باید این دستور را بهصورت زیر وارد کنید تا بتوانید فایلهای مختلف را بهراحتی منتقل کنید:
scp [OPTIONS] [[user@]src_host:]file1 [[user@]dest_host:]file2
Scp
این قسمت دستوردهی اولیه را انجام میدهد و اطمینان حاصل میکند که بستری ایمن برای انتقال فایل موردنظر وجود دارد.
OPTIONS
این قسمت باید توسط گزینههای مختلف موجود جایگزین شود و براساس نوع گزینه، کارهای مختلفی را به انجام میرساند. مهمترین موارد موجود شامل گزینههای بیان شده در قسمت پایین میشود:
· P(Caps): برای ارتباط با یک سرور مشخص از راه دور استفاده میشود.
· p(lowercase): برای بهبود نحوه تغییر و دسترسی به فایلها، از هدر رفتن زمان جلوگیری میکند و آن را ذخیره میکند.
· r: کل یک دایرکتوری را به صورت بازگشتی کپی میکند.
· q: فایلها را بدون هیچگونه اطلاعی کپی میکند، هشدارهای مربوط به پیشرفت فرآیند کپیشدن را نمایش نمیدهد و به عنوان حالت آرام نیز شناخته میشود.
· C: برای فشردهسازی دادهها در هنگام انتقال امن فایل ها با ابزار SCP لینوکس استفاده میگردد
استفاده از دستور SCP برای انتقال فایل ها در لینوکس
شما میتوانید از دستور SCP برای انتقال فایلهای مختلف میان سرور و لوکال هاست موجود روی سیستم لینوکس استفاده کنید. در ادامه نحوه استفاده از دستور SCP برای انتقال فایلها در لینوکس را به شما آموزش میدهیم تا بتوانید این کار را به خوبی انجام دهید.
نحوه استفاده از دستور SCP برای انتقال فایل از لوکال هاست به remote server
شما میتوانید بهراحتی فایلهای مختلف خودتان را با استفاده از دستور SCP از لوکال هاست با سیستم عامل لینوکس به remote server منتقل و کپی کنید. به همین خاطر باید در هنگام انجام این کار مسیری که فایل در آن قرار گرفته و محل مقصد را به طور دقیق مشخص کنید. به عنوان مثال فرض کنید، فایلی به نام test.txt دارید و میخواهید آن را به یک remote server منتقل کنید. دستور لازم برای انجام این کار باید مانند کد زیر باشد:
scp test.txt userbravo@destination:/location2
با استفاده از این دستور محدودیتی در تعداد فایلهای منتقلشده ندارید. به عنوان مثال، فرض کنید فایل به نام Web و پسوند PHP در فایلی از دسکتاپ کامپیوتر خودتان دارید و میخواهید تمام دایرکتوری با این ویژگی و پسوند را به remote server منتقل کنید. برای انجام این کار باید کد زیر را وارد کنید:
scp *.php userbravo@destination_host:/~/
بعد از اعمال این دستور، تمامی فایلهای دارای این پسوند به سمت سرور مورد نظر ارسال میشوند. این نشان میدهد که در هنگام استفاده از دستور SCP برای انتقال فایل ها در لینوکس هیچ گونه محدودیتی در تعداد فایل ارسالی ندارید.
اما فرض کنید فایلی به نام test.txt در لوکال هاست لینوکس خودتان دارید؛ قصد دارید آن را با به سمت remote server بفرستید و آن را با نام دیگری در آنجا ذخیرهاش کنید. برای انجام این کار باید کد زیر را بهکار بگیرید:
scp -P 8080 test.txt userbravo@destination_host:/user/home/test2.txt
بعد از اعمال این دستور توسط لینوکس، فایل موردنظر به remote server ارسال میشود و با نام test2.txt و پورت 8080 در آنجا ذخیره میشود.
نحوه استفاده از دستور SCP برای انتقال فایل از remote Server لینوکس به لوکال هاست
برای استفاده از دستور SCP برای انتقال فایل از remote server به لوکال هاست لینوکس، باید مسیر اختصاصی username@IP address, را به عنوان محل ذخیره به سیستم اعلام کنید.
اگر مسیر اختصاصی برای ذخیره فایل را مشخص نکنید، سرور به طور خودکار در مسیر محلی و پیشفرض خودش فایل محتوای موردنظر را ذخیره خواهد کرد. برای انجام این کار نیاز به وارد کردن این کد در سیستم سرور دارید:
scp <remote_username>@<IPorHost>:<PathToFile> <LocalFileLocation>
فرض بگیرید، فایلی به نام linuxcheatsheet با آدرس IP 192.168.1.100 دارید؛ میخواهید آن را از remote server به لوکال هاست منتقل کنید و محل ذخیره آن را برای شما فرقی نمیکند. بنابراین در کد مربوط به انتقال این فایل مسیر ذخیره را مشخص نمیکنید و به همین دلیل محتوای موردنظر در مکان پیشفرض سیستم ذخیره میشود. کد انجام چنین کاری نیز باید مانند نمونه زیر باشد:
scp lary@192.168.1.100:linuxcheatsheet
نحوه انتقال فایل از یک remote server به یک سرور دیگر
استفاده از دستور SCP برای انتقال فایل ها در لینوکس محدود به ارسال فایل از لوکال هاست به سرور یا برعکس آن نمیشود. بلکه با به کارگیری آن، میتوانید محتواهای مختلف را بین دو سرور متفاوت نیز منتقل کنید.
به عنوان مثال برای انتقال یک فایل به نام test.txt بین دو سرور، باید از کد زیر استفاده کنید:
scp user1@host1.com:/files/test.txt user2@host2.com:/files
در هنگام استفاده از دستور SCP برای انتقال فایل ها در لینوکس به نکات زیر توجه کنید
· برای انتقال فایلها با دستور SCP باید مجوز خواندن محتواهای موجود روی لوکال هاست و نوشتن در remote server را داشته باشید.
· این دستور از پروتکل امنیتی SSH برای انتقال امن فایلها استفاده میکند که نیاز به رمز عبور و وارد کردن آن دارد.
· هنگامی که فایلهای با نام یکسان را منتقل میکنید، مراقب باشید؛ زیرا دستور SCP این فایلها را بهصورت خودکار بازنویسی میکند و به همین دلیل ممکن است فایل اولیه شما به طور کامل تغییر کند.
جمعبندی
همه افراد استفاده کننده از لینوکس اعم از مهندسان، برنامهنویسان و توسعهدهندگان، نیاز به انتقال فایل به سرور و لوکال هاست را در مقطعی حس خواهند کرد و باید آن را انجام دهند. در این مواقع آنها به آشنایی با دستوراتی مانند SCP نیاز دارند. به همین خاطر در این مطلب از پارسپک، آموزش نحوه استفاده از دستور SCP برای انتقال فایلها در لینوکس را به طور کامل بیان کردیم تا بتوانید با خیال راحت این کار را انجام دهید.
سوالات متداول
چگونه دستور SCP یک فایل را بدون رمز عبور بین دو سرور منتقل میکند؟
در قسمتهای قبل توضیح دادیم که برای انتقال فایل با استفاده از این دستور نیاز به استفاده از رمز عبور است؛ زیرا از پروتکل امنیتی SSH پیروی میکند. اما میتوان بدون رمز عبور نیز این کار را به انجام رساند که مراحلش را در ادامه برای شما توضیح میدهیم:
· قدم اول: یک جفت کلید خصوصی و عمومی برای خودتان ایجاد کنید.
· قدم دوم: کلیدها را در remote server خود ذخیره کنید.
· قدم سوم: امکان ورود راحت به پروتکل با استفاده از کلیدها را امتحان کنید.
· نصب اسکریپت نسخه پشتیبان خودتان را روی remote server به انجام برسانید.
· اسکریپت نسخه پشتیبان خودتان را با استفاده SSH به اجرا در بیاورید.
· از دستور SCP برای انتقال نسخه پشتیبان به سرور دوم استفاده کنید.
چگونه وضعیت اعمال دستور SCP در لینوکس را بررسی کرد؟
با استفاده از دستور systemctl status sshd.service میتوانید وضعیت اجرا یا توقف آن را متوجه شوید. جهت متوقف کردن اعمال این دستور نیز باید از دستور systemctl stop sshd.service استفاده کنید. تأیید انجام دستور را با استفاده از کد systemctl status sshd.service میتوانید به انجام برسانید.
چگونه IP سیستم برای استفاده از دستور SCP را میتوان پیدا کرد؟
برای پیدا کردن IP سیستم باید دستور ifconfig را روی به کار بگیرید تا بتوانید این آدرس را به درستی پیدا کنید.