Cum să utilizați comanda scp pe Linux

Publicat: 2022-06-28
Terminal Linux pe ecranul unui laptop.
fatmawati achmad zaenuri/Shutterstock.com

Comanda scp face copierea fișierelor între computere Linux ușoară și sigură. Folosește securitate SSH, dar cel mai bine, este simplu. Dacă puteți folosi cp , puteți folosi scp .

Protocolul de copiere securizată și scp

Să definim câțiva termeni: există SCP și există scp . SCP majuscule înseamnă Secure Copy Protocol. scp minuscule înseamnă cp sigur. Cu alte cuvinte, SCP este un protocol și scp este un program.

scp a fost conceput pentru a fi un mijloc sigur și securizat de copiere a fișierelor între computerele Linux de la distanță. Utilizează SSH pentru a stabili conexiuni securizate. SSH, sau secure shell, este un protocol de rețea criptografic folosit adesea pentru a accesa și autentifica la computerele Linux de la distanță. Pe distribuțiile Linux, funcționalitatea SSH este oferită de OpenSSH.

Cum se configurează desktopul de la distanță pe Ubuntu
LEGATE Cum să configurați desktopul de la distanță pe Ubuntu

SCP este oarecum lung în dinte și au fost exprimate preocupări cu privire la utilizarea lui în zilele noastre. De la versiunea OpenSSH 8.8, SCP a fost considerat depreciat. Implementările moderne ale scp utilizează implicit Secure File Transfer Protocol. SSH este încă folosit pentru conexiunea securizată, dar transferurile de fișiere sunt gestionate de SFTP. Toate acestea sunt invizibile și se întâmplă magic sub capotă, iar sintaxa scp a rămas aceeași.

Programul rsync este preferat față de scp , dar este posibil să întâlniți un computer care nu are rsync instalat și pentru care nu aveți privilegii de root, ceea ce înseamnă că nu puteți continua să îl instalați. Pentru a copia fișiere de la computer la computer într-o rețea autonomă, scp este perfect. Pentru ca scp să funcționeze, trebuie să aveți SSH care rulează pe toate computerele pe care le veți copia pe și de pe.

Pentru a vedea versiunea de OpenSSH instalată pe computer, tastați:

 ssh -V 

Obținerea versiunii OpenSSH

Copierea unui singur fișier

La fel ca comanda standard cp , scp copiază fișierele din locația sursă în locația țintă . Pentru a copia un fișier pe un computer la distanță, trebuie să cunoașteți adresa IP sau numele rețelei computerului la distanță. De asemenea, trebuie să aveți acreditările pentru un cont de utilizator care are privilegii de scriere pentru locația în care trimiteți fișierul.

Pentru a trimite un fișier numit „sample.txt” către un computer numit „fedora-34” din rețeaua locală, sintaxa este:

 scp ./sample.txt [email protected]:/home/dave/Downloads/ 

Copierea unui singur fișier pe un computer la distanță

Comanda este formata din:

  • scp : Comanda scp
  • ./sample.txt : Fișierul pe care îl vom trimite. Acesta este în directorul curent.
  • dave@ : contul de utilizator de pe computerul la distanță la care vom trimite fișierul.
  • fedora-34.local : Numele rețelei computerului la distanță.
  • :/home/dave/Downloads/ : Locația în care să copiați fișierul pe computerul de la distanță. Rețineți două puncte „:” care separă numele computerului și calea.

Vi se va solicita să introduceți parola pentru contul de pe computerul de la distanță, apoi fișierul este copiat.

Dacă doriți ca fișierul să aibă un nume diferit pe computerul de la distanță, puteți adăuga un nume de fișier la calea țintă. Pentru a copia același fișier și a-l denumit „different-file.txt”, utilizați această sintaxă:

 scp ./sample.txt [email protected]:/home/dave/Downloads/different-file.txt 

Copierea unui singur fișier pe un computer la distanță cu un nume nou

Comanda scp va suprascrie în tăcere fișierele existente, așa că aveți grijă când copiați fișiere. Dacă pe computerul țintă există deja un fișier cu același nume ca și fișierul pe care îl copiați, acesta va fi suprascris și pierdut.

Dacă computerul țintă nu folosește portul SSH implicit de 22, puteți utiliza opțiunea -P (număr port) pentru a furniza numărul de port corespunzător.

Preluarea unui singur fișier

Pentru a copia un fișier de pe un server la distanță, pur și simplu puneți serverul la distanță ca sursă și puneți calea locală acolo unde doriți ca fișierul să fie copiat ca țintă. Vom copia un fișier numit „development-plan.md” de pe computerul de la distanță în directorul curent de pe computerul local.

 scp [email protected]:/home/dave/Downloads/development-plan.md . 

Copierea unui singur fișier de pe un server la distanță în directorul curent al computerului local

Dacă adăugați un nume de fișier la calea locală, fișierul este copiat și primește acest nume.

 scp [email protected]:/home/dave/Downloads/development-plan.md ./dp-1.md 

Copierea unui singur fișier de pe un server la distanță în directorul curent al computerului local cu un nume nou

Fișierul este copiat, dar redenumit cu numele de fișier specificat.

 ls -hl *.md 

Copierea mai multor fișiere

Copierea mai multor fișiere în orice direcție este ușoară. Puteți enumera câte fișiere sursă doriți. Aici, copiem două fișiere markdown și un fișier CSV.

 scp ./dp-1.md ./dp-2.md ./dp-3.csv [email protected]:/home/dave/Downloads/ 

