Úvod

Príkaz SCP slúži na bezpečné kopírovanie súborov medzi lokálnym počítačom a vzdialeným serverom. Skratka SCP znamená Secure Copy Protocol.

SCP využíva na prenos dát protokol SSH, takže komunikácia medzi počítačom a serverom je šifrovaná. Používa sa hlavne pri správe Linux serverov, Docker serverov, VPS, Raspberry Pi alebo iných zariadení, ku ktorým sa pripájame cez SSH.

Pomocou SCP je možné kopírovať:

  • súbory z lokálneho počítača na server,
  • súbory zo servera do lokálneho počítača,
  • celé priečinky,
  • konfiguračné súbory,
  • zálohy,
  • skripty,
  • logy alebo exportované dáta.

SCP funguje na systémoch Linux, macOS aj Windows.

Základná syntax príkazu SCP

Základný tvar príkazu je:

scp zdroj ciel

Pri kopírovaní na vzdialený server sa používa tvar:

scp subor používateľ@server:/cesta/kam/uložiť

Pri kopírovaní zo servera do počítača sa používa tvar:

scp používateľ@server:/cesta/k/suboru /lokálna/cesta

Príklad:

scp test.txt ivan@10.10.8.5:/home/ivan/

Tento príkaz skopíruje súbor test.txt z aktuálneho počítača na server 10.10.8.5 do priečinka /home/ivan/.

Predpoklady pre používanie SCP

Aby bolo možné SCP používať, musia byť splnené tieto podmienky:

  1. Na serveri musí byť zapnutá služba SSH.
  2. Musíš poznať IP adresu alebo DNS názov servera.
  3. Musíš poznať používateľské meno na serveri.
  4. Musíš mať heslo alebo SSH kľúč.
  5. Firewall musí povoľovať SSH port, štandardne port 22.

Príklad SSH pripojenia na server:

ssh ivan@10.10.8.5

Ak toto funguje, vo väčšine prípadov bude fungovať aj SCP.

opírovanie súboru z počítača na server

Linux alebo macOS

Ak chceme skopírovať súbor z počítača na server, použijeme:

scp /cesta/k/suboru používateľ@IP_adresa_servera:/cieľová/cesta/

príklad

scp /home/ivan/Dokumenty/test.txt ivan@10.10.8.5:/home/ivan/

Tento príkaz skopíruje súbor test.txt z priečinka Dokumenty na server do priečinka /home/ivan/.

Ak sa nachádzame priamo v priečinku, kde je súbor uložený, stačí zadať iba názov súboru:

scp test.txt ivan@10.10.8.5:/home/ivan/

Kopírovanie súboru zo servera do počítača

Linux alebo macOS

Ak chceme skopírovať súbor zo servera do lokálneho počítača, použijeme:

scp používateľ@IP_adresa_servera:/cesta/k/suboru /lokálna/cesta/

Príklad kopírovania do priečinka Dokumenty:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt /home/ivan/Dokumenty/

Príklad kopírovania na pracovnú plochu:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt /home/ivan/Desktop/

Na macOS môže byť cesta na pracovnú plochu napríklad:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt ~/Desktop/

Alebo do dokumentov:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt ~/Documents/

Znak ~ znamená domovský priečinok aktuálneho používateľa.

Používanie SCP vo Windows

Vo Windows 10 a Windows 11 je možné používať SCP priamo cez:

  • Windows Terminal,
  • PowerShell,
  • Príkazový riadok,
  • prípadne cez Git Bash.

Moderné verzie Windows už majú často OpenSSH klienta nainštalovaného automaticky.

Overenie, či je SCP dostupné:

scp

Ak sa zobrazí nápoveda k príkazu, SCP je dostupné.

Kopírovanie súboru z Windows na server

Príklad súboru uloženého na pracovnej ploche:

scp C:\Users\Ivan\Desktop\test.txt ivan@10.10.8.5:/home/ivan/

Tento príkaz skopíruje súbor test.txt z pracovnej plochy Windows na server do priečinka /home/ivan/.

Príklad kopírovania z priečinka Dokumenty:

scp C:\Users\Ivan\Documents\poznamky.txt ivan@10.10.8.5:/home/ivan/

Ak cesta obsahuje medzery, treba ju dať do úvodzoviek:

scp "C:\Users\Ivan\Desktop\moj subor.txt" ivan@10.10.8.5:/home/ivan/

Kopírovanie súboru zo servera do Windows

Príklad kopírovania zo servera na pracovnú plochu Windows:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt C:\Users\Ivan\Desktop\

Príklad kopírovania do Dokumentov:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt C:\Users\Ivan\Documents\

Ak cieľová cesta obsahuje medzery, použijeme úvodzovky:

scp ivan@10.10.8.5:/home/ivan/zaloha.txt "C:\Users\Ivan\Desktop\Moje subory\"

Kopírovanie celého priečinka

Ak chceme kopírovať celý priečinok, použijeme parameter -r.

Písmeno r znamená recursive, teda rekurzívne kopírovanie vrátane všetkých súborov a podpriečinkov.

Kopírovanie priečinka z počítača na server

scp -r /home/ivan/Dokumenty/projekt ivan@10.10.8.5:/home/ivan/

Tento príkaz skopíruje celý priečinok projekt na server.

Kopírovanie priečinka zo servera do počítača

scp -r ivan@10.10.8.5:/home/ivan/projekt /home/ivan/Dokumenty/

Vo Windows napríklad:

scp -r ivan@10.10.8.5:/home/ivan/projekt C:\Users\Ivan\Desktop\

