انتقال امن فایلها با ابزار SCP لینوکس
در این پست دستورات رایج SCP رو براتون ضمیمه کردم.
خوب ممکنه به دلایل مختلفی قصد داشته باشیم که یک فایل رو بدون روشهای سنتی که از فلش و سیدی و ... استفاده میشد از طریق شبکه داخلی یا اینترنت از کامپیوتری به کامپیوتر دیگهای منتقل کنیم.
برای این کار روشها و ابزارهای مختلفی برای انتقال فایل وجود داره. مثلا از طریق FTP یا Rsync یا حتی HTTP میشه فایلهارو جابهجا کرد که هرکدوم مزایا و معایب خودشون رو دارن.
توی این پست قصد دارم در مورد نحوه انتقال فایل به روش ایمن با ابزار SCP براتون بنویسم.
اگر براتون سوال شده که SCP چی هست باید بگم که، (SCP (Secure Copy Protocol یا پروتکل کپی ایمن، امکان کپی فایلها و فولدرهای مختلف رو به وجود میاره.
خوب حالا از کجا به کجا میتونیم فایلهارو کپی کنیم؟
- حالت اول زمانی که میخوایم از کامپیوتر یا سرور خودمون (میزبان محلی یا local host) به کامپیوتر یا سرور دیگری (میزبان راه دور یا remote host) فایلی رو کپی کنیم.
- حالت دوم زمانی که میخوایم از کامپیوتر راه دور فایلی رو به کامپوتر خودمون کپی کنیم.
- حالت سوم هم زمانی که میخوایم از یک کامپیوتر راه دور به کامپیوتر راه دور دیگری فایلی رو کپی کنیم.
مهم نیست که میزبان محلی و میزبان راه دور کجا باشن فقط کافیه که در یک شبکه قرار داشته باشن حالا میتونه شبکه داخلی یک مجموعه باشه، شبکه اینترانت یا شبکه اینترنت باشه و تفاوتی در استفاده برای ما نداره.
برای انتقال ایمن فایلها، SCP از احراز هویت و روشهای اعتبار سنجی پروتکل SSH استفاده میکنه.
ابزار SCP به سه علت سادگی، امنیت و در دسترس بودن بخاطر نصب روی اکثر سیستم عاملهای لینوکسی به صورت پیشفرض محبوبیت بالایی داره.
استفاده از SCP با توجه به روش انتقال فایلها و فولدرها با SSH مستلزم نصب OpenSSH و باز کردن پورتهای میزبان محلی و میزبان راه دور در فایروالهاشون هست. این مرحله معمولا به صورت پیشفرض روی اکثر سیستم عاملهای لینوکسی فعال هست.
دستورات رایج SCP
برای کپی امن یک فایل از میزبان راه دور به میزبان محلی از این دستور استفاده میکنم.
scp username@from_host:file.txt /local/directory/
برای کپی امن یک فایل از میزبان محلی به میزبان راه دور از این دستور استفاده میکنم.
scp file.txt username@to_host:/remote/directory/
برای کپی امن یک فولدر به همراه تمام زیر مجموعههای آن از میزبان راه دور به میزبان محلی از این دستور استفاده میکنم.
scp -r username@from_host:/remote/directory/ /local/directory/
برای کپی امن یک فولدر به همراه تمام زیر مجموعههای آن از میزبان محلی به میزبان راه دور از این دستور استفاده میکنم.
scp -r /local/directory/ username@to_host:/remote/directory/
برای کپی امن یک فایل از میزبان راه دور به میزبان راه دور دیگر از این دستور استفاده میکنم.
scp username@from_host:/remote/directory/file.txt username@to_host:/remote/directory/
با استفاده از دستوراتی که تا اینجا قرار دادم یاد گرفتیم که چطور فایلها و فولدرهامون رو بین کامپیوترهای مختلف به صورت ایمن جابهجا کنیم.
یک دستور باحال دیگه یا راه حل بکآپ گیری سریع از فولدرها با کمک SCP
scp -r root@123.123.123.123:/var/www/html/ /home/hadi/backups/test/
آدرس میزبان راه دور میتونه دامین یا آیپی باشه و بعد از اجرای دستورات از شما رمز SSH خواسته میشه.
خطر جدی! در زمان استفاده از SCP اگر فایلی که قصد کپی اون رو داریم روی میزبان مقصد وجود داشته باشه، فایل جایگزین میشه.
اگر از سیستم عامل Mac هم استفاده میکنید این دستور توی ترمینال براتون کار میکنه و اگر میخواهید روی ویندوز از اون استفاده کنید میتونید از نرم افزارهایی مثل WinSCP یا SSH Explorer استفاده کنید.
پارامترهای ورودی قابل استفاده در دستور SCP
این پارمترها بخشی از ورودیهای مجاز ابزار SCP هستن که براساس نیاز و استفادهای که میخوایم انجام بدیم میتونیم به دستور خودمون اضافه کنیم.
scp -r
به صورت بازگشتی تمامی فایلها و فولدرهای داخلی مسیر انتخاب شده رو میچرخه و دستور مارو روی اونها اجرا میکنه. (اگر بخوایم یک فولدر رو به همراه تمام محتوای داخلش جابهجا کنیم باید از این ورودی استفاده کنیم.)
scp -C
باعث میشه تمامی فایلها و فولدرها فشرده شده و بعد کپی بشن. (برای کاهش پهنای باند مصرفی و افزایش سرعت کپی مناسب هست ولی باید توجه کنیم که این کار میتونه رم و سیپییو بیشتری مصرف کنه)
scp -l 8000
پهنای باند انتقال رو محدود میکنه برحسب کیلوبیت بر ثانیه باید وارد کنید یعنی با وارد کردن عدد ۸.۰۰۰ حدود یک مگابایت در ثانیه فایلتون جابهجا میشه.
scp -P 22123
برای تعیین پورت میزبان راه دور از این پارامتر با حرف بزرگ انگلیسی استفاده میشه. (پورت پیشفرض SSH ۲۲ هست که SCP هم از این پورت استفاده میکنه ولی ممکنه به دلایل امنیتی این پورت رو تغییر داده باشیم.)
scp -q
این پارامتر باعث میشه فایلها بعد از کپی به میزبان مقصد، زمانهای دسترسی، ویرایش و وضعیت فایل رو حفظ کنه در غیر این صورت بهروزرسانی میشن.
scp -v
هر اتفاقی که داره میوفته و نمیبینیم رو روی صفحه چاپ میکنه و برای زمانهای خطایابی کاربرد داره.
scp -o
برای ارسال پارامتر با استفاده از فرمت استفاده شده در ssh_config کاربرد داره.
برای به دست آوردن اطلاعت بیشتر در مورد پارامترهای مجاز میتونید راهنمای موجود در سیستم عامل رو به راحتی با دستور man scp
ببینید.
همچنین خوبه که نگاهی هم به راهنمای rsync
بندازید برای این کار هم از دستور man rsync
استفاده کنید.
مطلبی دیگر از این انتشارات
در باب DRM: خوب، بد، زشت
مطلبی دیگر از این انتشارات
ارائه برنامهنویسی فانکشنال در جاوااسکریپت از نگاه یسنا
مطلبی دیگر از این انتشارات
بررسی مفهوم Class در جاوا اسکریپت