پروتکل کپی امن (SCP) فرمانی است که انتقال کارآمد و ایمن فایل بین دو سیستم را از طریق شبکه امکان پذیر می کند. از Secure Shell (SSH) برای احراز هویت سیستم ها و رمزگذاری داده های شما استفاده می کند.

دستور SCP انتقال داده ها را بین سیستم های لینوکس ساده می کند زیرا مدیران نیازی به ورود به هر دو سرور ندارند. علاوه بر این، از سایر روش‌ها مانند پروتکل انتقال فایل (FTP) که معمولاً برای مدیریت یک سیستم از راه دور نیز استفاده می‌شود، ایمن‌تر است.

در این مقاله روش استفاده از دستور SCP را یاد خواهید گرفت روی یک کنترل از راه دور host، مانند سرور خصوصی مجازی (VPS). ما نحو دستور را تجزیه می کنیم و نمونه هایی از SCP ارائه می کنیم تا به شما در درک بهتر روش عملکرد آن کمک کنیم.

نحو دستور SCP

نحو اصلی SCP برای انتقال یک فایل بین دو سرور راه دور مختلف به شرح زیر است:

scp [options] [source username@IP]:/[directory and file name] [destination username@IP]:/[destination directory]

در اینجا تفکیک فرمان آمده است:

  • [options] ‒ اصلاح کننده هایی برای تغییر رفتار فرمان SCP.
  • [source username@IP] ‒ نام کاربری و آدرس IP سیستم منبع.
  • :/ – آدرس سیستم و جداکننده مسیر دایرکتوری.
  • [directory and file name] ‒ مکان و نام فایل.
  • [destination username@IP] ‒ حساب کاربری و آدرس IP سیستم مقصد.
  • [destination directory] ‒ فهرست هدف فایل های منتقل شده.

در اینجا نمونه ای از دستور SCP برای کپی فایل ها بین دو سیستم راه دور آورده شده است:

scp root@162.168.1.1:/media/scp.png hostinger@162.168.1.2:/desktop/destination

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

اگر در حال کپی برداری از محلی یا محلی هستید host، آدرس IP و مسیری مانند را حذف کنید /desktop/folder_name. دستور به صورت زیر خواهد بود:

scp scp.png hostinger@162.168.1.2:/desktop/destination

روش کپی کردن فایل ها با استفاده از دستور SCP

در بخش‌های زیر چند نمونه کاربرد عملی SCP برای انتقال فایل‌ها بین سیستم‌های مختلف بررسی می‌شود.

هشدار! هنگام استفاده از دستورات SCP مراقب باشید زیرا ممکن است فایل‌ها و دایرکتوری‌هایی را با همین نام بازنویسی کنید.

استفاده از دستور SCP با هاستینگer VPS

برای اجرای دستور SCP باید به پوسته bash ماشین منبع دسترسی داشته باشید. برای سرور راه دور مانند VPS، از طریق SSH با استفاده از PuTTY یا ترمینال رایانه خود متصل شوید.

اگر استفاده می کنید هاستینگerهاست VPS، از آن استفاده کنید مرورگر terminal ویژگی در منوی مرور کلی سرور از منطقه اعضا. این به شما امکان می دهد دستورات را متصل و اجرا کنید روی یک سرور از راه دور به طور مستقیم از طریق یک مرورگر وب، کار را کارآمدتر می کند.

علاوه بر این، مرورگر ما terminal از پروتکل VNC برای دسترسی به سرور راه دور استفاده می کند و به شما امکان می دهد دستورات SSH مانند SCP را حتی زمانی که سیستم هدف پورت اتصال را می بندد اجرا کنید.

هاستینگer همچنین ارائه می دهد دستیار VPS AI، از منوی نمای کلی سرور قابل دسترسی است. این ویژگی به شما امکان می دهد از دستورات ساده برای تولید دستورات آماده برای استفاده بر اساس SCP استفاده کنید روی نیازهای شما، بهبود کارایی مدیریت.

برای مثال، می‌توانید «Generate the SCP command to transfer the» را وارد کنید config.yaml فایل از سرور فعلی من /web_app/configuration مسیر به /live_app/config دایرکتوری راه دور در VPS من. نام کاربری سرور مقصد است ریشهو آدرس IP آن است 168.162.1.2

دستیار هوش مصنوعی فرمان کامل را به بیرون ارسال می کند که می توانید آن را کپی و در مرورگر جایگذاری کنید terminal، مانند موارد زیر:

کپی کردن از a Local سرور به یک میزبان راه دور

