SCP-opdracht gebruiken in Linux

Een eenvoudige zelfstudie om u te helpen bestanden over te zetten naar een extern systeem vanaf uw Linux-systeem met behulp van de scp-opdracht.

SCP staat voor ‘Secure Copy’. scp is een opdrachtregelprogramma aangeboden door Linux waarmee bestanden en mappen van de ene machine naar de andere kunnen worden overgedragen via een onveilig netwerk.

Als u bestanden van het ene systeem naar het andere wilt kopiëren, dan: scp kan een zeer goede optie zijn om een ​​veilige overdracht van de bestanden en mappen te maken. Wanneer de twee communicerende machines via hetzelfde netwerk zijn verbonden, gebruikt u scp mogelijk wordt.

U kunt sterk vertrouwen op de scp commando voor vertrouwelijkheid en integriteit, aangezien het bestand dat wordt overgedragen en het wachtwoord dat voor de overdracht wordt gebruikt, beide versleuteld zijn. Er wordt geen gevoelige informatie onthuld, zelfs niet als iemand probeert in het verkeer te snuffelen terwijl deze overdracht aan de gang is.

In deze tutorial zullen we verschillende voorbeelden zien van de scp opdracht. We zullen ook kijken naar enkele van de veelgebruikte opties met de scp opdracht.

Aan de slag met het scp-commando

De ... gebruiken scp commando kunt u bestanden/mappen overbrengen:

  • Van uw lokale computer naar een externe computer.
  • Tussen twee externe machines.
  • Van een externe machine naar uw lokale machine.

Algemene syntaxis:

scp [Optie] [bron_bestandsnaam] [gebruiker@destination_Host]:bestemmingsmap

Laten we de basiskenmerken van deze opdracht een voor een begrijpen.

  • [bron_bestandsnaam] Dit is het bronbestand dat u wilt kopiëren.
  • [gebruiker@destination_Host] Dit is de gebruikersnaam van het externe systeem waarnaar u het bestand wilt kopiëren. Het IP-adres van de externe machine wordt ook gebruikt in dit attribuut na de '@' symbool.
  • [doelmap] Dit is de map waar u het gekopieerde bestand wilt opslaan.

Opmerking: de dubbele punt (:) symbool wordt gebruikt in de syntaxis omdat het onderscheid maakt tussen de lokale en externe locaties. We gebruiken de dubbele punt (:) met het externe systeem om de map op te geven waarnaar de bestanden moeten worden gekopieerd. Als we de doelmap niet specificeren, worden de bestanden gekopieerd naar de thuismap van de systeemgebruiker op afstand.

Opties gebruikt met scp

Enkele van de meest populaire opties die worden gebruikt met de scp commando staan ​​hieronder vermeld.

OptieBeschrijving
-Ccompressie van het over te dragen bestand toestaan
-vgeef de uitgebreide uitvoer
-Rbestanden en mappen recursief kopiëren
-Prechten, modi en toegangstijden van bestanden behouden
-Pverander de standaardpoort die wordt gebruikt door scp opdracht

We zullen de voorbeelden van deze opties zien, verderop in de tutorial.

Bestand kopiëren van een lokaal naar een extern systeem

scp stelt u in staat om bestanden van uw lokale systeem naar een extern systeem over te brengen met behulp van de volgende syntaxis. Hiermee kunt u uw bestanden overzetten of uploaden naar een op afstand geplaatste server.

Algemene syntaxis:

scp [bestandsnaam] remote_user@host:[bestemmingsmap]

Voorbeeld:

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

In dit voorbeeld kopiëren we een bestand 'apache-tomcat-9.0.8.tar.gz' van het lokale systeem naar het externe systeem waarvan het IP-adres '143.110.178.221' is.

Op het externe systeem wordt het bestand nu gekopieerd naar de map met de naam 'gaurav'.

Uitgang:

gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected]'s wachtwoord: apache-tomcat-9.0.8.tar.gz 100% 9589KB 79.8KB /s 02:00 gaurav@ubuntu:~$ 

Laten we de uitvoer op het externe systeem voor het bestand controleren.

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

Het bestand is dus met succes gekopieerd naar het externe systeem met behulp van de scp opdracht.

Meerdere bestanden kopiëren naar een extern systeem

In het vorige voorbeeld hebben we geleerd om een ​​bestand naar het externe systeem over te brengen met behulp van de scp opdracht. We zullen nu de methode zien om meerdere bestanden van uw lokale systeem naar een extern systeem over te brengen met behulp van deze opdracht.

Algemene syntaxis:

scp [bestand 1] [bestand 2] [bestand n] remote_username@remote_host:[specifieke map]

Laten we dit eenvoudige proces met een voorbeeld begrijpen.

Voorbeeld:

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

Hier worden meerdere bestanden genoemd in de opdracht die naar het externe systeem moet worden gekopieerd.

Uitgang:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected]'s wachtwoord: ath.html 100% 199KB 94.7KB/s 00: 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:~$

Op het externe systeem:

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

