Jak používat příkaz SCP v Linuxu

Snadný návod, který vám pomůže přenést soubory do vzdáleného systému z vašeho systému Linux pomocí příkazu scp.

SCP je zkratka pro „Secure Copy“. scp je nástroj příkazového řádku nabízený Linuxem, který umožňuje přenos souborů a adresářů z jednoho počítače na druhý přes nezabezpečenou síť.

Pokud chcete kopírovat soubory z jednoho systému do druhého, pak scp může být velmi dobrou volbou pro bezpečný přenos souborů a adresářů. Když jsou dva komunikující stroje připojeny přes stejnou síť, pak pomocí scp se stává možným.

Můžete se silně spolehnout na scp příkaz pro důvěrnost a integritu, protože přenášený soubor a heslo použité pro přenos jsou šifrovány. Žádné citlivé informace nebudou odhaleny, i když se kdokoli pokusí odposlouchávat provoz, zatímco tento přenos probíhá.

V tomto tutoriálu uvidíme různé příklady scp příkaz. Podíváme se také na některé z často používaných možností s scp příkaz.

Začínáme s příkazem scp

Za použití scp příkazem můžete přenášet soubory/adresáře:

  • Z místního počítače na vzdálený počítač.
  • Mezi dvěma vzdálenými stroji.
  • Ze vzdáleného počítače na váš místní počítač.

Obecná syntaxe:

scp [Možnost] [název_zdrojového_souboru] [uživatel@cílový_hostitel]:cílová_složka

Pojďme pochopit základní atributy tohoto příkazu jeden po druhém.

  • [název_zdrojového_souboru] Toto je zdrojový soubor, který chcete zkopírovat.
  • [uživatel@cílový_hostitel] Toto je uživatelské jméno vzdáleného systému, kam chcete soubor zkopírovat. IP adresa vzdáleného počítače se také používá v tomto atributu za „@‘symbol.
  • [cílová složka] Toto je adresář, kam chcete uložit zkopírovaný soubor.

Poznámka: Dvojtečka (:) se v syntaxi používá symbol, protože rozlišuje mezi místním a vzdáleným umístěním. Používáme dvojtečku (:) se vzdáleným systémem a zadejte adresář, do kterého mají být soubory zkopírovány. V případě, že neuvedeme cílový adresář, pak budou soubory zkopírovány do domovského adresáře uživatele vzdáleného systému.

Možnosti používané s scp

Některé z nejoblíbenějších možností používaných s scp příkazy jsou uvedeny níže.

VolbaPopis
-Cpovolit kompresi souboru, který má být přenesen
-protiposkytnout podrobný výstup
-rrekurzivně kopírovat soubory a adresáře
-pzachovat oprávnění, režimy a doby přístupu k souborům
-Pzměnit výchozí port používaný scp příkaz

Příklady těchto možností uvidíme dále v tutoriálu.

Kopírování souboru z místního do vzdáleného systému

scp umožňuje přenášet soubory z vašeho lokálního systému do vzdáleného systému pomocí následující syntaxe. To vám umožní přenášet nebo nahrávat soubory na vzdálený server.

Obecná syntaxe:

scp [název_souboru] vzdálený_uživatel@hostitel:[cílová_složka]

Příklad:

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

V tomto příkladu kopírujeme soubor ‚apache-tomcat-9.0.8.tar.gz‘ z místního systému do vzdáleného systému, jehož IP adresa je ‚143.110.178.221‘.

Na vzdáleném systému bude soubor nyní zkopírován do adresáře s názvem ‚gaurav‘.

Výstup:

gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] heslo: apache-tomcat-9.0.8.tar.gz 5898KB 9 /s 02:00 gaurav@ubuntu:~$ 

Pojďme zkontrolovat výstup na vzdáleném systému pro soubor.

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

Soubor je tedy úspěšně zkopírován do vzdáleného systému pomocí scp příkaz.

Kopírování více souborů do vzdáleného systému

V předchozím příkladu jsme se naučili přenášet soubor do vzdáleného systému pomocí scp příkaz. Nyní uvidíme metodu přenosu více souborů z vašeho lokálního systému do vzdáleného systému pomocí tohoto příkazu.

Obecná syntaxe:

scp [soubor 1] [soubor 2] [soubor n] vzdálené_uživatelské_jméno@vzdálený_hostitel:[konkrétní adresář]

Pojďme pochopit tento jednoduchý proces na příkladu.

Příklad:

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

Zde je v příkazu ke zkopírování na vzdálený systém zmíněno více souborů.

Výstup:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] heslo: ath.html/99K99:B 100% 02 abc.txt 100 % 0 0,0 KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100 % 4360 42,2 KB/s 00:00 gaurav@ubuntu:~$

Na vzdáleném systému:

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l celkem 9800 -rw-r--r-- 1 root root 0 5. října 08:58 abc.txt -rw-r-- r-- 1 kořenový kořen 9818695 5. října 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 kořenový kořenový adresář 204057 5. října 08:58 ath.html -rw-r-- r-- 1 root root 4360 5. října 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Všechny tři soubory jsou nyní zkopírovány do vzdáleného systému.