با استفاده از دستور SCP برای کپی فایل ها از یک سیستم محلی به یک کنترل از راه دور host مانند VPS به ساده سازی فرآیندهای استقرار برنامه های وب کمک می کند. این به شما امکان می دهد فایل های به روز شده را به سرعت از یک محیط توسعه محلی به سرور زنده فشار دهید.

به عنوان مثال، ما را کپی می کنیم scp.zip فایل محلی به یک سرور راه دور با ریشه کاربر. برای انجام این کار، نام کاربری و آدرس IP راه دور را مشخص کنید:

scp /users/هاستینگer/desktop/scp.zip root@162.168.1.2:/writing/article

اگر جفت کلید SSH تنظیم نکرده‌اید، ترمینال از شما می‌خواهد گذرواژه کاربری دستگاه راه دور را وارد کنید. همچنین یک متر پیشرفت مانند زیر را نشان می دهد:

ترمینال یک اعلان تأیید رمز عبور و یک نوار پیشرفت SCP را خروجی می دهد

دستور SCP متکی است روی پورت SSH پیش فرض 22 برای کپی امن فایل ها با این حال، مدیران سرور ممکن است پورت گوش دادن دیگری را برای جلوگیری از دسترسی غیرمجاز تنظیم کنند. در این مورد، را اضافه کنید گزینه ای برای فعال کردن پورت سفارشی SCP:

scp -P 2322 /users/هاستینگer/desktop/scp.zip root@162.168.1.2:/writing/article

برای تغییر نام فایل ارسالی، مقدار جدید را در فهرست مقصد خود مشخص کنید. در اینجا نمونه ای از دستور SCP است که تغییر نام می دهد scp.zip به howtoscp.zip:

scp /users/هاستینگer/desktop/scp.zip root@162.168.1.2:/writing/article/howtoscp.zip

علاوه بر این، دستور SCP به شما این امکان را می دهد که دایرکتوری ها را به صورت بازگشتی کپی کنید و به شما امکان می دهد چندین فایل را در یک پوشه به طور همزمان منتقل کنید. برای انجام این کار، استفاده کنید scp -r و پوشه ای را که می خواهید انتقال دهید مشخص کنید:

scp -r /users/هاستینگer/desktop root@162.168.1.2:/writing/article

مثال دستور بالا کد را کپی می کند دسکتاپ محتوای پوشه به /نوشتن/مقاله دایرکتوری راه دور، از جمله زیر پوشه ها. از طرف دیگر، چندین فایل را با استفاده از نام آنها مانند موارد زیر کپی کنید:

scp file1.txt file2.txt file3.txt root@162.168.1.2:/writing/article

نکته حرفه ای

برای یافتن مسیر کامل یک فهرست، به دایرکتوری مناسب بروید و از آن استفاده کنید pwd فرمان

پیشنهاد می‌کنیم بخوانید:  بایگانی VPS

انتقال یک فایل از راه دور به a Local دستگاه

برای شروع انتقال داده SCP از سیستم های راه دور به محلی، محل منبع و مقصد را در نحو تغییر دهید. این کارایی توسعه برنامه شما را بهبود می بخشد زیرا می توانید به راحتی دانلود کنید و کار کنید روی فایل پروژه به صورت آفلاین

برای مثال از دستور زیر برای کشیدن آن استفاده کنید scp.zip فایل از یک VPS راه دور به یک ماشین محلی:

scp root@162.168.1.2:/writing/articles/SCP.zip Users/هاستینگer/Desktop

با اجرای این دستور خروجی ورود به سیستم SSH که نیاز به رمز عبور کاربر دارد را می دهد. اگر احراز هویت را با استفاده از امتیازات sudo غیرفعال کنید روی سرور راه دور و فعال کردن احراز هویت کلید عمومی، اعلان ظاهر نمی شود.

انتقال ایمن یک فایل بین میزبان های راه دور

علاوه بر انتقال به یا از سرور فعلی، از SCP برای انتقال فایل ها بین دو دستگاه لینوکس راه دور استفاده کنید. برای انجام این کار، دستور را اجرا کنید روی رایانه محلی شما با آدرس آنها به عنوان منبع و مقصد.

اگر چندین پروژه میزبانی دارید روی ماشین های مختلف از راه دور، انجام این کار به بهبود کارایی کمک می کند. به جای ورود به سیستم های متعدد به صورت جداگانه، می توانید فایل ها را مستقیماً از رایانه فعلی خود بین آنها انتقال دهید.

به عنوان مثال، برای انتقال موارد زیر را اجرا کنید scp.zip از راه دور فایل از root@162.168.1.2 به hostinger@162.168.1.1:

scp root@162.168.1.2:/writing/article/scp.zip hostinger@162.168.1.1:/publishing

