En enkel opplæring som hjelper deg med å overføre filer til et eksternt system fra Linux-systemet ditt ved å bruke scp-kommandoen.
SCP står for "Secure Copy". scp
er et kommandolinjeverktøy som tilbys av Linux som tillater overføring av filer og kataloger fra en maskin til en annen over et usikkert nettverk.
Hvis du ønsker å kopiere filer fra ett system til et annet, så scp
kan være et veldig godt alternativ for å gjøre en sikker overføring av filene og katalogene. Når de to kommuniserende maskinene er koblet over samme nettverk, bruker du scp
blir mulig.
Du kan stole sterkt på scp
kommando for konfidensialitet og integritet ettersom filen som overføres og passordet som brukes for overføringen er kryptert. Ingen sensitiv informasjon vil bli avslørt selv om noen prøver å snoke over trafikken mens denne overføringen pågår.
I denne opplæringen vil vi se forskjellige eksempler på scp
kommando. Vi vil også se på noen av de ofte brukte alternativene med scp
kommando.
Komme i gang med scp-kommandoen
Bruker scp
kommando du kan overføre filer/kataloger:
- Fra din lokale maskin til en ekstern maskin.
- Mellom to eksterne maskiner.
- Fra en ekstern maskin til din lokale maskin.
Generell syntaks:
scp [Alternativ] [kildefilnavn] [bruker@destinasjon_vert]:destinasjonsmappe
La oss forstå de grunnleggende egenskapene til denne kommandoen en etter en.
- [kildefilnavn] Dette er kildefilen du vil kopiere.
- [bruker@destinasjon_vert] Dette er brukernavnet til det eksterne systemet du vil kopiere filen til. IP-adressen til den eksterne maskinen brukes også i dette attributtet etter '
@
'symbol. - [målmappen] Dette er katalogen der du vil lagre den kopierte filen.
Merk: Tykktarmen (:
)-symbolet brukes i syntaksen da det skiller mellom lokale og eksterne lokasjoner. Vi bruker kolon (:
) med det eksterne systemet for å spesifisere katalogen filene skal kopieres til. I tilfelle vi ikke spesifiserer målkatalogen, vil filene bli kopiert til hjemmekatalogen til den eksterne systembrukeren.
Alternativer brukt med scp
Noen av de mest populære alternativene som brukes med scp
kommandoen er oppført nedenfor.
Alternativ | Beskrivelse |
-C | tillate komprimering av filen som skal overføres |
-v | gi den verbose utgangen |
-r | kopier filer og kataloger rekursivt |
-s | bevare tillatelser, moduser og tilgangstider for filer |
-P | endre standardporten som brukes av scp kommando |
Vi vil se eksemplene på disse alternativene, videre i opplæringen.
Kopierer fil fra lokalt til et eksternt system
scp
lar deg overføre filer fra ditt lokale system til et eksternt system ved å bruke følgende syntaks. Dette lar deg overføre eller laste opp filene dine til en eksternt plassert server.
Generell syntaks:
scp [filnavn] ekstern_bruker@vert:[destinasjonsmappe]
Eksempel:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
I dette eksemplet kopierer vi en fil 'apache-tomcat-9.0.8.tar.gz' fra det lokale systemet til det eksterne systemet hvis IP-adresse er '143.110.178.221'.
På det eksterne systemet vil filen nå bli kopiert til katalogen kalt 'gaurav'.
Produksjon:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] passord: apache-tomcat-9.0.8.tar.gz 100KB 958.89KB 958.89KB /s 02:00 gaurav@ubuntu:~$
La oss sjekke utdataene på det eksterne systemet 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#
Dermed blir filen kopiert til det eksterne systemet ved hjelp av scp
kommando.
Kopiering av flere filer til et eksternt system
I det forrige eksempelet lærte vi å overføre en fil til det eksterne systemet ved å bruke scp
kommando. Vi vil nå se metoden for å overføre flere filer fra ditt lokale system til et eksternt system ved å bruke denne kommandoen.
Generell syntaks:
scp [fil 1] [fil 2] [fil n] remote_username@remote_host: [spesifikk katalog]
La oss forstå denne enkle prosessen med et eksempel.
Eksempel:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Her er flere filer nevnt i kommandoen som skal kopieres på det eksterne systemet.
Produksjon:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] passord: ath.html 100KB% 94907KB:14907KB: 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å det eksterne systemet:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l totalt 9800 -rw-r--r-- 1 rotrot 0 5. okt 08:58 abc.txt -rw-r-- r-- 1 rotrot 9818695 5. okt 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 rotrot 204057 5. okt 08:58 ath.html -rw-r-- r-- 1 rotrot 4360 5. okt 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Alle tre filene er nå kopiert til det eksterne systemet.
Kopiere en katalog til det eksterne systemet
Du kan bruke scp
kommando for å kopiere en katalog fra ditt lokale system til det eksterne systemet. Prosessen ligner på å kopiere en fil. For å kopiere innholdet i katalogen også, kan du bruke -r
alternativet med scp
kommando.
De -r
alternativet brukes til å kopiere en katalog rekursivt. Det betyr at alle undermappene og filene i katalogen også vil bli kopiert.
Generell syntaks:
scp -r [katalogbane] ekstern_brukernavn@ekstern_vert:[målkatalog]
Eksempel:
scp -r PycharmProjects [email protected]:gaurav
Produksjon:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] passord: __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% 218K 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 00:00 nedlasting 04:00 00:00 KB/s 00:00 gaurav@ubuntu:~$
Bruker -r
alternativet med scp
kommandoen kopierer alle undermappene og filene i katalogen fra den lokale maskinen til det eksterne systemet.
Viser detaljert informasjon om scp-prosessen
Du kan bruke -v
(små bokstaver v
) for å vise informasjonen om filene som kopieres enten på en ekstern eller ditt lokale system. Denne typen utgang kalles også den verbose utgangen.
Når dette alternativet brukes, vises den fullstendige feilsøkingsinformasjonen om filen på skjermen.
Generell syntaks:
scp -v [filnavn] brukernavn@bruker_vert:
Eksempel:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Produksjon:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Utfører: program /usr/bin/ssh vert 159.89.170.11, brukerrot, kommando scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7. desember 2017 debug1: Leser konfigurasjonsdata /home/gaurav/.ssh/config debug1: Leser konfigurasjonsdata /etc/ssh/ssh_config debug1: /etsh_consfigsh/etc_config linje 19: Bruk av alternativer for * debug1: Kobler til 159.89.170.11 [159.89.170.11] port 22. debug1: Tilkobling etablert. debug1: key_load_public: Ingen slik fil eller katalog 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:_input 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, mottatt 4016 bytes.2 sekunder sendt Bytes per sekund: 97 sekunder 101133.9, mottatt 41.3 debug1: Utgangsstatus 0 gaurav@ubuntu:~$
Her, i utdataene, kan du se at feilsøkingsinformasjonen til filen vises på terminalen din når scp
kommandoen brukes med -v
alternativ.
Overføre filer mellom to eksterne verter
Linux lar deg koble til flere eksterne verter. Du kan overføre filer og kataloger mellom to fjernkontrollverter ved å bruke scp
kommando.
Generell syntaks:
scp remote_user_1@host_1:/[filnavn] remote_user_2@host_2:[mappe_å_lagre]
Syntaksen kan virke litt bredere, men er ganske enkel. Her gir den første delen av kommandoen input om den eksterne brukeren hvorfra filen skal kopieres. kolon (:) og /
brukes til å spesifisere filnavnet eller katalognavnet som skal overføres mellom de to eksterne maskinene.
Den andre delen gir informasjon om mål-fjernsystemet hvor filen skal kopieres.
Eksempel:
scp -r [email protected]:gaurav [email protected]:/team
Her vil vi kopiere en katalog kalt 'gaurav' rekursivt fra det lokale systemet til et eksternt system. Filen vil bli kopiert til en mappe "team" på det eksterne systemet.
Produksjon:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] sitt passord: 1.py 100% 134 261.3KB/s 00.py00 variables. 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 brukte vi scp
kommando på det lokale systemet for å overføre en katalog kalt 'gaurav' fra en ekstern server til en annen.
Overfør filer fra det eksterne systemet til ditt lokale system
Du kan enkelt overføre filene eller katalogene fra det eksterne systemet til ditt lokale system ved å bruke scp
kommando. Med enklere ord kan du laste ned flere filer eller kataloger fra den eksterne serveren til ditt lokale system ved å bruke scp
kommando.
Generell syntaks:
scp remote_username@user_host:/files/file.txt /[mappe_av_lokalt_system]
Produksjon:
gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected] sitt passord: how.txt 100% 11 0,1KB/s 00:00 gaurav@ubuntu:~$
Her har jeg lastet ned (kopiert) filen fra den eksterne serveren til hjemmekatalogen min. Derfor har jeg brukt prikk (.
) for å spesifisere i kommandoen for å kopiere filen til hjemmekatalogen min.
Eksempelutgang:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11. oktober 6 09:49 how.txt gaurav@ubuntu:~$
Her er filen nå kopiert til hjemmekatalogen min fra den eksterne serveren.
På samme måte kan du laste ned flere filer eller kataloger fra den eksterne serveren ved å bruke scp
kommando med de riktige alternativene.
Komprimering av filer for raskere overføringer
Noen ganger kan overføring av store filer være tidkrevende. Dette problemet kan løses mens du bruker scp
kommando med -C
(stor bokstav C
) alternativet.
Bruker -C
alternativet, komprimerer de større filene som forenkler en raskere overføring og dermed sparer tid.
Et interessant faktum om dette alternativet er at filen kopieres med sin opprinnelige størrelse på destinasjonssystemet, men under overføringsprosessen blir størrelsen komprimert for å muliggjøre en raskere overføring. Dermed gjøres komprimeringen kun på nettverket.
Generell syntaks:
scp -C [filnavn] brukernavn@bruker_vert:[målmappe]
La oss se et sammenlignende eksempel for å forstå forskjellen.
Overføring uten -C-alternativ:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Utfører: program /usr/bin/ssh host 68.183.82.183, brukerrot, kommando scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7. desember 2017 debug1: Leser konfigurasjonsdata /home/trinity/.ssh/config debug1: Leser konfigurasjonsdata /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linje 19: Debug1-alternativer for * : Kobler til 68.183.82.183 [68.183.82.183] port 22. debug1: Tilkobling opprettet. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Overført: sendt 7516,7504,7504 sekunder. per sekund: sendt 100693.7, mottatt 53.7 debug1: Utgangsstatus 0 gaurav@ubuntu:~$
Fra ovenstående utgang kan vi se at tiden som kreves for overføringen er 74,6 sekunder. Vi vil prøve å overføre den samme filen ved å bruke -C-alternativet og observere forskjellen.
Overfør med -C-alternativet:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Utfører: program /usr/bin/ssh vert 68.183.82.183, brukerrot, kommando scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7. desember 2017 debug1: Leser konfigurasjonsdata /home/trinity/.ssh/config debug1: Leser konfigurasjonsdata /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config linje 19: Debug1-alternativer for * : Kobler til 68.183.82.183 [68.183.82.183] port 22. debug1: Tilkobling opprettet. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Sende filmoduser: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB: E804KB 1004KB: E804KB 1004KB: C604KB 1004KB: C664 1877552 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: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd_1_0 clearing ONBLOCKNO Overført: sendt 7518864, mottatt 3828 byte, på 51,0 sekunder Byte per sekund: sendt 100245,4, mottatt 51,0 debug1: Avslutt status 0 debug1: komprimer utgående: rådata 7511925, komprimert 7513110, komprimert 7513110: 30 999, faktor 0,68 gaurav@ubuntu:~$
Her kan vi enkelt observere at ved å bruke -C
alternativet med scp
kommandoen har tillatt oss å komprimere filen over nettverket og har dermed vist seg å være et tidsbesparende alternativ.
Bruke en annen ssh-port for filoverføring
Mens du bruker scp
kommandoen standardporten som er distribuert er port 22
. Brukeren har friheten til å tilpasse dette valget av port. Du kan bruke -P
(opsjon med stor bokstav P) med scp
kommando for å bruke porten du ønsker.
Generell syntaks:
cp -P [nytt_portnummer] [filnavn/katalognavn] ekstern_bruker@vert:[destinasjonsmappe]
Eksempel:
scp -P 4248 dlink [email protected]:team
Ved å bruke kommandoen ovenfor, vil filen bli overført til den eksterne serveren. Men denne gangen blir porten som brukes port 4248
i stedet for standard port 22
.
Konklusjon
Etter å ha gått gjennom denne opplæringen, har vi lært om den dynamiske naturen til scp
kommando som brukes til å overføre eller kopiere filer fra ett system til et annet. Dette alternativet kan også brukes til å laste ned filer eller kataloger fra den eksterne serveren. Dermed kan vi konkludere med det scp
kommando viser seg å være svært nyttig for filoverføringer når du må håndtere mer enn ett system så vel som eksterne servere samtidig.