Kopírování adresáře do vzdáleného systému

Můžeš použít scp ke zkopírování adresáře z vašeho lokálního systému do vzdáleného systému. Proces je podobný jako při kopírování souboru. Chcete-li zkopírovat také obsah adresáře, můžete použít -r možnost s scp příkaz.

The -r volba se používá ke kopírování adresáře rekurzivně. To znamená, že všechny podsložky a soubory v adresáři budou také zkopírovány.

Obecná syntaxe:

scp -r [cesta k adresáři] vzdálené_uživatelské_jméno@vzdálený_hostitel:[cílový_adresář]

Příklad:

scp -r PycharmProjects [email protected]:gaurav

Výstup:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] heslo: __main__.py 100 % 623 7,8 KB/s 0_23_1 py % 0_23_00 % :00 dokončení.py 100 % 2929 28,1 kB/s 00:00 vyhledávání.py 100 % 4728 38,7 kB/s 00:00 odinstalace.py 100 % 2963 32,5 kB/s 00:00 hash % py 1183.py 100. s 00:00 kontrola.py 100 % 1430 16,8 kB/s 00:00 konfigurace.py 100 % 7125 50,4 kB/s 00:00 show.py 100 % 6289 49,8 kB/s 00:00 % stahování 482 py 62,3 KB/s 00:00 gaurav@ubuntu:~$ 

Za použití -r možnost s scp příkaz zkopíruje všechny podsložky a soubory v adresáři z místního počítače do vzdáleného systému.

Zobrazení podrobných informací o procesu scp

Můžete použít -proti (malá písmena proti) možnost zobrazit informace o souborech, které se kopírují na vzdálený nebo místní systém. Tento typ výstupu se také nazývá podrobný výstup.

Při použití této možnosti se na obrazovce zobrazí úplné informace o ladění o souboru.

Obecná syntaxe:

scp -v [název_souboru] uživatelské_jméno@uživatelský_hostitel:

Příklad:

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

Výstup:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Provádění: program /usr/bin/ssh hostitel 159.89.170.11, uživatel root, příkaz scp -v -t tým OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7. prosince 2017 debug1: Čtení konfiguračních dat /home/gaurav/.ssh/config debug1: Čtení konfiguračních dat /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config řádek 19: Použití možností pro * debug1: Připojování k portu 159.89.170.11 [159.89.170.11] 22. debug1: Připojení navázáno. debug1: key_load_public: Žádný takový soubor nebo adresář debug1: soubor identity /home/gaurav/.ssh/id_rsa typ -1 apache-tomcat-9.0.8.tar.gz 100 % 9589 kB 99,8 kB/s 01:36 debug1: client_req:channel 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 Přeneseno: odesláno 9826736, přijato 4016 bajtů, za 97,2 sekund odesláno Bajtů za sekundu 101133.9, přijato 41.3 ladění1: Stav ukončení 0 gaurav@ubuntu:~$ 

Zde ve výstupu můžete vidět, že informace o ladění souboru se zobrazují na vašem terminálu, když je scp příkaz se používá s -proti volba.

Přenos souborů mezi dvěma vzdálenými hostiteli

Linux umožňuje připojení k více vzdáleným hostitelům. Můžete přenášet soubory a adresáře mezi dvěma vzdálenými hostiteli pomocí scp příkaz.

Obecná syntaxe:

scp vzdálený_uživatel_1@hostitel_1:/[název_souboru] vzdálený_uživatel_2@hostitel_2:[složka_k_uložení]

Syntaxe se může zdát trochu širší, ale je docela jednoduchá. Zde první část příkazu poskytuje vstup o vzdáleném uživateli, odkud má být soubor zkopírován. dvojtečka (:) a / se používá k zadání názvu souboru nebo názvu adresáře, který se má přenést mezi dvěma vzdálenými počítači.

Druhá část poskytuje informace o cílovém vzdáleném systému, kam má být soubor zkopírován.

Příklad:

scp -r [email protected]:gaurav [email protected]:/tým

Zde budeme rekurzivně kopírovat adresář s názvem „gaurav“ z místního systému do vzdáleného systému. Soubor bude zkopírován do složky „tým“ ve vzdáleném systému.

Výstup:

gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] heslo: 1.py 100% 134 261.00KB/s proměnná. 100 % 377 949,2 KB/s 00:00 abc.txt 100 % 0 0,0 KB/s 00:00 ath.html 100 % 199 KB 41,8 MB/s 00:00 gaurav@ubuntu:~$

Zde jsme použili scp příkaz na místním systému k přenosu adresáře s názvem ‚gaurav‘ z jednoho vzdáleného serveru na druhý.

Přeneste soubory ze vzdáleného systému do místního systému

Soubory nebo adresáře můžete snadno přenést ze vzdáleného systému do místního systému pomocí scp příkaz. Jednoduše řečeno, můžete stáhnout více souborů nebo adresářů ze vzdáleného serveru do vašeho místního systému pomocí scp příkaz.

Obecná syntaxe:

scp remote_username@user_host:/files/file.txt /[složka_místního_systému]

