نحوه انتقال ایمن فایل ها بین سرورها با Scp
انتقال فایلها بین ماشینهای محلی یا دو ماشین راهدور یک نیاز اساسی است. راههای زیادی برای رسیدن به این انتقال فایلها وجود دارد. در این مقاله، ما در مورد Scp ( فرمان کپی امن) صحبت میکنیم که فایل و رمز عبور انتقالیافته را رمزگذاری میکند تا کسی نتواند جاسوسی کند. با scp نباید جلسه FTP را شروع کنید یا وارد سیستم شوید.
ابزار scp برای انتقال فایلها به پروتکل SSH (پوسته ایمن) متکی است، بنابراین تنها چیزی که نیاز دارید نام کاربری و رمز عبور سیستم منبع و هدف است. مزیت دیگر این است که با SCP میتوانید فایلها را بین دو سرور راه دور، از دستگاه محلی خود و همچنین انتقال دادهها بین دستگاههای محلی و راه دور، جابهجا کنید. در این صورت شما به نام کاربری و رمز عبور برای هر دو سرور مجازی نیاز دارید. برخلاف Rsync، برای انتقال دادهها از یک دستگاه به دستگاه دیگر نیازی به ورود به هیچ یک از سرورها ندارید.
هدف این آموزش برای کاربران جدید لینوکس است، بنابراین من تا حد امکان همه چیز را به سادگی بیان میکنم؛ بیایید شروع کنیم.
یک فایل واحد را از ماشین محلی به یک ماشین راه دور کپی کنید:
برای کپی کردن فایلها از یک مکان به مکان دیگر، فرمان scp به منبع و مقصد نیاز دارد. این الگویی است که ما استفاده میکنیم:
scp localmachine/path_to_the_file username@server_ip:/path_to_remote_directory
در مثال زیر، من یک فایل محلی را از سیستم macOS خود در سرور لینوکس کپی میکنم (سیستم عامل مک، که یک سیستم عامل یونیکس است، از همه ابزارهای یونیکس/لینوکس پشتیبانی میکند).
scp /Volumes/MacDrive/Distros/fedora.iso [email protected]:/media/prim_5/media_server/
در اینجا، ‘swapnil’ کاربر روی سرور و 10.0.0.75 IP سرور است. از شما میخواهد که رمز عبور آن کاربر را ارائه دهید و سپس فایل را به صورت ایمن کپی کنید.
میتوانیم همین کار را از دستگاه لینوکس محلی خود انجام دهیم:
scp /home/swapnil/Downloads/fedora.iso [email protected]:/media/prim_5/media_server/
اگر از ویندوز 10 استفاده میکنید، میتوانید از اوبونتو bash در ویندوز برای کپی فایلها از سیستم ویندوز به سرور لینوکس استفاده کنید:
scp /mnt/c/Users/swapnil/Downloads/fedora.iso [email protected]:/media/prim_5/ media_server/
یک فهرست محلی را در یک سرور راه دور کپی کنید:
اگر میخواهید کل فهرست محلی را در سرور کپی کنید، میتوانید پرچم -r را به دستور اضافه کنید:
scp -r localmachine/path_to_the_directory username@server_ip:/path_to_remote_directory/
اطمینان حاصل کنید که دایرکتوری مبدأ دارای یک اسلش رو به جلو در انتهای مسیر نباشد، در عین حال مسیر مقصد *باید* دارای یک اسلش رو به جلو باشد.
تمام فایلهای موجود در یک فهرست محلی را در یک فهرست راه دور کپی کنید
اگر بخواهید فقط تمام فایلهای داخل یک فهرست محلی را در یک دایرکتوری راه دور کپی کنید چه؟ به سادگی، فقط یک اسلش رو به جلو و * در انتهای فهرست منبع اضافه کنید و مسیر دایرکتوری مقصد را مشخص کنید. فراموش نکنید که پرچم -r را به دستور اضافه کنید.
scp -r localmachine/path_to_the_directory/* username@server_ip:/path_to_remote_directory/
کپی کردن فایل ها از سرور راه دور به ماشین محلی
اگر میخواهید یک کپی از یک فایل، یک دایرکتوری یا همه فایلهای موجود در سرور را در ماشین محلی ایجاد کنید، کافی است همان مثال بالا را دنبال کنید، فقط محل مبدا و مقصد را مبادله کنید.
کپی یک فایل:
scp username@server_ip:/path_to_remote_directory local_machine/path_to_the_file
یک دایرکتوری راه دور را در یک ماشین محلی کپی کنید:
scp -r username@server_ip:/path_to_remote_directory local-machine/path_to_the_directory/
اطمینان حاصل کنید که دایرکتوری منبع در انتهای مسیر دارای یک اسلش رو به جلو نباشد، در عین حال مسیر مقصد *باید* دارای یک اسلش رو به جلو باشد.
همه فایلهای موجود در یک فهرست راه دور را در یک فهرست محلی کپی کنید:
scp -r username@server_ip:/path_to_remote_directory/* local-machine/path_to_the_directory/
فایلها را از یک دایرکتوری از همان سرور به دایرکتوری دیگر به طور ایمن از دستگاه محلی کپی کنید
میتوان به آن دستگاه ssh کرد و سپس از دستور rsync برای انجام کار استفاده کنیم، اما با SCP، میتوانیم آن را به راحتی بدون نیاز به ورود به سرور راه دور انجام دهیم.
scp username@server_ip:/path_to_the_remote_file username@server_ip:/ path_to_destination_directory/
یک دایرکتوری را از یک مکان روی سرور راه دور به مکان دیگری در همان سرور کپی کنید:
scp username@server_ip:/path_to_the_remote_file username@server_ip:/ path_to_destination_directory/
تمام فایل های موجود در یک فهرست راه دور را در یک فهرست محلی کپی کنید.
scp -r username@server_ip:/path_to_source_directory/* usdername@server_ip:/ path_to_the_destination_directory/
فایلها را از یک سرور راه دور به سرور راه دور دیگر از یک ماشین محلی کپی کنید.
در حال حاضر باید به یک سرور ssh کرده تا از دستور rsync برای کپی فایلها به سرور دیگری استفاده کنیم. میتوان از دستور SCP برای انتقال فایلها بین دو سرور راه دور استفاده کرد:
میتوان به آن دستگاه ssh کرد و سپس از دستور rsync برای انجام کار استفاده کنیم، اما با SCP، میتوانیم آن را به راحتی بدون نیاز به ورود به سرور راه دور انجام دهیم.
scp username@server1_ip:/path_to_the_remote_file username@server2_ip:/ path_to_destination_directory/
یک دایرکتوری را از یک مکان در یک سرور راه دور به مکان دیگری در همان سرور کپی کنید:
scp username@server1_ip:/path_to_the_remote_file username@server2_ip:/ path_to_destination_directory/
تمام فایلهای موجود در یک فهرست راه دور را در یک فهرست محلی کپی کنید.
scp -r username@server1_ip:/path_to_source_directory/* username
@server2_ip:/ path_to_the_destination_directory/
جمع بندی
همانطور که میبینید، هنگامی که متوجه شدید که کارها چگونه انجام میشوند، جابجایی فایلهای خود بسیار آسان خواهد بود. هدف لینوکس همین است، فقط وقت خود را برای درک برخی اصول سرمایهگذاری کنید، آن وقت انتقال فایلها خیلی راحت خواهد بود!