Isang madaling tutorial upang matulungan kang maglipat ng mga file sa isang malayuang sistema mula sa iyong Linux system gamit ang scp command.
Ang SCP ay nangangahulugang 'Secure Copy'. scp
ay isang command-line utility na inaalok ng Linux na nagpapahintulot sa paglipat ng mga file at direktoryo mula sa isang makina patungo sa isa pa sa isang hindi secure na network.
Kung nais mong kopyahin ang mga file mula sa isang system patungo sa isa pa, kung gayon scp
ay maaaring maging isang napakahusay na opsyon upang makagawa ng ligtas na paglilipat ng mga file at direktoryo. Kapag ang dalawang nakikipag-usap na makina ay konektado sa parehong network, pagkatapos ay ginagamit scp
nagiging posible.
Maaari kang lubos na umasa sa scp
utos para sa pagiging kumpidensyal at integridad bilang ang file na inililipat at ang password na ginamit para sa paglilipat ay parehong naka-encrypt. Walang mahahayag na sensitibong impormasyon kahit na may sumubok na sumilip sa trapiko habang nagpapatuloy ang paglilipat na ito.
Sa tutorial na ito, makikita natin ang iba't ibang halimbawa ng scp
utos. Titingnan din natin ang ilan sa mga madalas na ginagamit na opsyon sa scp
utos.
Pagsisimula sa scp command
Gamit ang scp
utos na maaari mong ilipat ang mga file/direktoryo:
- Mula sa iyong lokal na makina hanggang sa isang malayuang makina.
- Sa pagitan ng dalawang remote na makina.
- Mula sa isang malayuang makina hanggang sa iyong lokal na makina.
Pangkalahatang syntax:
scp [Pagpipilian] [source_file_name] [user@destination_Host]:destination_folder
Unawain natin ang mga pangunahing katangian ng utos na ito nang paisa-isa.
- [source_file_name] Ito ang source file na gusto mong kopyahin.
- [user@destination_Host] Ito ang username ng remote system kung saan mo gustong kopyahin ang file. Ang IP address ng remote na makina ay ginagamit din sa katangiang ito pagkatapos ng '
@
' simbolo. - [destination_folder] Ito ang direktoryo kung saan mo gustong i-save ang nakopyang file.
Tandaan: Ang colon (:
) na simbolo ay ginagamit sa syntax dahil ito ay nag-iiba sa pagitan ng lokal at malalayong lokasyon. Ginagamit namin ang tutuldok (:
) kasama ang malayuang sistema upang tukuyin ang direktoryo kung saan dapat kopyahin ang mga file. Kung sakaling hindi namin tinukoy ang target na direktoryo, ang mga file ay makokopya sa home directory ng remote system user.
Mga opsyon na ginamit sa scp
Ilan sa mga pinakasikat na opsyon na ginagamit sa scp
command ay nakalista sa ibaba.
Pagpipilian | Paglalarawan |
-C | payagan ang compression ng file na mailipat |
-v | ibigay ang verbose output |
-r | kopyahin ang mga file at direktoryo nang paulit-ulit |
-p | panatilihin ang mga pahintulot, mode at oras ng pag-access ng mga file |
-P | baguhin ang default na port na ginamit ng scp utos |
Makikita natin ang mga halimbawa ng mga opsyong ito, higit pa sa tutorial.
Pagkopya ng file mula sa lokal patungo sa isang malayuang sistema
scp
nagbibigay-daan sa iyo na maglipat ng mga file mula sa iyong lokal na system patungo sa isang malayuang sistema gamit ang sumusunod na syntax. Binibigyang-daan ka nitong ilipat o i-upload ang iyong mga file sa isang malayong inilagay na server.
Pangkalahatang Syntax:
scp [file_name] remote_user@host:[destination_folder]
Halimbawa:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
Sa halimbawang ito, kinokopya namin ang isang file na 'apache-tomcat-9.0.8.tar.gz' mula sa lokal na system patungo sa remote system na ang IP address ay '143.110.178.221'.
Sa remote system, ang file ay makokopya na ngayon sa direktoryo na pinangalanang 'gaurav'.
Output:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected]'s password: apache-tomcat-9.0.8.tar.gz 100KB% 9989KB /s 02:00 gaurav@ubuntu:~$
Suriin natin ang output sa remote system para sa file.
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Kaya, matagumpay na nakopya ang file sa remote system gamit ang scp
utos.
Pagkopya ng maramihang mga file sa isang malayuang sistema
Sa nakaraang halimbawa, natutunan naming maglipat ng file sa remote system gamit ang scp
utos. Makikita natin ngayon ang paraan upang maglipat ng maramihang mga file mula sa iyong lokal na sistema patungo sa isang malayuang sistema gamit ang utos na ito.
Pangkalahatang Syntax:
scp [file 1] [file 2] [file n] remote_username@remote_host:[partikular na direktoryo]
Unawain natin ang simpleng prosesong ito na may isang halimbawa.
Halimbawa:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Dito, maraming mga file ang binanggit sa command na makopya sa remote system.
Output:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected]'s password: ath.html 100KB/s 9.99KB 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$
Sa remote system:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l total 9800 -rw-r--r-- 1 root root 0 Oct 5 08:58 abc.txt -rw-r-- r-- 1 root root 9818695 Oct 5 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 root root 204057 Oct 5 08:58 ath.html -rw-r-- r-- 1 root root 4360 Okt 5 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Ang lahat ng tatlong mga file ay kinopya na ngayon sa remote system.
Pagkopya ng isang direktoryo sa remote system
Pwede mong gamitin scp
utos na kopyahin ang isang direktoryo mula sa iyong lokal na sistema patungo sa malayong sistema. Ang proseso ay katulad ng pagkopya ng isang file. Upang kopyahin din ang nilalaman ng direktoryo, maaari mong gamitin ang -r
opsyon kasama ang scp
utos.
Ang -r
Ang opsyon ay ginagamit upang kopyahin ang isang direktoryo nang paulit-ulit. Ibig sabihin, makokopya din ang lahat ng sub-folder at mga file sa loob ng direktoryo.
Pangkalahatang syntax:
scp -r [directory path] remote_username@remote_host:[target_directory]
Halimbawa:
scp -r PycharmProjects [email protected]:gaurav
Output:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected]'s password: __main__.py 100% 623 7.8KB/s 00:00 __0.00 KB/s 00:00 __init__.py :00 completion.py 100% 2929 28.1KB/s 00:00 search.py 100% 4728 38.7KB/s 00:00 uninstall.py 100% 2963 32.5KB/s 00:00 hash.py 100% 2168KB s 00:00 check.py 100% 1430 16.8KB/s 00:00 configuration.py 100% 7125 50.4KB/s 00:00 show.py 100% 6289 49.8KB/s 00:00 download.py 1000% KB/s 00:00 gaurav@ubuntu:~$
Gamit ang -r
opsyon kasama ang scp
kinokopya ng command ang lahat ng mga sub-folder at file sa loob ng direktoryo mula sa lokal na makina patungo sa remote system.
Pagpapakita ng detalyadong impormasyon tungkol sa proseso ng scp
Maaari mong gamitin ang -v
(maliit na titik v
) opsyon upang ipakita ang impormasyon tungkol sa mga file na kinokopya sa alinman sa isang remote o sa iyong lokal na sistema. Ang ganitong uri ng output ay tinatawag ding verbose output.
Kapag ginamit ang opsyong ito, ang kumpletong impormasyon sa pag-debug tungkol sa file ay ipapakita sa screen.
Pangkalahatang Syntax:
scp -v [file_name] user_name@user_host:
Halimbawa:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Output:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dis 2017 debug1: Binabasa ang data ng configuration /home/gaurav/.ssh/config debug1: Binabasa ang data ng configuration /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linya 19: Paglalapat ng mga opsyon para sa * debug1: Pagkonekta sa 159.89.170.11 [159.89.170.11] port 22. debug1: Naitatag ang koneksyon. debug1: key_load_public: Walang ganoong file o directory debug1: identity file /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: libre: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Inilipat: naipadala 9826736, nakatanggap ng 4016 byte, sa 97.2 segundo 101133.9, nakatanggap ng 41.3 debug1: Exit status 0 gaurav@ubuntu:~$
Dito, sa output, makikita mo na ang impormasyon sa pag-debug ng file ay ipinapakita sa iyong terminal kapag ang scp
Ang utos ay ginagamit kasama ng -v
opsyon.
Paglilipat ng mga file sa pagitan ng dalawang malayuang host
Binibigyang-daan ka ng Linux na kumonekta sa maraming malayuang host. Maaari kang maglipat ng mga file at direktoryo sa pagitan ng dalawang remote host gamit ang scp
utos.
Pangkalahatang Syntax:
scp remote_user_1@host_1:/[file_name] remote_user_2@host_2:[folder_to_save]
Ang syntax ay maaaring mukhang medyo mas malawak ngunit medyo simple. Dito, ang unang bahagi ng command ay nagbibigay ng input tungkol sa remote user kung saan kokopyahin ang file. tutuldok (:) at /
ay ginagamit upang tukuyin ang pangalan ng file o ang pangalan ng direktoryo na ililipat sa pagitan ng dalawang malayuang makina.
Ang ikalawang bahagi ay nagbibigay ng impormasyon tungkol sa target na remote system kung saan ang file ay dapat kopyahin.
Halimbawa:
scp -r [email protected]:gaurav [email protected]:/team
Dito, kokopyahin namin ang isang direktoryo na pinangalanang 'gaurav' nang pabalik-balik mula sa lokal na sistema patungo sa isang malayong sistema. Kokopyahin ang file sa isang folder na 'team' sa remote system.
Output:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected]'s password: 1.py 100% 134 261.3KB/s 0.00: 100% 377 949.2KB/s 00:00 abc.txt 100% 0 0.0KB/s 00:00 ath.html 100% 199KB 41.8MB/s 00:00 gaurav@ubuntu:~$
Dito, ginamit namin ang scp
utos sa lokal na sistema upang ilipat ang isang direktoryo na pinangalanang 'gaurav' mula sa isang malayong server patungo sa isa pa.
Maglipat ng mga file mula sa malayong sistema patungo sa iyong lokal na sistema
Madali mong mailipat ang mga file o direktoryo mula sa malayong sistema patungo sa iyong lokal na sistema gamit ang scp
utos. Sa mas simpleng salita, maaari kang mag-download ng maraming file o direktoryo mula sa malayong server papunta sa iyong lokal na system gamit ang scp
utos.
Pangkalahatang Syntax:
scp remote_username@user_host:/files/file.txt /[folder_of_local_system]
Output:
gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected]'s password: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$
Dito, na-download ko (nakopya) ang file mula sa malayong server papunta sa aking home directory. Kaya naman, gumamit ako ng tuldok (.
) upang tukuyin sa utos na kopyahin ang file sa aking home directory.
Sample na Output:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 Oct 6 09:49 how.txt gaurav@ubuntu:~$
Dito, ang file ay kinopya na ngayon sa aking home directory mula sa remote server.
Sa parehong paraan, maaari kang mag-download ng maramihang mga file o direktoryo mula sa malayong server gamit ang scp
utos na may naaangkop na mga pagpipilian.
Pag-compress ng mga file upang makagawa ng mas mabilis na paglilipat
Minsan, ang paglilipat ng malalaking file ay maaaring magtagal. Maaaring matugunan ang isyung ito habang ginagamit ang scp
utos kasama ang -C
(malaki ang titik C
) opsyon.
Gamit ang -C
opsyon, pini-compress ang mas malaking laki ng mga file na nagpapadali sa mas mabilis na paglipat at sa gayon ay nakakatipid ng oras.
Ang isang kawili-wiling katotohanan tungkol sa opsyong ito ay, ang file ay kinopya sa orihinal na laki nito sa patutunguhang sistema ngunit sa panahon ng proseso ng paglilipat, ang laki ay na-compress upang paganahin ang isang mas mabilis na paglipat. Kaya, ang compression ay ginagawa lamang sa network.
Pangkalahatang Syntax:
scp -C [file_name] user_name@user_host:[target_folder]
Tingnan natin ang isang paghahambing na halimbawa upang maunawaan ang pagkakaiba.
Maglipat nang walang -C na opsyon:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 Dis 2017 debug1: Pagbabasa ng data ng configuration /home/trinity/.ssh/config debug1: Pagbabasa ng data ng configuration /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Paglalapat ng mga opsyon para sa * debug1 : Kumokonekta sa 68.183.82.183 [68.183.82.183] port 22. debug1: Naitatag ang koneksyon. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: libre: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Nailipat: ipinadala 7516504 bytes, natanggap ng 6 segundo, natanggap ng 7516504. bawat segundo: nagpadala ng 100693.7, nakatanggap ng 53.7 debug1: Exit status 0 gaurav@ubuntu:~$
Mula sa itaas, ang output ay makikita natin na ang oras na kinakailangan para sa paglipat ay 74.6 segundo. Susubukan naming ilipat ang parehong file gamit ang -C na opsyon at obserbahan ang pagkakaiba.
Ilipat gamit ang -C na opsyon:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 Dis 2017 debug1: Pagbabasa ng data ng configuration /home/trinity/.ssh/config debug1: Pagbabasa ng data ng configuration /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Paglalapat ng mga opsyon para sa * debug1 : Kumokonekta sa 68.183.82.183 [68.183.82.183] port 22. debug1: Naitatag ang koneksyon. . . webupload.img 100% 1834KB 98.7KB/s 00:18 Pagpapadala ng mga file mode: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB 100.3KB/s file: Sendings 6 Sink 4 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T.01.zip-T-07. 100% 3666KB 218.5KB/s 00:16 Sink: E debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: libre: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK O_NONBLOCK debug Inilipat: naipadala 7518864, nakatanggap ng 3828 byte, sa 51.0 segundo Bytes bawat segundo: naipadala 100245.4, nakatanggap ng 51.0 debug1: Exit status 0 debug1: compress outgoing: raw data 7511925, compressed 7513100, compressed data1.136, com compressed data1.47 999, factor 0.68 gaurav@ubuntu:~$
Dito, madali nating maobserbahan iyon gamit ang -C
opsyon kasama ang scp
pinahintulutan kami ng command na i-compress ang file sa network kaya nagpapatunay na isang opsyon sa pagtitipid ng oras.
Paggamit ng ibang ssh port para sa paglilipat ng file
Habang ginagamit ang scp
command ang default na port na naka-deploy ay ang port 22
. May kalayaan ang user na i-customize ang pagpipiliang ito ng port. Maaari mong gamitin ang -P
(malalaking titik P opsyon) na may scp
command na gamitin ang port na iyong pinili.
Pangkalahatang Syntax:
cp -P [new_port_number] [file_name/directory_name] remote_user@host:[destination_folder]
Halimbawa:
scp -P 4248 dlink [email protected]:team
Gamit ang command sa itaas, ililipat ang file sa remote server. Ngunit sa pagkakataong ito, ang port na gagamitin ay port 4248
sa halip na ang default port 22
.
Konklusyon
Matapos dumaan sa tutorial na ito, natutunan namin ang tungkol sa dinamikong katangian ng scp
command na ginagamit upang ilipat o kopyahin ang mga file mula sa isang system patungo sa isa pa. Magagamit din ang opsyong ito upang mag-download ng mga file o direktoryo mula sa malayong server. Kaya, maaari nating tapusin iyon scp
Ang command ay nagpapatunay na lubhang kapaki-pakinabang para sa mga paglilipat ng file kapag kailangan mong pangasiwaan ang higit sa isang sistema pati na rin ang mga malalayong server nang sabay-sabay.