کپی کردن فایل ها بین دو سرور راه دور به رمزهای عبور SSH هر دو حساب نیاز دارد.

به طور پیش فرض، دستور SCP داده ها را مستقیماً از اولین رایانه راه دور به رایانه دوم منتقل می کند. اگر می خواهید عملیات را از طریق سیستم محلی فعلی خود تغییر مسیر دهید، آن را اضافه کنید -3 گزینه ای که در دستور زیر نشان داده شده است:

scp -3 root@162.168.1.2:/writing/article/scp.zip hostinger@162.168.1.1:/publishing

اگر در حین انتقال با خطای شبکه مواجه شدید از این گزینه استفاده کنید. معمولاً زمانی اتفاق می‌افتد که به دلیل عدم اتصال مستقیم، سیستم منبع نمی‌تواند به سیستم هدف برای کپی کردن داده‌ها دسترسی داشته باشد.

تغییر مسیر دستور SCP به محلی host از سرور مورد نظر می خواهد که به جای سیستم منبع، فایل ها را از رایانه شما دریافت کند. با این حال، این process بیشتر طول می کشد و اطلاعاتی مانند نوار پیشرفت حذف می شود.

روش استفاده از دستور SCP با گزینه ها

چند وجود دارد گزینه های دستور SCP، که پارامترهایی برای اصلاح رفتار انتقال داده هستند. آنها برای کاربرانی با دانش فنی پیشرفته که می خواهند فایل را به روشی خاص مطابق با نیازها و الزامات امنیتی خود کپی کنند، مفید هستند.

گزینه ها می توانند به صورت تک کاراکتری (-o) و معادل توصیفی آنها (-گزینه). هر دو به طور مشابه کار می کنند، اما برخی از ابزارهای دستوری ممکن است نسخه کوتاه را ارائه ندهند.

برخلاف سایر دستورات لینوکس، نمی توانید از آن استفاده کنید -کمک پارامتر برای نمایش دستی و گزینه های قابل قبول SCP. در عوض، می توانید با اجرای آن بدون هیچ پارامتری این کار را انجام دهید:

scp

یکی از رایج ترین گزینه های فرمان SCP است -q، که از سیستم می خواهد فایل را در حالت بی صدا کپی کند. خروجی سنج پیشرفت، هشدارها و پیام های تشخیصی را غیرفعال می کند. در اینجا یک دستور مثال است:

scp -q /users/هاستینگer/desktop/scp.zip root@162.168.1.2

استفاده کنید -v پارامتر برای فعال کردن خروجی کامل این پیام های اشکال زدایی دقیق در مورد کپی را نشان می دهد process برای عیب یابی آسان تر خطا در اینجا دستور به نظر می رسد:

scp -v /users/هاستینگer/desktop/scp.zip root@162.168.1.2
ترمینال پیام های اشکال زدایی را برای حالت پرحرف فرمان SCP خروجی می دهدترمینال پیام های اشکال زدایی را برای حالت پرحرف فرمان SCP خروجی می دهد

این -4 و -6 گزینه ها نسخه پروتکل اینترنت مورد استفاده برای انتقال داده را تعیین می کنند – IPv4 یا IPv6. هنگام استفاده از آنها، آدرس مکان های راه دور را مطابق با مثال زیر تغییر دهید:

scp -4 root@162.168.1.2:/users/هاستینگer/desktop/scp.zip

استفاده کنید گزینه ای برای حفظ داده های فایل منبع، مانند حالت، تغییر و زمان دسترسی. توجه داشته باشید که با حروف بزرگ تفاوت دارد گزینه ای برای تغییر پورت انتقال در اینجا نحو است:

scp -p /users/هاستینگer/desktop/scp.zip root@162.168.1.2

مهم! هنگام استفاده از گزینه های دستور SCP مراقب باشید زیرا به حروف بزرگ و کوچک حساس هستند.

پیشنهاد می‌کنیم بخوانید:  بایگانی VPS

این -C گزینه فایل ها یا دایرکتوری های کپی شده را در حین انتقال فشرده می کند process. با همه فایل ها به جز بایگانی ها کار می کند، مانند zip و .rar. در اینجا دستور به نظر می رسد:

scp -C Folder root@162.168.1.2

در ضمن حروف کوچک گزینه به شما امکان می دهد الگوریتم رمزگذاری دستگاه مشتری را مشخص کنید. تنظیم شده است AnyStdCipher به طور پیش فرض، اما می توانید از مقادیر دیگری مانند aes256-ctr، aes256-cbc، و 3des-cbc.

