IT blok - Michal Šika

kutilovo živobytí

SCP – Kopírování souborů mezi dvěma Linux/Unix počítači

Nedávno jsem řešil problém, kdy jsem potřeboval přesunout několik složek se soubory mezi dvěma AIX servery v jedné síti.
Původně zamýšlené stažení dat pomocí WinSCP na můj počítač a následný upload na cílový server jsem nerealizoval z důvodu náročnosti a možného poškození dat při dvojím přesunu. Navíc WinSCP si pohraje s právy souborů a adresářů a tak jsem zkusil něco jiného…

Tím něčím jiným bylo přímé zkopírování dat mezi dvěma servery pomocí programu SCP (secure copy). Ten ke své činnosti využívá protokol SCP. To je síťový protokol, který podporuje přesuny souborů na portu 22. Jedná se o „tunelování“ skrze SSH protokol, díky čemuž je přenos maximálně zabezpečený.

SCP program je softwarový nástroj, který implementuje SCP protokol. V současnosti je součástí všech Linuxových distribucí a každého Unixu (ať už BSD nebo komerčního), takže není problém jej kdekoliv používat.

Parametry a syntaxi má program scp shodnou s klasickým programem cp pro kopírování v rámci jednoho počítače. Javíc jsou zde pouze parametry pro vytvoření spojení.

Kopírování souboru na vzdálený počítač:

$ scp <zdrojovy_soubor> <uzivatel>@<pocitac>:<adresar>/<cilovy_soubor>

Pro kopírování souboru ze vzdáleného počítače:

$ scp <uzivatel>@<pocitac>:/<slozka>/<zdrojovy_soubor> <cilovy_soubor>
$ scp -r <uzivatel>@<pocitac>:/<slozka>/<zdrojovy_soubor> <cilovy_adresar>

Vše bez problémů funguje na standardním portu 22. Pokud vzdálený počítač používá jiný než stadnardní port, je třeba to zohlednit v příkazu:

$ scp -P 2323 <uzivatel>@<pocitac>:<adresar>/<zdrojovy_soubor> <cilovy_soubor>

V praxi to může vypadat třeba takto:

michell@czprguxdv22$ scp test.txt michell@172.30.28.132:/home/dmadmin/test.txt
The authenticity of host '172.30.28.132 (172.30.28.132)' can't be established.
RSA key fingerprint is 77:4b:c9:d4:0a:3b:bf:78:e7:b0:b2:d8:c2:0e:64:bf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.30.28.132' (RSA) to the list of known hosts.
michell@172.30.28.132's password:
test.txt                                                                                        100%   45     0.0KB/s   00:00
michell@czprguxdv22$

Nejprve jsem určil co se kam má zkopírovat. Pak jsem potvrdil konektivitu (pouze při prvním použití) napsáním yes. A nakonec jsem zadal heslo pro uživatele na vzdáleném počítači.

Grafických prostředí pro SCP program není mnoho a nevyplatí se je proto hledat a instalovat. Použití příkazové řádky je mnohem rychlejší a efektivnější.
Více informací o protokolech pro přesun souborů je možné nalézt na wikipedii.

Michal Šika