Copierea mai multor fișiere denumite pe un computer la distanță

Cele trei fișiere sunt copiate pe computerul de la distanță. De asemenea, puteți utiliza metacaracterele. Această comandă face exact același lucru ca ultima comandă.

 scp ./dp . [email protected]:/home/dave/Downloads/ 

Copierea mai multor fișiere pe un computer de la distanță utilizând caractere metalice în numele fișierului

Copiere recursiv directoare

Opțiunea -r (recursivă) vă permite să copiați întregi arbori de directoare cu o singură comandă. Am plasat două fișiere într-un director numit „date” și am creat un director numit „CSV” în directorul „date”. Am plasat un fișier CSV în directorul „date/CSV”.

Această comandă copiază fișierele și recreează structura de directoare pe computerul de la distanță.

 scp -r ./data [email protected]:/home/dave/Downloads/ 

Copierea unui arbore de directoare pe un computer la distanță

Copierea fișierelor între servere la distanță

Puteți chiar să instruiți scp să copieze fișiere de pe un server la distanță pe altul. Sintaxa este destul de simplă. Furnizați numele contului și adresa de rețea a serverului sursă și numele contului și adresa de rețea a serverului țintă. Fișierele sunt copiate de pe serverul sursă și copiate în locația de pe serverul țintă.

Deși sintaxa este simplă, pentru a vă asigura că totul este la locul său, necesită puțin mai multă gândire. Evident, locația în care încercați să copiați fișierele pe serverul de la distanță trebuie să fie accesibilă de contul de utilizator pe care îl specificați pe linia de comandă. Și acel cont de utilizator trebuie să aibă permisiuni de scriere în acea locație.

O condiție prealabilă mai subtilă este ca accesul SSH să fie configurat între computerul local și computerul sursă, precum și între serverele sursă și țintă. Asigurați-vă că puteți utiliza SSH pentru a vă conecta la serverul țintă de pe serverul sursă . Dacă nu poți face asta, scp nu se va putea conecta.

Cum se creează și se instalează chei SSH din Shell Linux
LEGATE Cum se creează și se instalează chei SSH din Shell Linux

Configurarea cheilor SSH, astfel încât să puteți utiliza accesul autentificat, dar fără parolă, este de departe metoda preferată. Folosirea parolelor devine foarte rapid dezordonată și, pentru că vi se solicită parola pentru fiecare cont de utilizator, vă împiedică să automatizați complet procesul cu un script.

Am configurat chei SSH pentru conturile de utilizator pe care le folosim pe fiecare server la distanță. Acest lucru a oferit acces SSH fără probleme la celălalt server, pentru cei doi utilizatori. Acest lucru ne permite să transferăm fișiere în orice direcție, folosind acele două conturi de utilizator.

Pentru a copia fișiere din contul de utilizator „davem” de pe un computer Manjaro în contul „dave” de pe un computer Fedora, printr-o comandă scp emisă de pe computerul nostru local Ubuntu, sintaxa este:

 scp [email protected]:/home/davem/man . [email protected]:/home/dave/ 

Copierea fișierelor de pe un server la distanță pe altul.

Ne-am întors în tăcere la linia de comandă. Nu există indicii că s-a întâmplat ceva. Lucrând pe premisa că nicio veste nu este o veste bună, scp raportează doar erorile pentru această copiere de la distanță la distanță. La verificarea computerului Fedora, putem vedea că fișierele de pe computerul Manjaro au fost copiate și primite.

Fișierele de pe computerul Manjaro primite pe computerul Fedora

În mod implicit, fișierele sunt copiate direct de pe computerul sursă pe computerul țintă. Puteți înlocui acest lucru utilizând opțiunea -3 (în trei direcții).

Cu această opțiune, fișierele sunt transferate de la țintă la sursă, prin computerul local. Pentru ca acest lucru să se întâmple, trebuie să existe acces SSH fără probleme de la computerul local la computerul țintă.

 scp -3 [email protected]:/home/davem/man . [email protected]:/home/dave/ 

Copierea fișierelor de pe un server la distanță pe altul, prin computerul local

Încă nu există niciun indiciu că s-a întâmplat ceva, chiar și atunci când canalizați fișierele prin computerul local. Dovada budincii, desigur, este să verifici computerul țintă.

Alte optiuni

-p (păstrarea atributelor fișierului) va păstra steagurile originale de creare a fișierului, deținerea și accesul pe fișierele transferate. Vor avea aceleași metadate ca și fișierele originale de pe computerul sursă.

Dacă vedeți mesaje de eroare, încercați să repetați comanda și utilizați -v (verbos) pentru a vedea informații detaliate despre încercarea de transfer. Ar trebui să puteți identifica punctul de eșec în ieșire.

Opțiunea -C (comprimare) comprimă fișierele pe măsură ce sunt copiate și le decomprimă atunci când sunt primite. Acesta este ceva care datează din epoca comunicării modem lente între computere. Reducerea dimensiunii încărcăturii utile ar putea reduce timpii de transmisie.

În zilele noastre, timpul necesar pentru comprimarea și decomprimarea fișierelor este probabil să dureze mai mult decât diferența dintre transmisiile comprimate și necomprimate. Dar, deoarece scp este cel mai bine folosit pentru a copia fișiere între computere pe aceeași rețea LAN, viteza de transmisie nu ar trebui să fie o problemă.

RELATE: Cum să faci o copie de rezervă a sistemului tău Linux cu rsync