Cum să utilizați comanda SCP în Linux

Un tutorial ușor pentru a vă ajuta să transferați fișiere pe un sistem de la distanță de pe sistemul dumneavoastră Linux folosind comanda scp.

SCP înseamnă „Secure Copy”. scp este un utilitar de linie de comandă oferit de Linux care permite transferul de fișiere și directoare de la o mașină la alta printr-o rețea nesigură.

Dacă doriți să copiați fișiere de pe un sistem în altul, atunci scp poate fi o opțiune foarte bună pentru a face un transfer sigur al fișierelor și directoarelor. Când cele două mașini care comunică sunt conectate prin aceeași rețea, atunci se utilizează scp devine posibil.

Vă puteți baza foarte mult pe scp comandă pentru confidențialitate și integritate, deoarece fișierul care este transferat și parola utilizată pentru transfer sunt ambele criptate. Nicio informație sensibilă nu va fi dezvăluită, chiar dacă cineva încearcă să scruteze traficul în timp ce acest transfer este în desfășurare.

În acest tutorial, vom vedea diferite exemple ale scp comanda. Ne vom uita, de asemenea, la unele dintre opțiunile utilizate frecvent cu scp comanda.

Începeți cu comanda scp

Folosind scp comandă puteți transfera fișiere/directoare:

  • De la mașina dvs. locală la o mașină la distanță.
  • Între două mașini la distanță.
  • De la o mașină la distanță la mașina dvs. locală.

Sintaxa generala:

scp [Opțiune] [nume_fișier_sursă] [utilizator@gazdă_destinație]:dosar_destinație

Să înțelegem atributele de bază ale acestei comenzi unul câte unul.

  • [nume_fișier_sursă] Acesta este fișierul sursă pe care doriți să îl copiați.
  • [user@destination_Host] Acesta este numele de utilizator al sistemului de la distanță în care doriți să copiați fișierul. Adresa IP a mașinii de la distanță este, de asemenea, utilizată în acest atribut după „@‘ simbol.
  • [dosar de destinație] Acesta este directorul în care doriți să salvați fișierul copiat.

Notă: Colonul (:) este folosit în sintaxă deoarece face diferența între locațiile locale și cele la distanță. Folosim colonul (:) cu sistemul de la distanță pentru a specifica directorul în care trebuie copiate fișierele. În cazul în care nu specificăm directorul țintă, atunci fișierele vor fi copiate în directorul principal al utilizatorului de sistem la distanță.

Opțiuni utilizate cu scp

Unele dintre cele mai populare opțiuni utilizate cu scp comanda sunt enumerate mai jos.

OpțiuneDescriere
-Cpermite comprimarea fișierului să fie transferat
-vdați rezultatul verbos
-rcopiați fișierele și directoarele în mod recursiv
-ppăstrează permisiunile, modurile și timpii de acces ale fișierelor
-Pschimba portul implicit utilizat de scp comanda

Vom vedea exemplele acestor opțiuni, mai departe în tutorial.

Copierea fișierului de pe un sistem local pe un sistem la distanță

scp vă permite să transferați fișiere de pe sistemul local pe un sistem la distanță folosind următoarea sintaxă. Acest lucru vă permite să transferați sau să încărcați fișierele pe un server plasat de la distanță.

Sintaxa generala:

scp [nume_fișier] utilizator_la distanță@gazdă:[dosar_destinație]

Exemplu:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

În acest exemplu, copiem un fișier „apache-tomcat-9.0.8.tar.gz” din sistemul local în sistemul de la distanță a cărui adresă IP este „143.110.178.221”.

Pe sistemul de la distanță, fișierul va fi acum copiat în directorul numit „gaurav”.

Ieșire:

gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] parola lui: apache-tomcat-9.0.8.tar.gz 100% 9589KB . /s 02:00 gaurav@ubuntu:~$ 

Să verificăm rezultatul fișierului pe sistemul de la distanță.

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Astfel, fișierul este copiat cu succes în sistemul de la distanță folosind scp comanda.

Copierea mai multor fișiere pe un sistem de la distanță

În exemplul anterior, am învățat să transferăm un fișier pe sistemul de la distanță folosind scp comanda. Vom vedea acum metoda de a transfera mai multe fișiere de pe sistemul local pe un sistem la distanță folosind această comandă.

Sintaxa generala:

scp [fișier 1] [fișier 2] [fișier n] remote_username@remote_host:[director specific]

Să înțelegem acest proces simplu cu un exemplu.

Exemplu:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

Aici, în comanda sunt menționate mai multe fișiere pentru a fi copiate pe sistemul de la distanță.

Ieșire:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] parola lui: ath.html 100KB/s 94.078.221 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:~$

Pe sistemul de la distanță:

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 Oct 5 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Toate cele trei fișiere sunt acum copiate pe sistemul de la distanță.

