16 comenzi SCP obișnuite cu exemple pentru a copia fișiere și foldere

SCP este strâns legat de protocolul SSH și s-a născut într-adevăr din aceeași idee.

SCP se asigură că datele rămân confidențiale și nemodificate în timpul tranzitului, ca o extensie a protocolului SSH.

Mai întâi, să înțelegem cum funcționează acest SCP și apoi vom vedea comenzile scp.

Ce este SCP?

SCP înseamnă Secure Copy Protocol.

Este o metodă sigură și eficientă pentru copierea fișierelor și directoarelor între gazde locale și la distanță sau între două gazde la distanță.

Este utilizat pe scară largă pentru transferul de date în siguranță printr-o rețea. SCP se bazează pe SSH (Secure Shell) pentru a stabili o conexiune sigură și a cripta datele în timpul tranzitului.

Indiferent dacă trebuie să mutați un singur fișier sau un întreg director, SCP oferă o soluție fiabilă pentru transferurile de fișiere de la distanță.

Cum funcționează SCP?

SCP este construit pe deasupra protocolului SSH – care este un protocol de rețea criptografic pentru autentificare și executare de comenzi sigure de la distanță. Utilizează aceleași mecanisme de securitate ca și SSH, inclusiv criptarea și autentificarea, pentru a proteja datele în timpul transmisiei.

Când folosește SCP, un utilizator inițiază o comandă de copiere pe mașina locală care specifică fișierul sursă și locația de destinație pe o mașină la distanță. SCP stabilește o conexiune SSH la sistemul de la distanță și apoi copiază în siguranță fișierele de la sursă la destinație.

Când să folosiți SCP?

SCP este deosebit de util în următoarele scenarii.

Backup la distanță de server

SCP vă permite să faceți copii de siguranță ale fișierelor de pe un server la distanță pe mașina dvs. locală sau invers, ceea ce asigură redundanța datelor și recuperarea în caz de dezastru.

Implementarea aplicațiilor

De asemenea, simplifică procesul prin copierea în siguranță a fișierelor necesare în fiecare sistem țintă atunci când implementați aplicații pe mai multe servere,

Transferarea fișierelor mari

SCP oferă o metodă alternativă de încredere și sigură de transmitere a datelor pentru fișiere mari care ar putea fi prea mari pentru a fi trimise ca atașamente de e-mail.

  Cum să salvați postările tale preferate (și de ce ar trebui)

Partajarea securizată a fișierelor

SCP se asigură că datele sunt păstrate criptate pe tot parcursul tranzitului în timp ce trimite fișiere confidențiale altor persoane.

Colaborare la distanță

SCP poate fi folosit pentru a partaja fișiere în siguranță cu colaboratorii sau membrii echipei din diferite locații.

Sintaxa comenzii SCP

Înainte de a începe să folosiți comanda SCP, să începem prin a înțelege sintaxa de bază.

Sintaxa comenzii SCP arată astfel:

scp [options] [source] [destination]

Explicația sintaxei

Opțiuni

Acestea sunt steaguri opționale care modifică comportamentul comenzii SCP. Puteți utiliza diverse opțiuni pentru a personaliza procesul de transfer. Iată câteva opțiuni comune:

-r: Copiază recursiv directoarele și conținutul acestora.
-p: Păstrați permisiunile, marcajele de timp și modurile fișierului original.
-P: Specifică numărul portului pentru conexiunea SSH.
-i: Specifică fișierul cheii private pentru autentificarea SSH.
-C: Folosiți compresia pentru a accelera transferul de date.
-l: Limitează lățimea de bandă utilizată pentru transfer (în Kbit/s).
-v: Modul Verbose – afișează mesaje de depanare în timpul transferului.
-o: Transmite o opțiune clientului SSH. Poate fi folosit pentru a dezactiva verificarea strictă a cheii gazdei.

Sursă

Sursa specifică fișierul sau directorul pe care doriți să îl copiați. Poate fi o cale locală sau o cale la distanță – în funcție de context.

Destinaţie

Destinația specifică unde doriți să copiați sursa. Ca și sursa, poate fi și o cale locală sau o cale la distanță.

Exemple de comenzi

#1. Copiați un fișier de pe serverul local pe serverul de la distanță

scp /path/to/local/file.txt user@remotehost:/path/to/destination/

/path/to/local/file.txt: Acesta este fișierul sursă pe care doriți să-l copiați de pe computerul local.

