En enkel handledning som hjälper dig att överföra filer till ett fjärrsystem från ditt Linux-system med hjälp av scp-kommandot.
SCP står för "Secure Copy". scp
är ett kommandoradsverktyg som erbjuds av Linux som tillåter överföring av filer och kataloger från en maskin till en annan över ett osäkert nätverk.
Om du vill kopiera filer från ett system till ett annat, då scp
kan vara ett mycket bra alternativ för att göra en säker överföring av filerna och katalogerna. När de två kommunicerande maskinerna är anslutna över samma nätverk, använder du scp
blir möjligt.
Du kan starkt lita på scp
kommando för konfidentialitet och integritet eftersom filen som överförs och lösenordet som används för överföringen är båda krypterade. Ingen känslig information kommer att avslöjas även om någon försöker snoka över trafiken medan denna överföring pågår.
I den här handledningen kommer vi att se olika exempel på scp
kommando. Vi kommer också att titta på några av de ofta använda alternativen med scp
kommando.
Komma igång med scp-kommandot
Använda scp
kommando du kan överföra filer/kataloger:
- Från din lokala dator till en fjärrdator.
- Mellan två avlägsna maskiner.
- Från en fjärrdator till din lokala dator.
Allmän syntax:
scp [Alternativ] [källa_filnamn] [användare@destinationsvärd]:destinationsmapp
Låt oss förstå de grundläggande egenskaperna för detta kommando en efter en.
- [källa_filnamn] Det här är källfilen som du vill kopiera.
- [användare@destination_värd] Detta är användarnamnet för fjärrsystemet dit du vill kopiera filen. IP-adressen för fjärrmaskinen används också i det här attributet efter
@
’ symbol. - [målmapp] Det här är katalogen där du vill spara den kopierade filen.
Notera: Kolon (:
)-symbolen används i syntaxen eftersom den skiljer mellan de lokala och avlägsna platserna. Vi använder kolon (:
) med fjärrsystemet för att ange katalogen till vilken filerna ska kopieras. Om vi inte anger målkatalogen, kommer filerna att kopieras till hemkatalogen för fjärrsystemanvändaren.
Alternativ som används med scp
Några av de mest populära alternativen som används med scp
kommandon listas nedan.
Alternativ | Beskrivning |
-C | tillåta komprimering av filen som ska överföras |
-v | ge den utförliga utmatningen |
-r | kopiera filer och kataloger rekursivt |
-s | bevara behörigheter, lägen och åtkomsttider för filer |
-P | ändra standardporten som används av scp kommando |
Vi kommer att se exemplen på dessa alternativ längre fram i handledningen.
Kopiera fil från lokalt till ett fjärrsystem
scp
låter dig överföra filer från ditt lokala system till ett fjärrsystem med hjälp av följande syntax. Detta gör att du kan överföra eller ladda upp dina filer till en fjärrplacerad server.
Allmän syntax:
scp [filnamn] remote_user@host:[destination_folder]
Exempel:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
I det här exemplet kopierar vi filen 'apache-tomcat-9.0.8.tar.gz' från det lokala systemet till fjärrsystemet vars IP-adress är '143.110.178.221'.
På fjärrsystemet kommer filen nu att kopieras till katalogen som heter 'gaurav'.
Produktion:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] lösenord: apache-tomcat-9.0.8.tar.gz 100KB 958.89KB 958.89KB /s 02:00 gaurav@ubuntu:~$
Låt oss kontrollera utdata på fjärrsystemet för 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#
Således kopieras filen framgångsrikt till fjärrsystemet med hjälp av scp
kommando.
Kopiera flera filer till ett fjärrsystem
I det föregående exemplet lärde vi oss att överföra en fil till fjärrsystemet med hjälp av scp
kommando. Vi kommer nu att se metoden för att överföra flera filer från ditt lokala system till ett fjärrsystem med detta kommando.
Allmän syntax:
scp [fil 1] [fil 2] [fil n] remote_username@remote_host:[specifik katalog]
Låt oss förstå denna enkla process med ett exempel.
Exempel:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Här nämns flera filer i kommandot som ska kopieras på fjärrsystemet.
Produktion:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] lösenord: ath.html 100KB% 94907KB: 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å fjärrsystemet:
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#
Alla tre filerna är nu kopierade till fjärrsystemet.
Kopiera en katalog till fjärrsystemet
Du kan använda scp
kommando för att kopiera en katalog från ditt lokala system till fjärrsystemet. Processen liknar den för att kopiera en fil. För att kopiera innehållet i katalogen också kan du använda -r
alternativet med scp
kommando.
De -r
alternativet används för att kopiera en katalog rekursivt. Det betyder att alla undermappar och filer i katalogen också kommer att kopieras.
Allmän syntax:
scp -r [katalogsökväg] fjärranvändarnamn@fjärrvärd:[målkatalog]
Exempel:
scp -r PycharmProjects [email protected]:gaurav
Produktion:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] lösenord: __main__.py 100% 623 7,8KB/s 00:00 2init 4K/300 sek. :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:00 nedladdning 00:100 04:00 KB/s 00:00 gaurav@ubuntu:~$
Använda -r
alternativet med scp
kommandot kopierar alla undermappar och filer i katalogen från den lokala maskinen till fjärrsystemet.
Visar detaljerad information om scp-processen
Du kan använda -v
(små bokstäver v
) för att visa information om filerna som kopieras antingen på en fjärrkontroll eller på ditt lokala system. Denna typ av utdata kallas också för den verbose output.
När detta alternativ används visas den fullständiga felsökningsinformationen om filen på skärmen.
Allmän syntax:
scp -v [filnamn] användarnamn@användarvärd:
Exempel:
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 Kör: program /usr/bin/ssh värd 159.89.170.11, användarrot, kommando scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 dec 2017 debug1: Läser konfigurationsdata /home/gaurav/.ssh/config debug1: Läser konfigurationsdata /etc/ssh/ssh_config debug1: /etsh_configsh/etc_config rad 19: Tillämpa alternativ för * debug1: Ansluter till 159.89.170.11 [159.89.170.11] port 22. debug1: Anslutning upprättad. debug1: key_load_public: Ingen sådan fil eller katalog debug1: identitetsfil /home/gaurav/.ssh/id_rsa typ -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_reput:_input kanal 0 rtyp exit-status svar 0 debug1: kanal 0: ledig: klientsession, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Överförd: skickade 9826736, tog emot 4016 byte.2 sekunder skickade Byte per sekund: 97 sekunder per sekund 101133.9, fick 41.3 debug1: Avsluta status 0 gaurav@ubuntu:~$
Här, i utgången, kan du se att felsökningsinformationen för filen visas på din terminal när scp
kommandot används med -v
alternativ.
Överföra filer mellan två fjärrvärdar
Linux låter dig ansluta till flera fjärrvärdar. Du kan överföra filer och kataloger mellan två fjärrkontrollvärdar med hjälp av scp
kommando.
Allmän syntax:
scp remote_user_1@host_1:/[filnamn] remote_user_2@host_2:[mapp_att_spara]
Syntaxen kan verka lite bredare men är ganska enkel. Här ger den första delen av kommandot input om fjärranvändaren varifrån filen ska kopieras. kolon (:) och /
används för att ange filnamnet eller katalognamnet som ska överföras mellan de två fjärrdatorerna.
Den andra delen ger information om målfjärrsystemet dit filen ska kopieras.
Exempel:
scp -r [email protected]:gaurav [email protected]:/team
Här kommer vi att kopiera en katalog som heter 'gaurav' rekursivt från det lokala systemet till ett fjärrsystem. Filen kommer att kopieras till en mapp "team" på fjärrsystemet.
Produktion:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] lösenord: 1.py 100% 134 261.3KB/s 00.py00 variabler. 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:~$
Här använde vi scp
kommando på det lokala systemet för att överföra en katalog med namnet 'gaurav' från en fjärrserver till en annan.
Överför filer från fjärrsystemet till ditt lokala system
Du kan enkelt överföra filerna eller katalogerna från fjärrsystemet till ditt lokala system med hjälp av scp
kommando. Med enklare ord kan du ladda ner flera filer eller kataloger från fjärrservern till ditt lokala system med hjälp av scp
kommando.
Allmän syntax:
scp remote_username@user_host:/filer/fil.txt /[mapp_av_lokalt_system]
Produktion:
gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected] lösenord: how.txt 100% 11 0,1KB/s 00:00 gaurav@ubuntu:~$
Här har jag laddat ner (kopierat) filen från fjärrservern till min hemkatalog. Därför har jag använt dot (.
) för att ange i kommandot för att kopiera filen till min hemkatalog.
Exempelutgång:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 okt 6 09:49 how.txt gaurav@ubuntu:~$
Här är filen nu kopierad till min hemkatalog från fjärrservern.
På samma sätt kan du ladda ner flera filer eller kataloger från fjärrservern med hjälp av scp
kommandot med lämpliga alternativ.
Komprimera filer för att göra snabbare överföringar
Ibland kan överföring av stora filer vara tidskrävande. Det här problemet kan lösas när du använder scp
kommandot med -C
(versal C
) alternativet.
Använda -C
alternativet, komprimerar de större filerna vilket underlättar en snabbare överföring och därmed sparar tid.
Ett intressant faktum med detta alternativ är att filen kopieras med sin ursprungliga storlek på destinationssystemet, men under överföringsprocessen komprimeras storleken för att möjliggöra en snabbare överföring. Således görs komprimeringen endast på nätverket.
Allmän syntax:
scp -C [filnamn] användarnamn@användarvärd:[målmapp]
Låt oss se ett jämförande exempel för att förstå skillnaden.
Överför utan -C-alternativ:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 dec 2017 debug1: Läser konfigurationsdata /home/trinity/.ssh/config debug1: Läser konfigurationsdata /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config rad 19: Debug1-alternativ för * debug1 : Ansluter till 68.183.82.183 [68.183.82.183] port 22. debug1: Anslutning upprättad. 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 Överförd: skickad 7516tes, 7516 sekunder per sekund: skickade 100693.7, tog emot 53.7 debug1: Exit status 0 gaurav@ubuntu:~$
Från ovanstående utdata kan vi se att tiden som krävs för överföringen är 74,6 sekunder. Vi kommer att försöka överföra samma fil med alternativet -C och observera skillnaden.
Överför med alternativet -C:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 dec 2017 debug1: Läser konfigurationsdata /home/trinity/.ssh/config debug1: Läser konfigurationsdata /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config rad 19: Debug1-alternativ för * debug1 : Ansluter till 68.183.82.183 [68.183.82.183] port 22. debug1: Anslutning upprättad. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Skicka fillägen: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834.3KB: E804KB 1004KB 1004KB 1004KB 100% 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-T-07.zip 100% 3666KB 218,5KB/s 00:16 Sink: E debug1: client_input_channel_req: kanal 0 rtyp exit-status svar 0 debug1: kanal 0: ledig: klientsession, nchannels 1 debug1: fd_NO_NO 0 clearing ONBLOCK NO Överfört: skickat 7518864, mottaget 3828 byte, på 51,0 sekunder Byte per sekund: skickat 100245,4, mottaget 51,0 debug1: Exit status 0 debug1: komprimera utgående: rådata 7511925, komprimerat 7513110: 7513110, komprimerat 7513110: 7513110 999, faktor 0,68 gaurav@ubuntu:~$
Här kan vi enkelt observera att med hjälp av -C
alternativet med scp
kommandot har tillåtit oss att komprimera filen över nätverket, vilket har visat sig vara ett tidsbesparande alternativ.
Använder en annan ssh-port för filöverföring
När du använder scp
kommandot standardporten som distribueras är port 22
. Användaren har friheten att anpassa detta val av port. Du kan använda -P
(alternativet versaler P) med scp
kommandot för att använda den port du väljer.
Allmän syntax:
cp -P [new_port_number] [filnamn/katalognamn] remote_user@host:[destination_folder]
Exempel:
scp -P 4248 dlink [email protected]:team
Med kommandot ovan kommer filen att överföras till fjärrservern. Men den här gången kommer den använda hamnen att vara det port 4248
istället för standard port 22
.
Slutsats
Efter att ha gått igenom den här handledningen har vi lärt oss om den dynamiska naturen hos scp
kommando som används för att överföra eller kopiera filer från ett system till ett annat. Det här alternativet kan också användas för att ladda ner filer eller kataloger från fjärrservern. Därför kan vi dra slutsatsen att scp
kommandot visar sig vara mycket användbart för filöverföringar när du måste hantera mer än ett system samt fjärrservrar samtidigt.