SCP úzce souvisí s protokolem SSH a skutečně se zrodil ze stejné myšlenky.
SCP jako rozšíření protokolu SSH zajišťuje, že data zůstanou během přenosu důvěrná a nezměněná.
Nejprve pochopíme, jak toto SCP funguje, a pak uvidíme příkazy scp.
Table of Contents
Co je SCP?
SCP je zkratka pro Secure Copy Protocol.
Je to bezpečná a efektivní metoda pro kopírování souborů a adresářů mezi místními a vzdálenými hostiteli nebo mezi dvěma vzdálenými hostiteli.
Je široce používán pro bezpečný přenos dat po síti. SCP spoléhá na SSH (Secure Shell) při navazování zabezpečeného připojení a šifrování dat během přenosu.
Ať už potřebujete přesunout jeden soubor nebo celý adresář, SCP poskytuje spolehlivé řešení pro vzdálené přenosy souborů.
Jak SCP funguje?
SCP je postaven na protokolu SSH – což je šifrovací síťový protokol pro bezpečné vzdálené přihlášení a provádění příkazů. K ochraně dat během přenosu využívá stejné bezpečnostní mechanismy jako SSH, včetně šifrování a ověřování.
Při použití SCP uživatel spustí příkaz kopírování na svém místním počítači, který specifikuje zdrojový soubor a cílové umístění na vzdáleném počítači. SCP naváže připojení SSH ke vzdálenému systému a poté bezpečně zkopíruje soubory ze zdroje do cíle.
Kdy použít SCP?
SCP je zvláště užitečné v následujících scénářích.
Zálohování vzdáleného serveru
SCP vám umožňuje zálohovat soubory ze vzdáleného serveru na váš místní počítač nebo naopak, což zajišťuje redundanci dat a obnovu po havárii.
Nasazování aplikací
Také zjednodušuje proces bezpečným kopírováním potřebných souborů do každého cílového systému při nasazování aplikací na více serverů,
Přenos velkých souborů
SCP nabízí důvěryhodnou a bezpečnou alternativní metodu přenosu dat pro velké soubory, které mohou být příliš velké pro odeslání jako přílohy e-mailu.
Zabezpečené sdílení souborů
SCP zajišťuje, že data jsou během přenosu šifrována a zároveň odesílá důvěrné soubory jiným lidem.
Spolupráce na dálku
SCP lze použít k bezpečnému sdílení souborů se spolupracovníky nebo členy týmu na různých místech.
Syntaxe příkazu SCP
Než začneme s tím, jak používat příkaz SCP, začněme pochopením základní syntaxe.
Syntaxe příkazu SCP vypadá takto:
scp [options] [source] [destination]
Vysvětlení syntaxe
Možnosti
Toto jsou volitelné příznaky, které upravují chování příkazu SCP. K přizpůsobení procesu přenosu můžete použít různé možnosti. Zde jsou některé běžné možnosti:
-r: Rekurzivně kopíruje adresáře a jejich obsah.
-p: Zachová oprávnění, časová razítka a režimy původního souboru.
-P: Určuje číslo portu pro připojení SSH.
-i: Určuje soubor soukromého klíče pro autentizaci SSH.
-C: Použijte kompresi pro urychlení přenosu dat.
-l: Omezí šířku pásma použitou pro přenos (v kbit/s).
-v: Podrobný režim – zobrazuje ladicí zprávy během přenosu.
-o: Předá možnost klientovi SSH. Lze jej použít k deaktivaci přísné kontroly hostitelského klíče.
Zdroj
Zdroj určuje soubor nebo adresář, který chcete zkopírovat. Může to být místní cesta nebo vzdálená cesta – v závislosti na kontextu.
Destinace
Cíl určuje, kam chcete zdroj zkopírovat. Stejně jako zdroj to může být také místní cesta nebo vzdálená cesta.
Příklady příkazů
#1. Zkopírujte soubor z místního na vzdálený server
scp /path/to/local/file.txt user@remotehost:/path/to/destination/
/path/to/local/file.txt: Toto je zdrojový soubor, který chcete zkopírovat z místního počítače.
user@remotehost: Nahraďte uživatele jménem vzdáleného uživatele a vzdáleného hostitele nahraďte názvem hostitele nebo IP adresou vzdáleného serveru.
/cesta/k/destinaci/: Toto je cílová cesta na vzdáleném serveru, kam bude soubor zkopírován.
Příklad
V mém případě jsem pro přenos souboru zvolil jeden vzdálený server.
Uživatelské jméno vzdáleného hostitele – abhishekvarma
Adresa vzdáleného hostitele – 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Při připojování ke vzdálenému počítači se zeptá na heslo. Zde jsem vybral soubor zip ke zkopírování.
Výstup
A výstup bude vypadat takto, pokud nedojde k chybě při připojení ke vzdálenému serveru.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Zkopírujte soubor ze vzdáleného počítače na místní počítač
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Stejně jako výše nahraďte adresu uživatele a vzdáleného hostitele.
Příklad
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Výstup
Toto je v mém případě pouze ukázkový výstup. Časové razítko se liší v závislosti na rychlosti připojení.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Rekurzivně zkopírujte adresář
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Zde příznak ‚-r‘ říká SCP, aby kopírovalo adresáře rekurzivně (včetně podadresářů a jejich obsahu).
Příklad
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Zde jsem zmínil celý adresář pro kopírování souborů.
Výstup
sample.zip 100% 20KB 1.0MB/s 00:00 Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00 .swp 100% 12KB 894.2KB/s 00:00 .help.swp 100% 12KB 780.4KB/s 00:00
#4. Kopírovat soubory odpovídající vzoru
scp /path/to/local/*.txt user@remotehost:/path/to/destination/
*.txt – Toto je vzor zástupného znaku, který odpovídá všem souborům s příponou .txt v zadaném místním adresáři. Zdrojové a cílové cesty jsou stejné jako dříve.
Příklad
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Výstup
Zde jsem zkoušel s příponou .png.
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00
#5. Zachovat atributy souboru
scp -p /path/to/local/file.txt user@remotehost:/path/to/destination/
Zde příznak ‚-p‘ zachovává časy úprav, časy přístupu a režimy zdrojového souboru při kopírování.
Příklad
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Zadejte jiný port SSH
scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/
Příznak ‚-P‘ určuje jiný port SSH (v tomto případě 22) pro připojení SCP. Můžete použít libovolný port.
Příklad
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Kopírovat s kompresí
scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/
Tento příznak ‚-C‘ umožňuje kompresi během přenosu, což potenciálně snižuje velikost přenášených dat. Zdrojová a cílová adresa jsou stejné, jak bylo vysvětleno dříve.
Příklad
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Podrobný výstup pro ladění
scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/
Tato volba ‚-v‘ aktivuje podrobný výstup, který poskytuje podrobnější informace během procesu přenosu.
Příklad
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
Ukázkový výstup bude vypadat takto.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#9. Kopírování ze vzdáleného do místního s podrobným výstupem
scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Stejná vysvětlení jako v předchozím podrobném příkladu, s obrácenými rolemi místních a vzdálených umístění.
Příklad
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Výstup
Výstup bude vypadat takto.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#10. Kopírování pomocí jiného klíče SSH
scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/
Tento příznak „-i /cesta/k/private_key.pem“ specifikuje jiný soukromý klíč SSH pro autentizaci.
Příklad
scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
Pokud máte soukromý klíč, můžete jej použít nebo můžete použít výchozí.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Zkopírujte více souborů na vzdálený server
scp file1.txt file2.txt user@remotehost:/path/to/destination/
Tento příkaz zkopíruje soubor1.txt a soubor2.txt z místního adresáře do zadaného cíle na vzdáleném serveru.
Příklad
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
image.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Zkopírujte vzdálený soubor s jiným názvem
scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt
Tento příkaz zkopíruje soubor.txt ze vzdáleného serveru do místního adresáře a během procesu jej přejmenuje na nový názevsouboru.txt.
Příklad
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip
Výstup
Při provádění tohoto příkazu by měly být staré a nové přípony souborů stejné.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Kopírování se specifickým limitem šířky pásma
scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/
Tento příznak ‚-l‘ určuje limit šířky pásma v kb/s (v tomto případě 1000 kb/s) pro přenos.
Příklad
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Výstup
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Kopírování souborů a zachování symbolických odkazů
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/
Parametr ‚-p‘ zachovává atributy souboru a parametr -r rekurzivně kopíruje adresáře. Tento příkaz také zachová symbolické odkazy během kopírování.
Příklad
scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Výstup
image.png 100% 39KB 1.8MB/s 00:00
#15. Podrobné kopírování souborů s kompresí
scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/
Tento příkaz kombinuje podrobný výstup (-v) a kompresi (-C) během přenosu souboru.
Příklad
scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Výstup
Výstup bude vypadat takto.
scp: debug1: fd 3 clearing O_NONBLOCK Sending file modes: C0664 40050 image.png Sink: C0664 40050 image.png image.png d 6 clearing O_NONBLOCK scp: debug1: fd • clearing O_NONBLOCK image.png debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1 Transferred: sent 40220, received 2576 bytes, in 0.1 seconds Bytes per second: sent 352570.0, received 22581.3 root@ubuntu: ~ debug1: Exit status 0 debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96
#16. Kopírování mezi dvěma vzdálenými servery
Pokud chcete přenést soubory z jednoho vzdáleného serveru na druhý, pak můžete použít tento příkaz.
scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/
Tento příkaz přímo přenese soubor.txt z remotehost1 na remotehost2.
Příklad
scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop
Výstup
file.txt 100% 512KB 512.0KB/s 00:00
Pokud se během přenosu vyskytnou nějaké chyby nebo problémy – výstup může zobrazovat chybové zprávy, které poskytují informace o tom, co se pokazilo.
ssh: connect to host source.example.com port 22: Connection refused lost connection
V tomto případě chybová zpráva naznačuje, že připojení SSH ke zdrojovému serveru bylo odmítnuto. Může to být způsobeno různými důvody, například nesprávným názvem hostitele, IP adresou, portem nebo problémy s konfigurací SSH.
Často kladené otázky o SCP
Zde jsou některé často kladené otázky týkající se protokolu SCP spolu s jejich odpověďmi.
Jak se SCP liší od FTP nebo SFTP?
FTP je zkratka pro File Transfer Protocol.
SFTP je zkratka pro File Transfer Protocol. Oba se používají pro přenos souborů.
SCP funguje přes SSH a nabízí jak šifrování, tak autentizaci v jediném protokolu, díky čemuž je bezpečnější a efektivnější.
Kdy bych měl SCP používat?
SCP se nejlépe hodí pro scénáře, kde jsou vyžadovány bezpečné a spolehlivé přenosy souborů, jako je vzdálené zálohování, nasazení softwaru, distribuce konfiguračních souborů a spolupráce mezi členy týmu.
Je SCP kompatibilní s adresami IPv6?
Ano, SCP podporuje adresy IPv4 i IPv6, což vám umožňuje přenášet soubory přes sítě, které používají libovolné schéma adresování.
Závěr ✍️
Doufám, že vám tento článek pomohl při poznávání SCP a jeho fungování.
Také by vás mohlo zajímat informace o Linux Commands for System Administrator