Sådan bruges SCP Command i Linux

En nem vejledning, der hjælper dig med at overføre filer til et fjernsystem fra dit Linux-system ved hjælp af scp-kommandoen.

SCP står for 'Secure Copy'. scp er et kommandolinjeværktøj, der tilbydes af Linux, som tillader overførsel af filer og mapper fra en maskine til en anden over et usikkert netværk.

Hvis du ønsker at kopiere filer fra et system til et andet, så scp kan være en meget god mulighed for at foretage en sikker overførsel af filerne og mapperne. Når de to kommunikerende maskiner er forbundet over det samme netværk, så vha scp bliver muligt.

Du kan i høj grad stole på scp kommando for fortrolighed og integritet, da den fil, der overføres, og adgangskoden, der bruges til overførslen, begge er krypteret. Ingen følsomme oplysninger vil blive afsløret, selvom nogen forsøger at snoge over trafikken, mens denne overførsel er i gang.

I denne tutorial vil vi se forskellige eksempler på scp kommando. Vi vil også se på nogle af de ofte brugte muligheder med scp kommando.

Kom godt i gang med scp-kommandoen

Bruger scp kommando du kan overføre filer/mapper:

  • Fra din lokale maskine til en fjernmaskine.
  • Mellem to fjerntliggende maskiner.
  • Fra en fjernmaskine til din lokale maskine.

Generel syntaks:

scp [Option] [kildefilnavn] [bruger@destination_host]:destinationsmappe

Lad os forstå de grundlæggende egenskaber ved denne kommando én efter én.

  • [kildefilnavn] Dette er kildefilen, du vil kopiere.
  • [bruger@destination_Vært] Dette er brugernavnet på det fjernsystem, hvor du vil kopiere filen. IP-adressen på den eksterne maskine bruges også i denne attribut efter '@’ symbol.
  • [destinationsmappe] Dette er den mappe, hvor du vil gemme den kopierede fil.

Bemærk: Tyktarmen (:)-symbolet bruges i syntaksen, da det skelner mellem de lokale og fjerne lokationer. Vi bruger kolon (:) med fjernsystemet for at angive den mappe, som filerne skal kopieres til. Hvis vi ikke angiver målmappen, kopieres filerne til hjemmemappen for fjernsystembrugeren.

Valgmuligheder brugt med scp

Nogle af de mest populære muligheder, der bruges med scp kommandoen er anført nedenfor.

MulighedBeskrivelse
-Ctillade komprimering af filen, der skal overføres
-vgive det verbose output
-rkopiere filer og mapper rekursivt
-sbevare tilladelser, tilstande og adgangstider for filer
-Pændre standardporten, der bruges af scp kommando

Vi vil se eksemplerne på disse muligheder længere i vejledningen.

Kopiering af fil fra lokalt til et eksternt system

scp giver dig mulighed for at overføre filer fra dit lokale system til et fjernsystem ved hjælp af følgende syntaks. Dette giver dig mulighed for at overføre eller uploade dine filer til en eksternt placeret server.

Generel syntaks:

scp [filnavn] remote_user@host:[destination_folder]

Eksempel:

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

I dette eksempel kopierer vi en fil 'apache-tomcat-9.0.8.tar.gz' fra det lokale system til fjernsystemet, hvis IP-adresse er '143.110.178.221'.

På fjernsystemet vil filen nu blive kopieret til mappen med navnet 'gaurav'.

Produktion:

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

Lad os kontrollere outputtet på fjernsystemet for filen.

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

Filen er således kopieret til fjernsystemet ved hjælp af scp kommando.

Kopiering af flere filer til et fjernsystem

I det foregående eksempel lærte vi at overføre en fil til fjernsystemet ved hjælp af scp kommando. Vi vil nu se metoden til at overføre flere filer fra dit lokale system til et fjernsystem ved hjælp af denne kommando.

Generel syntaks:

scp [fil 1] [fil 2] [fil n] remote_brugernavn@remote_host: [specifik mappe]

Lad os forstå denne enkle proces med et eksempel.

Eksempel:

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

Her er flere filer nævnt i kommandoen, der skal kopieres på fjernsystemet.

Produktion:

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

På fjernsystemet:

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l i alt 9800 -rw-r--r-- 1 root root 0 5. okt 08:58 abc.txt -rw-r-- r-- 1 rodrod 9818695 5. okt 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 rodrod 204057 5. okt 08:58 ath.html -rw-r-- r-- 1 rodrod 4360 5. okt 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Alle tre filer er nu kopieret på fjernsystemet.

