SCP (Secure Copy) je nástroj příkazového řádku v systémech Linux a Unix, který se používá k bezpečnému přenosu souborů a adresářů mezi systémy přes síť. Když použijeme příkaz scp ke kopírování souborů a adresářů z našeho lokálního systému do vzdáleného systému, pak v backendu vytvoří ssh připojení do vzdáleného systému. Jinými slovy, můžeme říci, že scp používá stejný bezpečnostní mechanismus SSH v backendu potřebuje k ověření buď heslo, nebo klíče.
V tomto tutoriálu probereme příkaz scp v linuxu s praktickými příklady.
Syntaxe příkazu scp:
# scp
# scp
První syntaxe příkazu scp ukazuje, jak kopírovat soubory nebo adresáře z místního systému do cílového hostitele v konkrétní složce.
Druhá syntaxe příkazu scp ukazuje, jak se soubory z cílového hostitele kopírují do místního systému.
Některé z nejrozšířenějších voleb v příkazu scp jsou uvedeny níže,
- -C Povolit kompresi
- -i soubor identity nebo soukromý klíč
- -l omezit šířku pásma při kopírování
- -P Číslo portu ssh cílového hostitele
- -p Zachovává oprávnění, režimy a dobu přístupu k souborům při kopírování
- -q Potlačit varovnou zprávu SSH
- -r Rekurzivně kopírovat soubory a adresáře
- -v podrobný výstup
Pojďme se nyní vrhnout na příklady!!!!
Příklad 1) Zkopírujte soubor z místního systému do vzdáleného systému pomocí scp
Předpokládejme, že chceme zkopírovat balíček jdk rpm z našeho místního systému Linux do vzdáleného systému (172.20.10.8) pomocí příkazu scp, použijte následující příkaz,
[[email protected] ~]$ scp jdk-linux-x64_bin.rpm [email protected]:/opt [email protected]'s password: jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00 [[email protected] ~]$
Výše uvedený příkaz zkopíruje soubor balíčku jdk rpm do vzdáleného systému do složky /opt.
Příklad 2) Zkopírujte soubor ze vzdáleného systému do místního systému pomocí scp
Předpokládejme, že chceme zkopírovat soubor ze vzdáleného systému do našeho místního systému do složky /tmp, spusťte následující příkaz scp,
[[email protected] ~]$ scp [email protected]:/root/Technical-Doc-RHS.odt /tmp [email protected]'s password: Technical-Doc-RHS.odt 100% 1109KB 31.8MB/s 00:00 [[email protected] ~]$ ls -l /tmp/Technical-Doc-RHS.odt -rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt [[email protected] ~]$
Příklad 3) Podrobný výstup při přenosu souborů pomocí scp (-v)
V příkazu scp můžeme povolit podrobný výstup pomocí volby -v, pomocí podrobného výstupu snadno zjistíme, co se přesně děje na pozadí. To se stává velmi užitečné při ladění připojení , ověření a problémy s konfigurací .
[email protected] ~]$ scp -v jdk-linux-x64_bin.rpm [email protected]:/opt Executing: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /opt OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS 11 Sep 2018 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config debug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for * debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22. debug1: Connection established. ………… debug1: Next authentication method: password [email protected]'s password:
Příklad 4) Přeneste více souborů do vzdáleného systému
Více souborů lze zkopírovat / přenést do vzdáleného systému pomocí příkazu scp najednou, v příkazu scp zadejte více souborů oddělených mezerou, příklad je uveden níže
[[email protected] ~]$ scp install.txt index.html jdk-linux-x64_bin.rpm \ [email protected]:/mnt [email protected]'s password: install.txt 100% 0 0.0KB/s 00:00 index.html 100% 85KB 7.2MB/s 00:00 jdk-linux-x64_bin.rpm 100% 10MB 25.3MB/s 00:00 [[email protected] ~]$
Příklad 5) Přeneste soubory přes dva vzdálené hostitele
Pomocí příkazu scp můžeme kopírovat soubory a adresáře mezi dvěma vzdálenými hostiteli, předpokládejme, že máme místní systém Linux, který se může připojit ke dvěma vzdáleným systémům Linux, takže z mého místního systému linux mohu použít příkaz scp ke kopírování souborů napříč těmito dvěma systémy,
Syntaxe:
# scp [chráněno e-mailem]_hosts1:/
Příklad je uveden níže,
# scp [email protected]:~/backup-Oct.zip [email protected]:/tmp # ssh [email protected] "ls -l /tmp/backup-Oct.zip" -rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip
Příklad 6) Kopírování souborů a adresářů rekurzivně (-r)
Použijte volbu -r v příkazu scp k rekurzivnímu zkopírování celého adresáře z jednoho systému do druhého, příklad je uveden níže,
[[email protected] ~]$ scp -r Downloads [email protected]:/opt
Pomocí níže uvedeného příkazu ověřte, zda je složka pro stahování zkopírována do vzdáleného systému,
[[email protected] ~]$ ssh [email protected] "ls -ld /opt/Downloads" drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads [[email protected] ~]$
Příklad 7) Zvyšte přenosovou rychlost povolením komprese (-C)
V příkazu scp můžeme zvýšit přenosovou rychlost povolením komprese pomocí volby -C, automaticky povolí kompresi u zdroje a dekompresi u cílového hostitele.
[email protected] ~]$ scp -r -C Downloads [email protected]:/mnt
Ve výše uvedeném příkladu přenášíme adresář Download s povolenou kompresí.
Příklad 8) Omezte šířku pásma při kopírování ( -l )
Použijte volbu „-l“ v příkazu scp k omezení využití šířky pásma při kopírování. Šířka pásma je uvedena v Kbit/s, příklad je uveden níže,
[[email protected] ~]$ scp -l 500 jdk-linux-x64_bin.rpm [email protected]:/var
Příklad 9) Určete jiný port ssh při scp ( -P)
Může nastat situace, kdy se port ssh na cílovém hostiteli změní, takže při použití příkazu scp můžeme zadat číslo portu ssh pomocí možnosti „-P“.
[[email protected] ~]$ scp -P 2022 jdk-linux-x64_bin.rpm [email protected]:/var
Ve výše uvedeném příkladu je port ssh pro vzdáleného hostitele „2022“
Příklad 10) Zachovává oprávnění, režimy a dobu přístupu souborů při kopírování (-p)
Použijte volbu „-p“ v příkazu scp k zachování oprávnění, času přístupu a režimů při kopírování ze zdroje do cíle
[[email protected] ~]$ scp -p jdk-linux-x64_bin.rpm [email protected]:/var/tmp jdk-linux-x64_bin.rpm 100% 10MB 13.5MB/s 00:00 [[email protected] ~]$
Příklad 11) Přenos souborů v tichém režimu ( -q) v scp
Použijte volbu „-q“ v příkazu scp k potlačení průběhu přenosu, varovných a diagnostických zpráv ssh. Příklad je uveden níže,
[[email protected] ~]$ scp -q -r Downloads [email protected]:/var/tmp [[email protected] ~]$
Příklad 12) Při přenosu použijte Identify file in scp ( -i)
Ve většině prostředí Linuxu je preferována autentizace založená na klíčích. V příkazu scp specifikujeme identifikační soubor nebo soubor soukromého klíče pomocí volby „-i“, příklad je uveden níže,
[[email protected] ~]$ scp -i my_key.pem -r Downloads [email protected]:/root
Ve výše uvedeném příkladu je „my_key.pem“ soubor identity nebo soubor soukromého klíče.
Příklad 13) Použijte jiný soubor „ssh_config“ v scp ( -F)
Existují některé scénáře, kdy pro připojení k systémům Linux používáte různé sítě, může se stát, že některá síť je za proxy servery, takže v takovém případě musíme mít různé ssh_config soubor.
Odlišný soubor ssh_config v příkazu scp je specifikován pomocí volby „-F“, příklad je uveden níže
[[email protected] ~]$ scp -F /home/pkumar/new_ssh_config -r Downloads \ [email protected]:/root [email protected]'s password: jdk-linux-x64_bin.rpm 100% 10MB 16.6MB/s 00:00 backup-Oct.zip 100% 713MB 41.9MB/s 00:17 index.html 100% 85KB 6.6MB/s 00:00 [[email protected] ~]$
Příklad 14) Použití jiné šifry v příkazu scp (-c)
Ve výchozím nastavení používá scp k šifrování souborů šifru „AES-128“. Pokud chcete v příkazu scp použít jinou šifru, použijte volbu „-c“ následovanou názvem šifry,
Předpokládejme, že při přenosu souborů chceme v příkazu scp použít šifru „3des-cbc“, spusťte následující příkaz scp
[[email protected] ~]# scp -c 3des-cbc -r Downloads [email protected]:/root
Pomocí níže uvedeného příkazu vypíšete šifry ssh a scp,
[[email protected] ~]# ssh -Q cipher localhost | paste -d , -s - 3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,[email protected],\ aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],\ [email protected] [[email protected] ~]#
To je vše z tohoto tutoriálu, pokud chcete získat více podrobností o příkazu scp, podívejte se laskavě na jeho manuálovou stránku. Prosím, podělte se o své názory a komentáře v sekci komentářů níže.
Přečtěte si také : 11 příkladů příkazů ‚df‘ v systému Linux