Copierea unui director pe sistemul de la distanță

Poți să folosești scp comandă pentru a copia un director din sistemul local în sistemul de la distanță. Procesul este similar cu cel al copierii unui fișier. Pentru a copia și conținutul directorului, puteți utiliza -r opțiunea cu scp comanda.

The -r opțiunea este folosită pentru a copia un director recursiv. Aceasta înseamnă că vor fi copiate și toate subfolderele și fișierele din director.

Sintaxa generala:

scp -r [calea directorului] nume_utilizator_la distanță@gazdă_la distanță:[director_țintă]

Exemplu:

scp -r PycharmProjects [email protected]:gaurav

Ieșire:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] parola lui: __main__.py 100% 623 7.8KB/s 00:00 __20_% . :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/211688 KB 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 10348.py 100% KB/s 00:00 gaurav@ubuntu:~$ 

Folosind -r opțiunea cu scp comanda copiază toate subfolderele și fișierele din director de pe mașina locală pe sistemul de la distanță.

Afișarea informațiilor detaliate despre procesul scp

Puteți folosi -v (minuscule v) pentru a afișa informațiile despre fișierele care sunt copiate fie pe o telecomandă, fie pe sistemul dumneavoastră local. Acest tip de ieșire este numit și ieșire verbose.

Când se utilizează această opțiune, informațiile complete de depanare despre fișier sunt afișate pe ecran.

Sintaxa generala:

scp -v [nume_fișier] nume_utilizator@gazdă_utilizator:

Exemplu:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team

Ieșire:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Executarea: programul /usr/bin/ssh host 159.89.170.11, user root, comanda scp -v -t echipa OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 decembrie 2017 debug1: citirea datelor de configurare /home/gaurav/.ssh/config debug1: citirea datelor de configurare /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linia 19: Aplicarea opțiunilor pentru * debug1: Conectare la 159.89.170.11 [159.89.170.11] portul 22. debug1: Conexiune stabilită. debug1: key_load_public: Nu există un astfel de fișier sau director debug1: fișier de identitate /home/gaurav/.ssh/id_rsa tip -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input:_channel_re canal 0 rtype exit-status răspuns 0 debug1: canal 0: gratuit: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferat: trimis 9826736, primit 4016 octeți pe secundă, în 97 bytes, în 97 secunde. 101133.9, a primit 41.3 debug1: stare de ieșire 0 gaurav@ubuntu:~$ 

Aici, în rezultat, puteți vedea că informațiile de depanare ale fișierului sunt afișate pe terminalul dvs. atunci când scp comanda este folosită cu -v opțiune.

Transferul de fișiere între două gazde la distanță

Linux vă permite să vă conectați la mai multe gazde la distanță. Puteți transfera fișiere și directoare între două gazde la distanță folosind scp comanda.

Sintaxa generala:

scp remote_user_1@host_1:/[nume_fișier] remote_user_2@host_2:[folder_to_save]

Sintaxa poate părea puțin mai largă, dar este destul de simplă. Aici, prima parte a comenzii oferă informații despre utilizatorul de la distanță de unde urmează să fie copiat fișierul. două puncte (:) și / este folosit pentru a specifica numele fișierului sau numele directorului care urmează să fie transferat între cele două mașini la distanță.

A doua parte oferă informații despre sistemul de la distanță țintă în care urmează să fie copiat fișierul.

Exemplu:

scp -r [email protected]:gaurav [email protected]:/team

Aici, vom copia un director numit „gaurav” recursiv din sistemul local pe un sistem la distanță. Fișierul va fi copiat într-un folder „echipă” de pe sistemul de la distanță.

Ieșire:

gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] parola lui: 1.py 100% 134 261.3KB/s variabile 00: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:~$

Aici, am folosit scp comanda pe sistemul local pentru a transfera un director numit „gaurav” de la un server la distanță la altul.

Transferați fișiere de la sistemul de la distanță în sistemul dvs. local

Puteți transfera cu ușurință fișierele sau directoarele de la sistemul de la distanță în sistemul local folosind scp comanda. Cu cuvinte mai simple, puteți descărca mai multe fișiere sau directoare de pe serverul de la distanță pe sistemul dvs. local folosind scp comanda.

Sintaxa generala:

scp nume_utilizator_la distanță@gazdă_utilizator:/files/file.txt /[folder_of_local_system]

Ieșire:

gaurav@ubuntu:~$ scp [email protected]:how.txt . parola lui [email protected]: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$

Aici, am descărcat (copiat) fișierul de pe serverul de la distanță în directorul meu de acasă. Prin urmare, am folosit punctul (.) pentru a specifica în comandă copierea fișierului în directorul meu de acasă.

Ieșire eșantion:

gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 oct 6 09:49 how.txt gaurav@ubuntu:~$ 

Aici, fișierul este acum copiat în directorul meu de acasă de pe serverul de la distanță.