Kopírovanie na iný SSH port

Štandardný SSH port je 22. Ak server používa iný port, pri SCP sa používa parameter -P.

Dôležité je, že pri SCP je parameter veľké -P, nie malé -p.

Príklad:

scp -P 2222 test.txt ivan@10.10.8.5:/home/ivan/

Tento príkaz skopíruje súbor test.txt na server, kde SSH beží na porte 2222.


Kopírovanie pomocou SSH kľúča

Ak sa na server pripájame pomocou SSH kľúča, použijeme parameter -i.

Príklad:

scp -i ~/.ssh/id_rsa test.txt ivan@10.10.8.5:/home/ivan/

Vo Windows môže cesta ku kľúču vyzerať napríklad takto:

scp -i C:\Users\Ivan\.ssh\id_rsa C:\Users\Ivan\Desktop\test.txt ivan@10.10.8.5:/home/ivan/

Praktické príklady

Skopírovanie súboru na server

scp test.txt ivan@10.10.8.5:/home/ivan/

Skopírovanie súboru zo servera na pracovnú plochu v Linuxe

scp ivan@10.10.8.5:/home/ivan/test.txt ~/Desktop/

Skopírovanie súboru zo servera do Dokumentov na macOS

scp ivan@10.10.8.5:/home/ivan/test.txt ~/Documents/

Skopírovanie súboru zo servera na pracovnú plochu vo Windows

scp ivan@10.10.8.5:/home/ivan/test.txt C:\Users\Ivan\Desktop\

Skopírovanie priečinka na server

scp -r projekt ivan@10.10.8.5:/home/ivan/

Skopírovanie priečinka zo servera

scp -r ivan@10.10.8.5:/home/ivan/projekt ~/Documents/

Najčastejšie chyby

Permission denied

Chyba:

Permission denied

Znamená, že používateľ nemá oprávnenie zapisovať do cieľového priečinka, alebo je zadané nesprávne heslo.

Riešenie:

Skopírovať súbor najskôr do domovského priečinka používateľa:

scp test.txt ivan@10.10.8.5:/home/ivan/

Potom sa pripojiť na server cez SSH a súbor presunúť pomocou sudo:

sudo mv test.txt /cieľová/cesta/

No such file or directory

Chyba:

No such file or directory

Znamená, že zadaná cesta alebo súbor neexistuje.

Treba skontrolovať:

  • či je správny názov súboru,
  • či je správna cesta,
  • či sa v názve nenachádza preklep,
  • či cesta s medzerami je v úvodzovkách.

Connection refused

Connection refused

Znamená, že sa nepodarilo pripojiť na SSH službu.

Možné príčiny:

  • SSH služba na serveri nebeží,
  • je zadaná zlá IP adresa,
  • SSH beží na inom porte,
  • firewall blokuje spojenie.

Overenie SSH pripojenia:

ssh ivan@10.10.8.5

Host key verification failed

Chyba:

Host key verification failed

Táto chyba sa môže objaviť, ak sa zmenil SSH kľúč servera, napríklad po reinštalácii systému.

Riešenie treba robiť opatrne, pretože táto hláška môže znamenať aj bezpečnostné riziko. Ak vieme, že server bol naozaj preinštalovaný, môžeme odstrániť starý záznam zo súboru known_hosts.

Príklad:

ssh-keygen -R 10.10.8.5

Potom sa znova pripojíme:

ssh ivan@10.10.8.5

Užitočné parametre SCP

ParameterVýznam
-rKopírovanie celého priečinka
-PPoužitie iného SSH portu
-iPoužitie SSH privátneho kľúča
-vPodrobnejší výpis pre diagnostiku
-CKompresia počas prenosu

Príklad s viacerými parametrami:

scp -r -P 2222 -i ~/.ssh/id_rsa projekt ivan@10.10.8.5:/home/ivan/

Rozdiel medzi SCP a SFTP

SCP je jednoduchý príkaz určený hlavne na rýchle kopírovanie súborov.

SFTP je interaktívnejší spôsob práce so súbormi na serveri. Umožňuje napríklad prehliadať priečinky, nahrávať a sťahovať súbory podobne ako cez FTP klienta.

Na jednoduché kopírovanie jedného súboru alebo priečinka je SCP veľmi praktické. Na pravidelnú správu viacerých súborov môže byť pohodlnejší SFTP klient, napríklad WinSCP.


Odporúčanie z praxe

Pri práci so serverom je vhodné najskôr overiť SSH pripojenie:

ssh ivan@10.10.8.5

Ak SSH funguje, potom môžeme použiť SCP.

Pri kopírovaní do systémových priečinkov, napríklad /etc, /var/www alebo /opt, je lepšie najskôr súbor skopírovať do domovského priečinka používateľa:

scp konfiguracia.conf ivan@10.10.8.5:/home/ivan/

Až následne ho na serveri presunúť pomocou sudo:

sudo mv konfiguracia.conf /etc/sluzba/

Tento postup je bezpečnejší a prehľadnejší.


Záver

Príkaz SCP je jednoduchý a užitočný nástroj na bezpečné kopírovanie súborov medzi lokálnym počítačom a serverom. Funguje na Linuxe, macOS aj Windows a využíva SSH spojenie, vďaka čomu sú prenášané dáta šifrované.

Najčastejšie sa používa na kopírovanie konfiguračných súborov, záloh, skriptov, logov alebo projektových priečinkov. Pri správnej znalosti základnej syntaxe je SCP veľmi rýchly spôsob, ako preniesť súbor na server alebo zo servera späť do počítača.