user@remotehost: Înlocuiți utilizatorul cu numele utilizatorului de la distanță și gazda la distanță cu numele de gazdă sau adresa IP a serverului la distanță.

/path/to/destination/: Aceasta este calea de destinație pe serverul de la distanță unde va fi copiat fișierul.

Exemplu

În cazul meu, am ales un server la distanță pentru transferul fișierului.

Nume de utilizator gazdă la distanță – abhishekvarma

Adresă gazdă de la distanță – 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

În timpul conectării la o mașină de la distanță, acesta solicită parola. Aici am selectat un fișier zip de copiat.

Ieșire

Și rezultatul va arăta astfel dacă nu există nicio eroare în conectarea la un server la distanță.

sample.zip                                    100%   20KB  717.9KB/s   00:00

#2. Copiați un fișier de la telecomandă pe mașina locală

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

La fel ca mai sus, înlocuiți adresa utilizatorului și a gazdei de la distanță.

Exemplu

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Ieșire

Aceasta este doar exemplul de ieșire în cazul meu. Timpul variază în funcție de viteza conexiunii.

sample.zip                                    100%   20KB  51.2KB/s   00:00

#3. Copiați un director recursiv

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Aici indicatorul „-r” îi spune SCP să copieze directoare recursiv (inclusiv subdirectoare și conținutul acestora).

Exemplu

scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop

Aici, am menționat întregul director pentru a copia fișierele.

Ieșire

sample.zip                                         100%   20KB    1.0MB/s   00:00
Screenshot from 2023-08-13 21-45-23.png            100%   27KB    1.5MB/s   00:00
.swp                                               100%   12KB  894.2KB/s   00:00
.help.swp                                          100%   12KB  780.4KB/s   00:00

#4. Copiați fișierele care se potrivesc cu un model