Alle drie de bestanden worden nu gekopieerd naar het externe systeem.

Een map kopiëren naar het externe systeem

Je kunt gebruiken scp commando om een ​​map van uw lokale systeem naar het externe systeem te kopiëren. Het proces is vergelijkbaar met het kopiëren van een bestand. Om ook de inhoud van de map te kopiëren, kunt u de -R optie met de scp opdracht.

De -R optie wordt gebruikt om een ​​map recursief te kopiëren. Dat betekent dat alle submappen en bestanden in de map ook worden gekopieerd.

Algemene syntaxis:

scp -r [mappad] remote_username@remote_host:[target_directory]

Voorbeeld:

scp -r PycharmProjects [email protected]:gaurav

Uitgang:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected]'s wachtwoord: __main__.py 100% 623 7.8KB/s 00:00 __init__.py 100% 23 0.4KB/s 00 :00 voltooiing.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 100% 1681 21.3KB/ s 00:00 check.py 100% 1430 16,8KB/s 00:00 configuratie.py 100% 7125 50,4KB/s 00:00 show.py 100% 6289 49.8KB/s 00:00 download.py 100% 6623 48,2 KB/s 00:00 gaurav@ubuntu:~$ 

De ... gebruiken -R optie met de scp command kopieert alle submappen en bestanden in de map van de lokale machine naar het externe systeem.

Gedetailleerde informatie over het scp-proces weergeven

U kunt de -v (kleine letters v) optie om de informatie weer te geven over de bestanden die worden gekopieerd op een extern of uw lokale systeem. Dit type uitvoer wordt ook wel de uitgebreide uitvoer genoemd.

Wanneer deze optie wordt gebruikt, wordt de volledige foutopsporingsinformatie over het bestand op het scherm weergegeven.

Algemene syntaxis:

scp -v [bestandsnaam] gebruikersnaam@gebruiker_host:

Voorbeeld:

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

Uitgang:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Uitvoeren: programma /usr/bin/ssh host 159.89.170.11, gebruiker root, commando scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 december 2017 debug1: Configuratiegegevens lezen /home/gaurav/.ssh/config debug1: Configuratiegegevens lezen /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config regel 19: opties toepassen voor * debug1: verbinding maken met 159.89.170.11 [159.89.170.11] poort 22. debug1: verbinding tot stand gebracht. debug1: key_load_public: Geen dergelijk bestand of directory debug1: identiteitsbestand /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: kanaal 0 rtype exit-status antwoord 0 debug1: kanaal 0: vrij: client-sessie, nchannels 1 debug1: fd 0 wissen O_NONBLOCK debug1: fd 1 wissen O_NONBLOCK Overgedragen: verzonden 9826736, ontvangen 4016 bytes, in 97,2 seconden Bytes per seconde: verzonden 101133.9, 41,3 debug1 ontvangen: Afsluitstatus 0 gaurav@ubuntu:~$ 

Hier, in de uitvoer, kunt u zien dat de foutopsporingsinformatie van het bestand wordt weergegeven op uw terminal wanneer de scp commando wordt gebruikt met de -v optie.

Bestanden overdragen tussen twee externe hosts

Met Linux kunt u verbinding maken met meerdere externe hosts. U kunt bestanden en mappen tussen twee hosts op afstand overdragen met behulp van de scp opdracht.

Algemene syntaxis:

scp remote_user_1@host_1:/[bestandsnaam] remote_user_2@host_2:[folder_to_save]

De syntaxis lijkt misschien wat ruimer, maar is vrij eenvoudig. Hier geeft het eerste deel van de opdracht de invoer over de gebruiker op afstand vanwaar het bestand moet worden gekopieerd. dubbele punt (:) en / wordt gebruikt om de bestandsnaam of de mapnaam op te geven die tussen de twee externe machines moet worden overgedragen.

Het tweede deel geeft informatie over het doelsysteem op afstand waarnaar het bestand moet worden gekopieerd.

Voorbeeld:

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

Hier zullen we een map met de naam 'gaurav' recursief kopiëren van het lokale systeem naar een extern systeem. Het bestand wordt gekopieerd naar een map 'team' op het externe systeem.

Uitgang:

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

Hier gebruikten we de scp commando op het lokale systeem om een ​​map met de naam ‘gaurav’ over te dragen van de ene externe server naar de andere.

Bestanden overbrengen van het externe systeem naar uw lokale systeem

U kunt de bestanden of mappen eenvoudig van het externe systeem naar uw lokale systeem overbrengen met behulp van de scp opdracht. In eenvoudiger woorden, u kunt meerdere bestanden of mappen downloaden van de externe server naar uw lokale systeem met behulp van de scp opdracht.

Algemene syntaxis:

scp remote_username@user_host:/files/file.txt /[folder_of_local_system]

Uitgang:

gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected]'s wachtwoord: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$

Hier heb ik het bestand van de externe server naar mijn thuismap gedownload (gekopieerd). Daarom heb ik punt (.) om in de opdracht op te geven om het bestand naar mijn thuismap te kopiëren.