Kopiering af en mappe til fjernsystemet

Du kan bruge scp kommando til at kopiere en mappe fra dit lokale system til fjernsystemet. Processen ligner processen med at kopiere en fil. For også at kopiere indholdet af mappen, kan du bruge -r mulighed med scp kommando.

Det -r option bruges til at kopiere en mappe rekursivt. Det betyder, at alle undermappen og filerne i mappen også vil blive kopieret.

Generel syntaks:

scp -r [mappesti] remote_brugernavn@remote_host:[target_directory]

Eksempel:

scp -r PycharmProjects [email protected]:gaurav

Produktion:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] adgangskode: __main__.py 100% 623 7,8KB/s 00:00 2init% 4K/400.B. :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 13801% 218KB/s 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:100 00:00 0%.py KB/s 00:00 gaurav@ubuntu:~$ 

Bruger -r mulighed med scp kommando kopierer alle undermapper og filer i mappen fra den lokale maskine til fjernsystemet.

Viser detaljerede oplysninger om scp-processen

Du kan bruge -v (små bogstaver v) mulighed for at vise oplysningerne om de filer, der kopieres på enten en fjernbetjening eller dit lokale system. Denne type output kaldes også det verbose output.

Når denne mulighed bruges, vises den komplette fejlfindingsinformation om filen på skærmen.

Generel syntaks:

scp -v [filnavn] brugernavn@bruger_vært:

Eksempel:

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

Produktion:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Udfører: program /usr/bin/ssh vært 159.89.170.11, brugerrod, kommando scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7. december 2017 debug1: Læser konfigurationsdata /home/gaurav/.ssh/config debug1: Læser konfigurationsdata /etc/ssh/ssh_config debug1: /etsh_consfigsh/etc_config linje 19: Anvendelse af muligheder for * debug1: Opretter forbindelse til 159.89.170.11 [159.89.170.11] port 22. debug1: Forbindelse etableret. debug1: key_load_public: Ingen sådan fil eller mappe debug1: identitetsfil /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_reput:_client_reput kanal 0 rtype exit-status svar 0 debug1: kanal 0: gratis: klient-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Overført: sendt 9826736, modtaget 4016 bytes.2 sekunder sendt Bytes per sekund: 97 sekunder pr. 101133.9, modtaget 41.3 debug1: Exit status 0 gaurav@ubuntu:~$ 

Her, i outputtet, kan du se, at filens debug-information bliver vist på din terminal, når scp kommandoen bruges sammen med -v mulighed.

Overførsel af filer mellem to fjernværter

Linux giver dig mulighed for at oprette forbindelse til flere fjernværter. Du kan overføre filer og mapper mellem to fjernbetjeningsværter ved hjælp af scp kommando.

Generel syntaks:

scp remote_user_1@host_1:/[filnavn] remote_user_2@host_2:[mappe_to_save]

Syntaksen kan virke lidt bredere, men er ret enkel. Her giver den første del af kommandoen input om fjernbrugeren, hvorfra filen skal kopieres. kolon (:) og / bruges til at angive filnavnet eller biblioteksnavnet, som skal overføres mellem de to fjernmaskiner.

Den anden del giver information om det fjernsystem, hvor filen skal kopieres.

Eksempel:

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

Her vil vi kopiere en mappe ved navn 'gaurav' rekursivt fra det lokale system til et fjernsystem. Filen vil blive kopieret til en mappe 'team' på fjernsystemet.

Produktion:

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

Her brugte vi scp kommando på det lokale system for at overføre en mappe med navnet 'gaurav' fra en fjernserver til en anden.

Overfør filer fra fjernsystemet til dit lokale system

Du kan nemt overføre filerne eller mapperne fra fjernsystemet til dit lokale system ved hjælp af scp kommando. Med enklere ord kan du downloade flere filer eller mapper fra fjernserveren til dit lokale system ved hjælp af scp kommando.

Generel syntaks:

scp remote_brugernavn@bruger_vært:/filer/fil.txt /[mappe_af_lokalt_system]

Produktion:

gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected] adgangskode: how.txt 100% 11 0,1KB/s 00:00 gaurav@ubuntu:~$

Her har jeg downloadet (kopieret) filen fra fjernserveren til min hjemmemappe. Derfor har jeg brugt prik (.) for at angive i kommandoen for at kopiere filen til min hjemmemappe.

