از آنجا که محیط GUI در سرورهای لینوکس معمولا نصب نمی شود، ادمین های لینوکس باید با محیط CLI (ترمینال لینوکس) آشنا باشند. SSH محبوب ترین پروتکل برای مدیریت از راه دور سرورها می باشد. دستور SCP یکی از دستورات SSH است که برای کپی کردن فایلها بین سرورها استفاده می شود.
دستور زیر به شما اجازه خواهد داد که “source_file_name” را به “destination_folder” در “destination_host” و با استفاده از “username account” کپی کنید.
ساختار اولیه ی دستور SCP
پارامترهای زیادی برای دستور scp وجود دارد که شما می توانید از آنها استفاده کنید.
نشان دادن اطلاعات جزئی تر از پروسه ی scp را با استفاده از آپشن –v
دستور scp بدون پارامتر، فایل ها را در پس زمینه کپی خواهد کرد. و کاربر هیچ پروسس و خطایی را نخواهد دید. شما می توانید از گزینه ی –v برای پرینت کردن اطلاعات در صفحه استفاده کنید. این به شما در عیب یابی و مشکلات پیکربندی کمک خواهد کرد.
نمونه خروجی :
نشان دادن زمان های اصلاح و زمان های دسترسی به فایل اصلی
آپشن –p در این مورد به شما کمک خواهد کرد. یک زمان تخمینی و سرعت ارتباط به شما نشان داده خواهد شد.
نمونه خروجی :
ایجاد انتقال سریعتر فایل با استفاده از آپشن –C
یکی از پارامترهایی که می توانند فایلهای شما را سریعتر انتقال دهند گزینه ی –C است. پارامتر –C همچنین برای فشرده سازی فایل ها بکار میرود و این فشرده سازی تنها در شبکه بکار می رود و زمانی که فایل به سرور رسید، حجم اولیه ی خود را به دست می آورد.
به دستورات زیر نگاه کنید. ما از فایلی با حجم 93 MB استفاده کرده ایم.
نمونه خروجی :
کپی کردن فایل ها بدون –C زمانی برابر با 1661.3 ثانیه طول کشیده است. حال نتیجه را با استفاده از گزینه ی –C مقایسه کنید.
نمونه خروجی :
شما می توانید ببینید که با استفاده از فشرده سازی تنها در زمان 162.5 ثانیه انتقال انجام شده است.این 10 بار سریعتر از قبل است. اگر شما بخواهید فایل های زیادی را از طریق شبکه بخواهید انتقال دهید گزینه ی –C بسیار مفید خواهد بود.
نکته ای که شما باید به آن توجه کنید این است که روش فشرده سازی بروی هر فایلی کار نمی کند. زمانی که فایل از قبل فشرده شده است استفاده از این گزینه تاثیری ندارد. فایل هایی همچون .zip و .rar و عکس ها و فایل های .iso از این دسته فایل های هستند.
انتخاب روش دیگری برای رمزگذاری فایلها
به طور پیش فرض scp از AES-128 برای رمزنگاری فایلها استفاده می کند. برای تغییر دادن آن می توانید از گزینه ی –c استفاده کنید.
در دستور بالا از رمزنگاری 3des برای فایل های استفاده شده است. لطفا دقت کنید که –c حروف کوچک است.
محدودکردن مصرف پهنای باند
پارامتر دیگری که ممکن است استفاده شود پارامتر –l می باشد. این پارامتر مصرف پهنای باند را محدود خواهد کرد. این بسیار مفید است زمانی که شما می خواهید فایل های زیادی را با اسکریپتی به صورت خودکار انتقال دهید اما شما نمی خواهید کل پهنای باند توسط scp گرفته شود.
مقدار 400 به همراه گزینه ی –l نشان می دهد که محدودیت پهنای باند برای دستور scp بیشتر از 50 kB/sec نباشد. نکته ای باید به خاطر بسپارید این که در دستور از kilobit/second(kbps/s) استفاده می شود، به این معنی که هر 8 بیت برابر با 1 بایت است.
مشخص کردن پورت ها با استفاده از scp
معمولا scp به صورت پیش فرض از پورت 22 استفاده می کند. اما به دلایل امنیتی شما می توانید پورت را تغییر دهید. به عنوان مثال ما از پورت 2249 استفاده میکنیم.
دقت کنید که از P بزرگ استفاده کنید.
کپی کردن فایل ها در داخل دایرکتوری به صورت بازگشتی
گاهی اوقات ما نیاز داریم که تمامی فایل ها و دایرکتوری ها را کپی کنیم. ما می توانیم این کار را با استفاده از آپشن –r انجام دهیم.
زمانی که پروسه ی کپی تمام شد، در سرور مقصد ما دایرکتوری document را با تمامی فایل های درون آن خواهیم دید.
غیرفعال کردن پیشرفت پروسس و پیام های هشدار
اگر شما نمی خواهید پیشرفت پروسس و پیام های هشدار را ببینید، شما می توانید آنرا با استفاده از –q غیرفعال کنید.
کپی کردن فایل ها با استفاده از scp ازطریق Proxy
سرور پروکسی معمولا در محیط های اداری استفاده می شود. به طور بومی scp پروکسی پیکربندی شده ندارد. زمانی که محیط شما پروکسی است، شما باید به scp بگویید که از پروکسی استفاده کند.
در اینجا یک سناریو وجود دارد. آدرس پروکسی 10.0.96.6 و پورت آن 8080 میباشد، همچنین پروکسی با احراز هویت کاربر پیاده سازی شده است. ابتدا شما نیاز دارید که فایل “~/.ssh/config” را ایجاد کنید. سپس شما این دستور را در داخل آن قرار می دهید.
سپس شما نیاز دارید که فایل “~/.ssh/proxyauth” را که شامل خط زیر است را ایجاد کنید.
بعد از آن شما می توانید به طور نامرئی از scp استفاده کنید.
لطفا توجه کنید که corkscrew روی سیستم شما هنوز نصب نشده است. من بروی سیتم mint خودم ابتدا نیاز دارم آنرا به شکل زیر نصب کنم.
برای سیستم های بر پایه yum به صورت زیر آنرا نصب کنید.
نکته ی دیگری که باید توجه کنید این است که فایل “~.ssh/proxyauth” شامل username و password تان است، پس اطمینان حاصل کنید که این فایل توسط شما قابل دسترسی باشد.
انتخاب فایل ssh_config متفاوت
برای کاربران موبایل که اغلب بین شبکه ی شرکت و شبکه ی عمومی جابجا می شودند، این مشکل خواهد بود که مدام تنظیمات scp شان را تغییر دهند. بهتر است که ما فایل ssh_config متفاوتی را برای نیاز مان استفاده کنیم.
سناریوی نمونه
پروکسی در شبکه ی شرکت استفاده می شود و در شبکه ی عمومی استفاده نمی شود. و شما در شبکه جابجا شده اید.
به صورت پیش فرض فایل ssh_config هر کاربر در ~/.ssh/cofig قرار دارد. یک فایل خاص ssh_config برای کار با پروکسی ایجاد کنید. زمانی که شما در شبکه ی شرکت هستید، شمامی توانید از آپشن -F استفاده کنید. و زمانی که در شبکه ی عمومی هستید می توانید آنرا استفاده نکنید.
همچنین توصیه میشود مطالعه کنید :
دستور پیشرفته copy در لینوکس برای نمایش میزان پیشرفت کپی فایل ها و دایرکتوری های بزرگ
دستور pv برای مانیتور روند کپی، بک آپ و فشرده سازی اطلاعات در لینوکس
pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل
10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور
10 مثال از دستور Rsync در لینوکس
دستورات nc و pv برای انتقال فایل ها بین دو کامپیوتر
موفق باشید.
دستور زیر به شما اجازه خواهد داد که “source_file_name” را به “destination_folder” در “destination_host” و با استفاده از “username account” کپی کنید.
ساختار اولیه ی دستور SCP
کد PHP:
scp source_file_name username@destination_host:destination_folder
نشان دادن اطلاعات جزئی تر از پروسه ی scp را با استفاده از آپشن –v
دستور scp بدون پارامتر، فایل ها را در پس زمینه کپی خواهد کرد. و کاربر هیچ پروسس و خطایی را نخواهد دید. شما می توانید از گزینه ی –v برای پرینت کردن اطلاعات در صفحه استفاده کنید. این به شما در عیب یابی و مشکلات پیکربندی کمک خواهد کرد.
کد PHP:
pungki@mint ~/Documents $ scp -v Label.pdf mrarianto@202.x.x.x:.
کد PHP:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: password
mrarianto@202.x.x.x's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
Sending file modes: C0770 3760348 Label.pdf
Sink: C0770 3760348 Label.pdf
Label.pdf 100% 3672KB 136.0KB/s 00:27
Transferred: sent 3766304, received 3000 bytes, in 65.2 seconds
Bytes per second: sent 57766.4, received 46.0
debug1: Exit status 0
نشان دادن زمان های اصلاح و زمان های دسترسی به فایل اصلی
آپشن –p در این مورد به شما کمک خواهد کرد. یک زمان تخمینی و سرعت ارتباط به شما نشان داده خواهد شد.
کد PHP:
pungki@mint ~/Documents $ scp -p Label.pdf mrarianto@202.x.x.x:.
کد PHP:
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 126.6KB/s 00:29
ایجاد انتقال سریعتر فایل با استفاده از آپشن –C
یکی از پارامترهایی که می توانند فایلهای شما را سریعتر انتقال دهند گزینه ی –C است. پارامتر –C همچنین برای فشرده سازی فایل ها بکار میرود و این فشرده سازی تنها در شبکه بکار می رود و زمانی که فایل به سرور رسید، حجم اولیه ی خود را به دست می آورد.
به دستورات زیر نگاه کنید. ما از فایلی با حجم 93 MB استفاده کرده ایم.
کد PHP:
pungki@mint ~/Documents $ scp -pv messages.log mrarianto@202.x.x.x:.
کد PHP:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
mrarianto@202.x.x.x's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0
کد PHP:
pungki@mint ~/Documents $ scp -Cpv messages.log mrarianto@202.x.x.x:.
کد PHP:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
mrarianto@202.x.x.x's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48
نکته ای که شما باید به آن توجه کنید این است که روش فشرده سازی بروی هر فایلی کار نمی کند. زمانی که فایل از قبل فشرده شده است استفاده از این گزینه تاثیری ندارد. فایل هایی همچون .zip و .rar و عکس ها و فایل های .iso از این دسته فایل های هستند.
انتخاب روش دیگری برای رمزگذاری فایلها
به طور پیش فرض scp از AES-128 برای رمزنگاری فایلها استفاده می کند. برای تغییر دادن آن می توانید از گزینه ی –c استفاده کنید.
کد PHP:
pungki@mint ~/Documents $ scp -c 3des Label.pdf mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
محدودکردن مصرف پهنای باند
پارامتر دیگری که ممکن است استفاده شود پارامتر –l می باشد. این پارامتر مصرف پهنای باند را محدود خواهد کرد. این بسیار مفید است زمانی که شما می خواهید فایل های زیادی را با اسکریپتی به صورت خودکار انتقال دهید اما شما نمی خواهید کل پهنای باند توسط scp گرفته شود.
کد PHP:
pungki@mint ~/Documents $ scp -l 400 Label.pdf mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13
مشخص کردن پورت ها با استفاده از scp
معمولا scp به صورت پیش فرض از پورت 22 استفاده می کند. اما به دلایل امنیتی شما می توانید پورت را تغییر دهید. به عنوان مثال ما از پورت 2249 استفاده میکنیم.
کد PHP:
pungki@mint ~/Documents $ scp -P 2249 Label.pdf mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14
کپی کردن فایل ها در داخل دایرکتوری به صورت بازگشتی
گاهی اوقات ما نیاز داریم که تمامی فایل ها و دایرکتوری ها را کپی کنیم. ما می توانیم این کار را با استفاده از آپشن –r انجام دهیم.
کد PHP:
pungki@mint ~/Documents $ scp -r documents mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00
غیرفعال کردن پیشرفت پروسس و پیام های هشدار
اگر شما نمی خواهید پیشرفت پروسس و پیام های هشدار را ببینید، شما می توانید آنرا با استفاده از –q غیرفعال کنید.
کد PHP:
pungki@mint ~/Documents $ scp -q Label.pdf mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
pungki@mint ~/Documents $
کپی کردن فایل ها با استفاده از scp ازطریق Proxy
سرور پروکسی معمولا در محیط های اداری استفاده می شود. به طور بومی scp پروکسی پیکربندی شده ندارد. زمانی که محیط شما پروکسی است، شما باید به scp بگویید که از پروکسی استفاده کند.
در اینجا یک سناریو وجود دارد. آدرس پروکسی 10.0.96.6 و پورت آن 8080 میباشد، همچنین پروکسی با احراز هویت کاربر پیاده سازی شده است. ابتدا شما نیاز دارید که فایل “~/.ssh/config” را ایجاد کنید. سپس شما این دستور را در داخل آن قرار می دهید.
کد PHP:
ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth
کد PHP:
myusername:mypassword
لطفا توجه کنید که corkscrew روی سیستم شما هنوز نصب نشده است. من بروی سیتم mint خودم ابتدا نیاز دارم آنرا به شکل زیر نصب کنم.
کد PHP:
$ apt-get install corkscrew
کد PHP:
# yum install corkscrew
انتخاب فایل ssh_config متفاوت
برای کاربران موبایل که اغلب بین شبکه ی شرکت و شبکه ی عمومی جابجا می شودند، این مشکل خواهد بود که مدام تنظیمات scp شان را تغییر دهند. بهتر است که ما فایل ssh_config متفاوتی را برای نیاز مان استفاده کنیم.
سناریوی نمونه
پروکسی در شبکه ی شرکت استفاده می شود و در شبکه ی عمومی استفاده نمی شود. و شما در شبکه جابجا شده اید.
کد PHP:
pungki@mint ~/Documents $ scp -F /home/pungki/proxy_ssh_config Label.pdf
mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
همچنین توصیه میشود مطالعه کنید :
دستور پیشرفته copy در لینوکس برای نمایش میزان پیشرفت کپی فایل ها و دایرکتوری های بزرگ
دستور pv برای مانیتور روند کپی، بک آپ و فشرده سازی اطلاعات در لینوکس
pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل
10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور
10 مثال از دستور Rsync در لینوکس
دستورات nc و pv برای انتقال فایل ها بین دو کامپیوتر
موفق باشید.