Voorbeelduitvoer:

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

Hier wordt het bestand nu gekopieerd naar mijn thuismap vanaf de externe server.

Op dezelfde manier kunt u meerdere bestanden of mappen downloaden van de externe server met behulp van de scp commando met de juiste opties.

Bestanden comprimeren om snellere overdrachten te maken

Soms kan het overzetten van grote bestanden tijdrovend zijn. Dit probleem kan worden verholpen tijdens het gebruik van de scp commando met de -C (hoofdletter C) optie.

De ... gebruiken -C optie, comprimeert de grotere bestanden, wat een snellere overdracht mogelijk maakt en dus tijd bespaart.

Een interessant feit over deze optie is dat het bestand wordt gekopieerd met de oorspronkelijke grootte op het doelsysteem, maar tijdens het overdrachtsproces wordt de grootte gecomprimeerd om een ​​snellere overdracht mogelijk te maken. De compressie gebeurt dus alleen op het netwerk.

Algemene syntaxis:

scp -C [bestandsnaam] gebruikersnaam@gebruiker_host:[doelmap]

Laten we een vergelijkend voorbeeld bekijken om het verschil te begrijpen.

Overzetten zonder -C optie:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Uitvoeren: programma /usr/bin/ssh host 68.183.82.183, gebruiker root, commando scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 december 2017 debug1: Configuratiegegevens lezen /home/trinity/.ssh/config debug1: Configuratiegegevens lezen /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config regel 19: Opties toepassen voor * debug1 : Verbinding maken met 68.183.82.183 [68.183.82.183] poort 22. debug1: Verbinding tot stand gebracht. debug1: client_input_channel_req: kanaal 0 rtype exit-status reply 0 debug1: kanaal 0: gratis: client-sessie, nchannels 1 debug1: fd 0 wissen O_NONBLOCK debug1: fd 1 wissen O_NONBLOCK Overgedragen: verzonden 7516504, ontvangen 4008 bytes, in 74,6 seconden Bytes per seconde: 100693.7 verzonden, 53.7 ontvangen debug1: Afsluitstatus 0 gaurav@ubuntu:~$ 

Uit de bovenstaande output kunnen we zien dat de tijd die nodig is voor de overdracht 74,6 seconden is. We zullen proberen hetzelfde bestand over te zetten met behulp van de -C optie en kijken naar het verschil.

Overzetten met -C optie:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Uitvoeren: programma /usr/bin/ssh host 68.183.82.183, gebruiker root, commando scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 december 2017 debug1: Configuratiegegevens lezen /home/trinity/.ssh/config debug1: Configuratiegegevens lezen /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config regel 19: Opties toepassen voor * debug1 : Verbinding maken met 68.183.82.183 [68.183.82.183] poort 22. debug1: Verbinding tot stand gebracht. . . webupload.img 100% 1834KB 98.7KB/s 00:18 Bestandsmodi verzenden: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB 100.3KB/s 00:18 Sink: E Bestandsmodi verzenden: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Spoelbak: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666KB 218.5KB/s 00:16 Sink: E debug1: client_input_channel_req: kanaal 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 Overgedragen: 7518864 verzonden, 3828 bytes ontvangen, in 51,0 seconden Bytes per seconde: 100245.4 verzonden, 51,0 ontvangen debug1: Afsluitstatus 0 debug1: uitgaande comprimeren: onbewerkte gegevens 7511925, gecomprimeerd 7513136, factor 1,00 debug1: inkomende comprimeren: onbewerkte gegevens 1467, gecomprimeerd 999, factor 0,68 gaurav@ubuntu:~$

Hier kunnen we gemakkelijk zien dat met behulp van de -C optie met de scp opdracht heeft ons in staat gesteld om het bestand via het netwerk te comprimeren, wat een tijdbesparende optie blijkt te zijn.

Een andere ssh-poort gebruiken voor bestandsoverdracht

Tijdens het gebruik van de scp commando de standaardpoort die is geïmplementeerd is de poort 22. De gebruiker heeft de vrijheid om deze poortkeuze aan te passen. U kunt de -P (optie in hoofdletter P) met de scp commando om de poort van uw keuze te gebruiken.

Algemene syntaxis:

cp -P [new_port_number] [file_name/directory_name] remote_user@host:[bestemmingsmap]

Voorbeeld:

scp -P 4248 dlink [email protected]:team

Met behulp van de bovenstaande opdracht wordt het bestand overgebracht naar de externe server. Maar deze keer zal de gebruikte poort zijn poort 4248 in plaats van de standaard poort 22.

Gevolgtrekking

Na het doornemen van deze tutorial hebben we geleerd over de dynamische aard van de scp commando dat wordt gebruikt om bestanden van het ene systeem naar het andere over te brengen of te kopiëren. Deze optie kan ook worden gebruikt om bestanden of mappen van de externe server te downloaden. We kunnen dus concluderen dat: scp commando is erg handig voor bestandsoverdrachten wanneer u tegelijkertijd met meer dan één systeem en externe servers moet omgaan.