scp /path/to/local/*.txt user@remotehost:/path/to/destination/

*.txt – Acesta este un model de wildcard care se potrivește cu toate fișierele cu extensia .txt din directorul local specificat. Căile sursă și destinație sunt aceleași ca înainte.

  8 acțiuni pe care ar trebui să le luați dacă credeți că Mac-ul dvs. este piratat

Exemplu

scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop

Ieșire

Aici, am încercat cu o extensie .png.

Screenshot from 2023-08-13 21-45-23.png            100%   27KB    1.4MB/s   00:00
Screenshot from 2023-08-13 21-55-28.png            100%   24KB    1.7MB/s   00:00
Screenshot from 2023-08-13 22-04-03.png            100%   38KB    2.1MB/s   00:00

#5. Păstrați atributele fișierului

scp -p /path/to/local/file.txt user@remotehost:/path/to/destination/

Aici indicatorul „-p” păstrează timpii de modificare, timpii de acces și modurile fișierului sursă la copiere.

Exemplu

scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ieșire

sample.zip                                         100%   20KB    420.0KB/s   00:00

#6. Specificați un alt port SSH

scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/

Indicatorul „-P” specifică un port SSH diferit (22 în acest caz) pentru conexiunea SCP. Puteți folosi orice port doriți.

Exemplu

scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ieșire

sample.zip                                         100%   20KB    1.2MB/s   00:00

#7. Copiați cu compresie

scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/

Acest flag „-C” permite compresia în timpul transferului, reducând posibil dimensiunea datelor transferate. Adresa sursă și destinație sunt aceleași cu cele explicate anterior.

Exemplu

scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ieșire

sample.zip                                         100%   20KB    985.8KB/s   00:00

#8. Ieșire detaliată pentru depanare

scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/

Această opțiune „-v” activează ieșirea verbosă, care oferă informații mai detaliate în timpul procesului de transfer.

Exemplu

scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ieșire

Ieșirea eșantionului va arăta astfel.

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

#9. Copiați de la distanță în local cu ieșire detaliată

scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Aceleași explicații ca exemplul anterior, cu rolurile locațiilor locale și la distanță inversate.

Exemplu

scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Ieșire

Ieșirea va arăta astfel.

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

#10. Copiați folosind o cheie SSH diferită

scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/

Acest flag „-i /path/to/private_key.pem” specifică o cheie privată SSH diferită pentru autentificare.

Exemplu

scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ieșire

  Cum să descoperiți dimensiunile paginilor internaționale pentru imprimare

Dacă aveți o cheie privată, atunci o puteți utiliza sau o puteți utiliza pe cea implicită.

sample.zip                                         100%   20KB    1.1MB/s   00:00

#11. Copiați mai multe fișiere pe serverul de la distanță

scp file1.txt file2.txt user@remotehost:/path/to/destination/

Această comandă copiază fișierul 1.txt și fișierul 2.txt din directorul local în destinația specificată pe serverul de la distanță.

Exemplu

scp  /home/vboxuser/Desktop/image.png  /home/vboxuser/Desktop/sample.zip  [email protected]:/Users/abhishekvarma/Desktop 

Ieșire

image.png                                          100%   39KB    1.4MB/s   00:00
sample.zip                                         100%   20KB    1.5MB/s   00:00

#12. Copiați un fișier de la distanță cu un nume diferit

scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt

Această comandă copiează fișierul.txt de pe serverul de la distanță în directorul local, redenumindu-l ca numefișier nou.txt în timpul procesului.

Exemplu

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Ieșire

Extensiile de fișiere vechi și noi ar trebui să fie aceleași în timpul executării acestei comenzi.

sample.zip                                         100%   20KB    28.7KB/s   00:00

#13. Copierea cu o limită de lățime de bandă specifică

scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/

Acest indicator „-l” specifică o limită de lățime de bandă în Kbps (1000 Kbps în acest caz) pentru transfer.

Exemplu

scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Ieșire

sample.zip                                         100%   20KB    31.3KB/s   00:00
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/

Indicatorul „-p” păstrează atributele fișierului, iar indicatorul -r copiază recursiv directoare. Această comandă păstrează, de asemenea, legăturile simbolice în timpul copierii.

Exemplu

scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Ieșire

image.png                                        100%   39KB    1.8MB/s   00:00

#15. Copierea profundă a fișierelor cu compresie

scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/

Această comandă combină atât ieșirea verbosă (-v) cât și compresia (-C) în timpul transferului fișierului.

Exemplu

scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Ieșire

Ieșirea va arăta astfel.

scp: debug1: fd 3 clearing O_NONBLOCK
Sending file modes: C0664 40050 image.png
Sink: C0664 40050 image.png
image.png
d 6 clearing O_NONBLOCK
scp: debug1: fd • clearing O_NONBLOCK
image.png
debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1
Transferred: sent 40220, received 2576 bytes, in 0.1 seconds
Bytes per second: sent 352570.0, received 22581.3
root@ubuntu: ~
debug1: Exit status 0
debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96 

#16. Copiere între două servere la distanță

Dacă doriți să transferați fișiere de la un server la distanță la altul, atunci puteți utiliza această comandă.

scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/

Această comandă transferă direct fișierul.txt de la remotehost1 la remotehost2.

Exemplu

scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop

Ieșire

file.txt                100%  512KB 512.0KB/s   00:00

Dacă există erori sau probleme în timpul transferului – rezultatul poate afișa mesaje de eroare care oferă informații despre ce a mers prost.

ssh: connect to host source.example.com port 22: Connection refused
lost connection

În acest caz, mesajul de eroare sugerează că conexiunea SSH la serverul sursă a fost refuzată. Poate fi din diverse motive, cum ar fi numele de gazdă incorecte, adresa IP, portul sau problemele cu configurația SSH.

Întrebări frecvente despre SCP

Iată câteva întrebări frecvente legate de protocolul SCP, împreună cu răspunsurile acestora.

Cum diferă SCP de FTP sau SFTP?

FTP înseamnă File Transfer Protocol.

SFTP înseamnă File Transfer Protocol. Acestea sunt ambele folosite pentru transferuri de fișiere.

SCP operează prin SSH și oferă atât criptare, cât și autentificare într-un singur protocol, ceea ce îl face mai sigur și mai eficient.

Când ar trebui să folosesc SCP?

SCP este cel mai potrivit pentru scenariile în care sunt necesare transferuri de fișiere sigure și fiabile, cum ar fi copii de rezervă la distanță, implementarea software-ului, distribuirea fișierelor de configurare și colaborarea între membrii echipei.

Este SCP compatibil cu adresele IPv6?

Da, SCP acceptă atât adresele IPv4, cât și IPv6, ceea ce vă permite să transferați fișiere prin rețele care utilizează orice schemă de adresare.

Concluzie✍️

Sper că ați găsit acest articol util pentru a afla despre SCP și cum funcționează.

Ați putea fi, de asemenea, interesat să aflați despre comenzile Linux pentru administratorul de sistem