برای بررسی تمام مقادیر موجود، به رمزها بخش در راهنمای SSH_config. در اینجا یک مثال دستور SCP با 3des-cbc رمزگذاری:

scp -c 3des-cbc /users/هاستینگer/desktop/scp.zip root@162.168.1.2

اگر می خواهید یک فایل را به روش خاصی کپی کنید اما دستور SCP گزینه مناسبی ندارد، از آن استفاده کنید -o گزینه. این به شما امکان می دهد گزینه های SSH را در فایل پیکربندی به دستور SCP خود اعمال کنید.

برای استفاده از این گزینه، جفت کلید و مقدار تنظیم را در علامت نقل قول اضافه کنید، مانند مثال نحو زیر:

scp -o "option=value" /directory/path/file

هر یک -o گزینه فقط یک جفت را به عنوان مقدار خود می گیرد. اگر می خواهید چندین تنظیمات SSH را پاس کنید، گزینه های بیشتری اضافه کنید. به عنوان مثال، دستور SCP زیر حداکثر دو بار به سیستم مقصد متصل می شود و پس از پنج ثانیه زمان تلاش را متوقف می کند:

scp -o "ConnectionAttempts=2" -o="ConnectTimeout=5" /users/scp.zip root@162.168.1.2

این فایل پیکربندی را هنگام عبور از تنظیمات SSH تغییر نمی دهد، زیرا فقط برای جلسه فعلی SCP شما اعمال می شود. برای کسب اطلاعات بیشتر در مورد کلیدهای کامل و مقادیر آنها، به راهنمای SSH_config مراجعه کنید.

سایر دستورات لینوکس را برای مدیریت سرور کشف کنید

روش بررسی فضای دیسک روی لینوکس
روش انتقال داده با دستور Curl
روش محاسبه اجرای فرآیند با دستور زمان
روش نظارت بر تغییرات با دستور Watch
روش خاموش کردن و راه اندازی مجدد سرور
روش انتقال و همگام سازی داده ها با Rsync
روش کشتن یک فرآیند در لینوکس
دستور Tee برای نوشتن کارآمد فایل

نتیجه

دستور SCP لینوکس کپی امن فایل بین سیستم ها را از طریق SSH رمزگذاری شده امکان پذیر می کند و جایگزین کارآمدتر و ایمن تری برای FTP ارائه می دهد. نحو آن شامل گزینه‌ها، آدرس‌های سیستم، مکان فایل و مسیر هدف، با حذف آدرس و دایرکتوری برای انتقال‌های محلی است.

SCP نه تنها امکان انتقال فایل بین سیستم های محلی و راه دور را فراهم می کند، بلکه بین دو سیستم راه دور از طریق یک ماشین محلی نیز امکان پذیر است. گزینه هایی مانند -P و -C انتقال را سفارشی می کنند process.

هاستینگer کاربران می توانند از یک دستیار هوش مصنوعی برای تولید آسان دستور SCP و یک مرورگر بهره مند شوند terminal برای اجرای دستورات سرور از راه دور از طریق مرورگرهای وب.

روش استفاده از دستور SCP برای سوالات متداول انتقال فایل

در این قسمت به چندین سوال در مورد دستور SCP در لینوکس پاسخ خواهیم داد.

چگونه SCP را اجرا کنم روی پنجره ها؟

می توانید SCP را اجرا کنید روی ویندوز با استفاده از PSCP PuTTY command-line ابزار، که از قبل با کلاینت SSH نصب شده است. برای استفاده از ابزار فرمان، رابط خط فرمان Windows PowerShell را باز کنید. سینتکسی مشابه SCP دارد اما با آن شروع می شود pscp -scp.

آیا می توانم رمز عبور را در دستور SCP پاس کنم؟

آره. شما می توانید با استفاده از SCP در لینوکس رمز عبور ارسال کنید sshpass ابزار فرمان با گزینه یا pscp با -pw گزینه ای برای ویندوز پس از هر دو گزینه رمز SSH خود را اضافه کنید. بقیه نحو مانند یک دستور SCP معمولی باقی می ماند.

چگونه SCP را متوقف یا مکث کنم؟

مکث الف process با عبور از terminal متوقف کردن سیگنال (SIGTSTP) با استفاده از Ctrl+Z میانبر. برای از سرگیری process، سیگنال SIGCONT را با تایپ ارسال کنید fg. اگر SIGCONT کار نمی کند، از ابزار rsync استفاده کنید تا بررسی کنید که آیا تفاوت محتوا بین سیستم ها وجود دارد یا خیر و فقط فایل هایی را کپی کنید که در دایرکتوری مورد نظر وجود ندارند.