În același mod, puteți descărca mai multe fișiere sau directoare de pe serverul de la distanță folosind scp comanda cu opțiunile corespunzătoare.

Comprimarea fișierelor pentru a face transferuri mai rapide

Uneori, transferul de fișiere mari poate consuma mult timp. Această problemă poate fi rezolvată în timpul utilizării scp comanda cu -C (majuscule C) opțiune.

Folosind -C opțiunea, comprimă fișierele de dimensiune mai mare, ceea ce facilitează un transfer mai rapid și astfel economisește timp.

Un fapt interesant despre această opțiune este că fișierul este copiat cu dimensiunea sa originală pe sistemul de destinație, dar în timpul procesului de transfer, dimensiunea este comprimată pentru a permite un transfer mai rapid. Astfel, compresia se face doar în rețea.

Sintaxa generala:

scp -C [nume_fișier] nume_utilizator@gazdă_utilizator:[dosar_țintă]

Să vedem un exemplu comparativ pentru a înțelege diferența.

Transfer fără opțiunea -C:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Executarea: programul /usr/bin/ssh host 68.183.82.183, user root, comanda scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 decembrie 2017 debug1: Citirea datelor de configurare /home/trinity/.ssh/config debug1: Citirea datelor de configurare /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linia 19: Aplicarea opțiunilor pentru * debug1 : Conectare la 68.183.82.183 [68.183.82.183] portul 22. debug1: Conexiune stabilită. debug1: client_input_channel_req: canal 0 rtype exit-status răspuns 0 debug1: canal 0: gratuit: client-session, nchannels 1 debug1: fd 0 ștergere O_NONBLOCK debug1: fd 1 ștergere O_NONBLOCK Transferat: trimis 7516 de 4047 secunde în 75047. pe secundă: trimis 100693.7, primit 53.7 debug1: Stare de ieșire 0 gaurav@ubuntu:~$ 

Din cele de mai sus, ieșire putem vedea că timpul necesar pentru transfer este de 74,6 secunde. Vom încerca să transferăm același fișier folosind opțiunea -C și vom observa diferența.

Transfer cu opțiunea -C:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Executarea: programul /usr/bin/ssh host 68.183.82.183, user root, comanda scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 decembrie 2017 debug1: Citirea datelor de configurare /home/trinity/.ssh/config debug1: Citirea datelor de configurare /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linia 19: Aplicarea opțiunilor pentru * debug1 : Conectare la 68.183.82.183 [68.183.82.183] portul 22. debug1: Conexiune stabilită. . . webupload.img 100% 1834KB 98.7KB/s 00:18 Moduri de trimitere a fișierului: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB/s Moduri de trimitere a fișierului: E: 1006 006: 1006 Sink: E. 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-0071.zip 100% 3666KB 218.5KB/s 00:16 Sink: E debug1: client_input_channel_req: canal 0 rtype exit-status răspuns 0 debug1: canal 0: gratuit: client-session, nchannels 1 debug1: fd 0 stergere debug O_NONB_1: ștergere fd 0_NONB_LOCK Transferat: trimis 7518864, primit 3828 octeți, în 51,0 secunde Octeți pe secundă: trimis 100245.4, primit 51.0 debug1: stare de ieșire 0 debug1: comprimare în ieșire: date brute 7511925, comprimate 75131925, comprimate 7513136, factor de comprimare 11:136, comprimare debug 1:1:1:1 999, factor 0,68 gaurav@ubuntu:~$

Aici, putem observa cu ușurință că folosind -C opțiunea cu scp comanda ne-a permis să comprimăm fișierul în rețea, dovedindu-se astfel a fi o opțiune care economisește timp.

Folosind un alt port ssh pentru transferul de fișiere

În timp ce utilizați scp comanda portul implicit care este implementat este portul 22. Utilizatorul are libertatea de a personaliza această alegere a portului. Puteți folosi -P (opțiunea P majusculă) cu scp comandă pentru a utiliza portul la alegere.

Sintaxa generala:

cp -P [număr_port_nou] [nume_fișier/nume_director] utilizator_la distanță@gazdă:[dosar_destinație]

Exemplu:

scp -P 4248 dlink [email protected]:team

Folosind comanda de mai sus, fișierul va fi transferat pe serverul de la distanță. Dar de data aceasta, portul folosit va fi portul 4248 în loc de implicit portul 22.

Concluzie

După ce am parcurs acest tutorial, am învățat despre natura dinamică a scp comandă folosită pentru a transfera sau copia fișiere de pe un sistem în altul. Această opțiune poate fi folosită și pentru a descărca fișiere sau directoare de pe serverul de la distanță. Astfel, putem concluziona că scp comanda se dovedește foarte utilă pentru transferurile de fișiere atunci când trebuie să gestionați mai mult de un sistem, precum și servere la distanță simultan.