Výstup:

gaurav@ubuntu:~$ scp [email protected]:how.txt . Heslo uživatele [email protected]: how.txt 100 % 11 0,1 kB/s 00:00 gaurav@ubuntu:~$

Zde jsem stáhl (zkopíroval) soubor ze vzdáleného serveru do mého domovského adresáře. Proto jsem použil tečku (.) zadat v příkazu zkopírovat soubor do mého domovského adresáře.

Ukázkový výstup:

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

Zde je soubor nyní zkopírován do mého domovského adresáře ze vzdáleného serveru.

Stejným způsobem můžete stáhnout více souborů nebo adresářů ze vzdáleného serveru pomocí scp příkaz s příslušnými možnostmi.

Komprese souborů pro rychlejší přenosy

Někdy může být přenos velkých souborů časově náročný. Tento problém lze vyřešit pomocí scp příkaz s -C (velká písmena C) možnost.

Za použití -C komprimuje soubory větší velikosti, což usnadňuje rychlejší přenos a tím šetří čas.

Jeden zajímavý fakt o této možnosti je, že soubor je zkopírován s původní velikostí v cílovém systému, ale během procesu přenosu je velikost komprimována, aby byl přenos rychlejší. Komprese se tedy provádí pouze v síti.

Obecná syntaxe:

scp -C [název_souboru] uživatelské_jméno@uživatelský_hostitel:[cílová_složka]

Podívejme se na srovnávací příklad, abychom pochopili rozdíl.

Převod bez možnosti -C:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Provádění: program /usr/bin/ssh host 68.183.82.183, uživatel root, příkaz scp -v -r -t team OpenSSH_7.6p1 Ubuntu.-4ubuntu 3, OpenSSL 1.0.2n 7. prosince 2017 debug1: Čtení konfiguračních dat /home/trinity/.ssh/config debug1: Čtení konfiguračních dat /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config řádek 19: Použití voleb pro * debug1 : Připojování k portu 68.183.82.183 [68.183.82.183] 22. debug1: Připojení navázáno. ladění1: 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_NONBLOCKes Transfer: odesláno 7516504 bytes, přijato 40 Byttes. za sekundu: odesláno 100693,7, přijato 53,7 ladění1: Stav ukončení 0 gaurav@ubuntu:~$ 

Z výše uvedeného výstupu vidíme, že čas potřebný pro přenos je 74,6 sekund. Zkusíme přenést stejný soubor pomocí volby -C a pozorujeme rozdíl.

Převod s možností -C:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Provádění: program /usr/bin/ssh host 68.183.82.183, uživatel root, příkaz scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4 3, OpenSSL 1.0.2n 7. prosince 2017 debug1: Čtení konfiguračních dat /home/trinity/.ssh/config debug1: Čtení konfiguračních dat /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config řádek 19: Použití voleb pro * debug1 : Připojování k portu 68.183.82.183 [68.183.82.183] 22. debug1: Připojení navázáno. . . webupload.img 100 % 1834 KB 98,7 KB/s 00:18 Režimy odesílání souborů: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100 %: Režim odesílání E06/Soubor S06803 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Dřez: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release.IN-0ziT-T.0 100 % 3666KB 218,5KB/s 00:16 Sink: E debug1: client_input_channel_req: channel 0 rtype exit-status response 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NOd Oclearing Přeneseno: odesláno 7518864, přijato 3828 bajtů, za 51,0 sekund Bajty za sekundu: odesláno 100245,4, přijato 51,0 ladění1: Stav ukončení 0 ladění1: komprimovat odchozí: nezpracovaná data 7511925, zkomprimováno 7513136, 146 faktor ladění: 1,00 nezpracovaná data, zkomprimovaná nezpracovaná data 999, faktor 0,68 gaurav@ubuntu:~$

Zde můžeme snadno pozorovat, že pomocí -C možnost s scp příkaz nám umožnil komprimovat soubor přes síť, což se ukázalo jako možnost šetřící čas.

Použití jiného portu ssh pro přenos souborů

Při používání scp příkaz výchozí port, který je nasazen, je port 22. Uživatel má svobodu přizpůsobit tento výběr portu. Můžete použít -P (volba velká písmena P) s scp k použití vámi zvoleného portu.

Obecná syntaxe:

cp -P [nové_číslo_portu] [název_souboru/název_adresáře] vzdálený_uživatel@hostitel:[cílová_složka]

Příklad:

scp -P 4248 dlink [email protected]:tým

Pomocí výše uvedeného příkazu bude soubor přenesen na vzdálený server. Ale tentokrát bude použitý port port 4248 místo výchozího port 22.

Závěr

Poté, co jsme si prošli tento tutoriál, jsme se dozvěděli o dynamické povaze scp příkaz používaný k přenosu nebo kopírování souborů z jednoho systému do druhého. Tuto možnost lze také použít ke stažení souborů nebo adresářů ze vzdáleného serveru. Můžeme tedy učinit závěr scp Příkaz se ukazuje jako velmi užitečný pro přenos souborů, když musíte současně obsluhovat více než jeden systém a také vzdálené servery.