Eksempel output:

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

Her er filen nu kopieret til min hjemmemappe fra fjernserveren.

På samme måde kan du downloade flere filer eller mapper fra fjernserveren ved hjælp af scp kommando med de relevante muligheder.

Komprimering af filer for at foretage hurtigere overførsler

Nogle gange kan overførsel af store filer være tidskrævende. Dette problem kan løses, mens du bruger scp kommando med -C (store bogstaver C) mulighed.

Bruger -C option, komprimerer de større filer, hvilket letter en hurtigere overførsel og dermed sparer tid.

En interessant kendsgerning ved denne mulighed er, at filen kopieres med dens originale størrelse på destinationssystemet, men under overførselsprocessen komprimeres størrelsen for at muliggøre en hurtigere overførsel. Komprimeringen sker således kun på netværket.

Generel syntaks:

scp -C [filnavn] brugernavn@bruger_vært:[målmappe]

Lad os se et sammenlignende eksempel for at forstå forskellen.

Overførsel uden -C mulighed:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Udfører: program /usr/bin/ssh host 68.183.82.183, brugerrod, kommando scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7. december 2017 debug1: Læser konfigurationsdata /home/trinity/.ssh/config debug1: Læser konfigurationsdata /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linje 19: Anvendelse af indstillinger for debug1 : Opretter forbindelse til 68.183.82.183 [68.183.82.183] port 22. debug1: Forbindelse etableret. debug1: client_input_channel_req: kanal 0 rtype exit-status svar 0 debug1: kanal 0: gratis: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Overført: sendt 751604,7504 sekunder. sekund: sendt 100693.7, modtaget 53.7 debug1: Exit status 0 gaurav@ubuntu:~$ 

Fra ovenstående output kan vi se, at den nødvendige tid til overførslen er 74,6 sekunder. Vi vil prøve at overføre den samme fil ved hjælp af -C-indstillingen og observere forskellen.

Overfør med -C mulighed:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Udfører: program /usr/bin/ssh host 68.183.82.183, brugerrod, kommando scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7. december 2017 debug1: Læser konfigurationsdata /home/trinity/.ssh/config debug1: Læser konfigurationsdata /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linje 19: Anvendelse af indstillinger for debug1 : Opretter forbindelse til 68.183.82.183 [68.183.82.183] port 22. debug1: Forbindelse etableret. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Sende filtilstande: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB: E664KB:1004KB:1004KB:1004KB:1004KB:1004KB:1004KB: C664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Vask: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.zip 100% 3666KB 218,5KB/s 00:16 Sink: E debug1: client_input_channel_req: kanal 0 rtype exit-status svar 0 debug1: kanal 0: gratis: klient-session, nchannels 1 debug1: fd_1 Overført: sendt 7518864, modtaget 3828 bytes, på 51,0 sekunder Bytes pr. sekund: sendt 100245,4, modtaget 51,0 debug1: Exit status 0 debug1: komprimere udgående: rå data 7511925, komprimeret 7513110. 999, faktor 0,68 gaurav@ubuntu:~$

Her kan vi nemt observere, at vha -C mulighed med scp kommandoen har givet os mulighed for at komprimere filen over netværket, hvilket har vist sig at være en tidsbesparende mulighed.

Brug af en anden ssh-port til filoverførsel

Mens du bruger scp kommandoen standardporten, der er implementeret, er port 22. Brugeren har friheden til at tilpasse dette valg af port. Du kan bruge -P (option med stort P) med scp kommando for at bruge den port efter eget valg.

Generel syntaks:

cp -P [nyt_portnummer] [filnavn/katalognavn] fjernbruger@vært:[destinationsmappe]

Eksempel:

scp -P 4248 dlink [email protected]:team

Ved at bruge ovenstående kommando vil filen blive overført til fjernserveren. Men denne gang bliver den brugte havn port 4248 i stedet for standard port 22.

Konklusion

Efter at have gennemgået denne tutorial, har vi lært om den dynamiske karakter af scp kommando, der bruges til at overføre eller kopiere filer fra et system til et andet. Denne mulighed kan også bruges til at downloade filer eller mapper fra fjernserveren. Det kan vi altså konkludere scp kommandoen viser sig at være meget nyttig til filoverførsler, når du skal håndtere mere end ét system såvel som fjernservere samtidigt.