Jednostavan vodič koji će vam pomoći prenijeti datoteke na udaljeni sustav s vašeg Linux sustava pomoću naredbe scp.
SCP je skraćenica od 'Secure Copy'. scp
je uslužni program naredbenog retka koji nudi Linux koji omogućuje prijenos datoteka i direktorija s jednog računala na drugi preko nesigurne mreže.
Ako želite kopirati datoteke s jednog sustava na drugi, onda scp
može biti vrlo dobra opcija za siguran prijenos datoteka i direktorija. Kada su dva komunikacijska stroja povezana preko iste mreže, tada se koristi scp
postaje moguće.
Možete se u velikoj mjeri osloniti na scp
naredba za povjerljivost i integritet jer su datoteka koja se prenosi i lozinka korištena za prijenos šifrirane. Nikakve osjetljive informacije neće biti otkrivene čak i ako netko pokuša pronjuškati promet dok je prijenos u tijeku.
U ovom vodiču vidjet ćemo različite primjere scp
naredba. Također ćemo pogledati neke od često korištenih opcija s scp
naredba.
Početak rada s naredbom scp
Koristiti scp
naredbom kojom možete prenijeti datoteke/direktorije:
- S vašeg lokalnog stroja na udaljeni stroj.
- Između dva udaljena stroja.
- S udaljenog stroja na vaš lokalni stroj.
Opća sintaksa:
scp [Opcija] [ime_izvorne_datoteke] [user@destination_Host]:destination_folder
Razumijemo osnovne atribute ove naredbe jednu po jednu.
- [ime_izvorne_datoteke] Ovo je izvorna datoteka koju želite kopirati.
- [korisnik@destination_Host] Ovo je korisničko ime udaljenog sustava na koji želite kopirati datoteku. IP adresa udaljenog stroja također se koristi u ovom atributu nakon "
@
' simbol. - [destination_folder] Ovo je direktorij u koji želite spremiti kopiranu datoteku.
Bilješka: debelo crijevo (:
) simbol se koristi u sintaksi jer razlikuje lokalnu i udaljenu lokaciju. Koristimo debelo crijevo (:
) s udaljenim sustavom za određivanje direktorija u koji se datoteke trebaju kopirati. U slučaju da ne navedemo ciljni direktorij, tada će datoteke biti kopirane u kućni direktorij korisnika udaljenog sustava.
Opcije koje se koriste sa scp
Neke od najpopularnijih opcija koje se koriste uz scp
naredbe su navedene u nastavku.
Opcija | Opis |
-C | dopustiti prijenos kompresije datoteke |
-v | dati opsežan izlaz |
-r | rekurzivno kopirati datoteke i direktorije |
-str | sačuvati dopuštenja, načine rada i vremena pristupa datotekama |
-P | promijeniti zadani port koji koristi scp naredba |
Vidjet ćemo primjere ovih opcija, dalje u tutorialu.
Kopiranje datoteke s lokalnog na udaljeni sustav
scp
omogućuje prijenos datoteka s vašeg lokalnog sustava na udaljeni sustav koristeći sljedeću sintaksu. To vam omogućuje prijenos ili prijenos vaših datoteka na udaljeni poslužitelj.
Opća sintaksa:
scp [naziv_datoteke] udaljeni_user@host:[odredišna_mapa]
Primjer:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
U ovom primjeru kopiramo datoteku 'apache-tomcat-9.0.8.tar.gz' s lokalnog sustava na udaljeni sustav čija je IP adresa '143.110.178.221'.
Na udaljenom sustavu datoteka će sada biti kopirana u direktorij pod nazivom 'gaurav'.
Izlaz:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] lozinka: apache-tomcat-9.0.8.tar.gz 1090% 799 KB /s 02:00 gaurav@ubuntu:~$
Provjerimo izlaz na udaljenom sustavu za datoteku.
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Dakle, datoteka se uspješno kopira na udaljeni sustav pomoću scp
naredba.
Kopiranje više datoteka na udaljeni sustav
U prethodnom primjeru naučili smo prenijeti datoteku na udaljeni sustav pomoću scp
naredba. Sada ćemo vidjeti metodu za prijenos više datoteka s vašeg lokalnog sustava na udaljeni sustav pomoću ove naredbe.
Opća sintaksa:
scp [datoteka 1] [datoteka 2] [datoteka n] udaljeno_username@remote_host:[određeni direktorij]
Razumijemo ovaj jednostavan proces na primjeru.
Primjer:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Ovdje se spominje više datoteka u naredbi za kopiranje na udaljeni sustav.
Izlaz:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] lozinka: ath.html 1090 KB 90% 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$
Na udaljenom sustavu:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l ukupno 9800 -rw-r--r-- 1 korijen root 0 5. listopada 08:58 abc.txt -rw-r-- r-- 1 korijen korijen 9818695 5. listopada 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 korijen korijen 204057 5. listopada 08:58 ath.html -rw-r-- r-- 1 root root 4360 5. listopada 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Sve tri datoteke sada su kopirane na udaljeni sustav.
Kopiranje direktorija na udaljeni sustav
Možeš koristiti scp
naredba za kopiranje direktorija s vašeg lokalnog sustava na udaljeni sustav. Postupak je sličan onome kod kopiranja datoteke. Za kopiranje sadržaja imenika također možete koristiti -r
opcija s scp
naredba.
The -r
opcija se koristi za rekurzivno kopiranje direktorija. To znači da će sve podmape i datoteke unutar direktorija također biti kopirane.
Opća sintaksa:
scp -r [puta direktorija] udaljeno_username@remote_host:[ciljani_direktorij]
Primjer:
scp -r PycharmProjects [email protected]:gaurav
Izlaz:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] lozinka: __main__.py 100% 623 7.8KB/s 00:00 KB/s 00:00 KB/s 00:00 . :00 completion.py 100% 2929 28.1KB/s 00:00 search.py 100% 4728 38.7KB/s 00:00 uninstall.py 100% 2963 32.5KB/s 00:00 hash.py 1012% s 00:00 check.py 100% 1430 16,8 KB/s 00:00 configuration.py 100% 7125 50,4 KB/s 00:00 show.py 100% 6289 49,8 KB/s 00:00 download.py 10230% 662. KB/s 00:00 gaurav@ubuntu:~$
Koristiti -r
opcija s scp
naredba kopira sve podmape i datoteke unutar direktorija s lokalnog stroja na udaljeni sustav.
Prikaz detaljnih informacija o scp procesu
Možete koristiti -v
(mala slova v
) opcija za prikaz informacija o datotekama koje se kopiraju na udaljenom ili lokalnom sustavu. Ova vrsta izlaza naziva se i opširnim izlazom.
Kada se koristi ova opcija, potpune informacije o otklanjanju pogrešaka o datoteci se prikazuju na zaslonu.
Opća sintaksa:
scp -v [ime_datoteke] korisničko_ime@korisnički_host:
Primjer:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Izlaz:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Izvršavanje: program /usr/bin/ssh host 159.89.170.11, korisnički root, naredba scp -v -t tim OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7. prosinca 2017. debug1: Čitanje konfiguracijskih podataka /home/gaurav/.ssh/config debug1: Čitanje konfiguracijskih podataka /etc/ssh/ssh_config debug1: /etc_config redak 19: Primjena opcija za * debug1: Povezivanje na 159.89.170.11 [159.89.170.11] port 22. debug1: Veza uspostavljena. debug1: key_load_public: nema takve datoteke ili direktorija debug1: datoteka identiteta /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug_channel client_reput_in kanal 0 rtype izlaz-status odgovor 0 debug1: kanal 0: slobodan: klijentska sesija, kanali 1 debug1: fd 0 brisanje O_NONBLOCK debug1: fd 1 brisanje O_NONBLOCK Preneseno: poslano 9826736, primljeno 4016 bajtova u sekundi, poslano 4016 bajtova u sekundi, u 101133.9, primljeno 41.3 debug1: Izlazni status 0 gaurav@ubuntu:~$
Ovdje, u izlazu, možete vidjeti da se informacije o otklanjanju pogrešaka datoteke prikazuju na vašem terminalu kada je scp
naredba se koristi s -v
opcija.
Prijenos datoteka između dva udaljena hosta
Linux vam omogućuje povezivanje s više udaljenih hostova. Možete prenositi datoteke i direktorije između dva udaljena hosta pomoću scp
naredba.
Opća sintaksa:
scp daljinski_user_1@host_1:/[ime_datoteke] udaljeni_korisnik_2@host_2:[mapa_za_spremi]
Sintaksa se može činiti malo širom, ali je prilično jednostavna. Ovdje prvi dio naredbe daje input o udaljenom korisniku s kojeg se datoteka treba kopirati. debelo crijevo (:) i /
koristi se za određivanje naziva datoteke ili naziva direktorija koji će se prenijeti između dva udaljena računala.
Drugi dio daje informacije o ciljnom udaljenom sustavu na koji se datoteka treba kopirati.
Primjer:
scp -r [email protected]:gaurav [email protected]:/team
Ovdje ćemo rekurzivno kopirati direktorij pod nazivom 'gaurav' s lokalnog sustava na udaljeni sustav. Datoteka će se kopirati u mapu 'tim' na udaljenom sustavu.
Izlaz:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] lozinka: 1.py 100% 134 261.3KB/s varijable. 100% 377 949.2KB/s 00:00 abc.txt 100% 0 0.0KB/s 00:00 ath.html 100% 199KB 41.8MB/s 00:00 gaurav@ubuntu:~$
Ovdje smo koristili scp
naredba na lokalnom sustavu za prijenos direktorija pod nazivom 'gaurav' s jednog udaljenog poslužitelja na drugi.
Prenesite datoteke s udaljenog sustava na vaš lokalni sustav
Možete jednostavno prenijeti datoteke ili direktorije s udaljenog sustava na vaš lokalni sustav pomoću scp
naredba. Jednostavnijim riječima, možete preuzeti više datoteka ili direktorija s udaljenog poslužitelja na vaš lokalni sustav pomoću scp
naredba.
Opća sintaksa:
scp udaljeno_username@user_host:/files/file.txt /[mapa_lokalnog_sustava]
Izlaz:
gaurav@ubuntu:~$ scp [email protected]:how.txt . lozinka [email protected]: how.txt 100% 11 0,1 KB/s 00:00 gaurav@ubuntu:~$
Ovdje sam preuzeo (kopirao) datoteku s udaljenog poslužitelja u svoj kućni direktorij. Stoga sam koristio točku (.
) da navedem u naredbi za kopiranje datoteke u moj početni direktorij.
Uzorak izlaza:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11. listopada 6. 09:49 how.txt gaurav@ubuntu:~$
Ovdje je datoteka sada kopirana u moj kućni direktorij s udaljenog poslužitelja.
Na isti način možete preuzeti više datoteka ili direktorija s udaljenog poslužitelja pomoću scp
naredbu s odgovarajućim opcijama.
Sažimanje datoteka za brži prijenos
Ponekad prijenos velikih datoteka može biti dugotrajan. Ovaj se problem može riješiti tijekom korištenja scp
naredba s -C
(velika slova C
) opcija.
Koristiti -C
opcija, komprimira datoteke veće veličine što olakšava brži prijenos i time štedi vrijeme.
Jedna zanimljiva činjenica o ovoj opciji je da se datoteka kopira s izvornom veličinom na odredišnom sustavu, ali tijekom procesa prijenosa, veličina je komprimirana kako bi se omogućio brži prijenos. Dakle, kompresija se vrši samo na mreži.
Opća sintaksa:
scp -C [naziv_datoteke] korisničko_ime@korisnički_host:[ciljna_mapa]
Pogledajmo usporedni primjer da bismo razumjeli razliku.
Prijenos bez -C opcije:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Izvršavanje: program /usr/bin/ssh host 68.183.82.183, root korisnika, naredba scp -v -r -t tim OpenSSH_7.6p1 Ubuntu-4ubuntu 3, OpenSSL 1.0.2n 7. prosinca 2017. debug1: Čitanje konfiguracijskih podataka /home/trinity/.ssh/config debug1: Čitanje konfiguracijskih podataka /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config redak 19: Primjena opcija za * debug1 : Povezivanje na 68.183.82.183 [68.183.82.183] port 22. debug1: Veza uspostavljena. debug1: client_input_channel_req: kanal 0 rtype exit-status reply 0 debug1: kanal 0: slobodan: klijentska sesija, kanali 1 debug1: fd 0 brisanje O_NONBLOCK debug1: fd 1 brisanje O_NONBLOCK1 Preneseno: poslano 5045 sekunde, primljeno od 5045 sekundi. u sekundi: poslano 100693,7, primljeno 53,7 debug1: Izlazni status 0 gaurav@ubuntu:~$
Iz gornjeg izlaza možemo vidjeti da je vrijeme potrebno za prijenos 74,6 sekundi. Pokušat ćemo prenijeti istu datoteku pomoću opcije -C i uočiti razliku.
Prijenos s opcijom -C:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Izvršavanje: program /usr/bin/ssh host 68.183.82.183, korisnik root, naredba scp -v -r -t tim OpenSSH_7.6p1 Ubuntu-4ub 3, OpenSSL 1.0.2n 7. prosinca 2017. debug1: Čitanje konfiguracijskih podataka /home/trinity/.ssh/config debug1: Čitanje konfiguracijskih podataka /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config redak 19: Primjena opcija za * debug1 : Povezivanje na 68.183.82.183 [68.183.82.183] port 22. debug1: Veza uspostavljena. . . webupload.img 100% 1834KB 98.7KB/s 00:18 Načini slanja datoteka: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB/s: Šaljemo datoteku C0664 1877552: C0664 1877552 router.img router.img 100% 1833KB/slanje datoteke: 1060 1060. 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-0p-T-07 100% 3666KB 218,5 KB/s 00:16 Sink: E debug1: client_input_channel_req: kanal 0 rtype exit-status reply 0 debug1: kanal 0: slobodan: klijentska sesija, kanali 1 debug1: fd NOgNBLOCK brisanje O de_NOBLOCK Obrisanje Preneseno: poslano 7518864, primljeno 3828 bajtova, za 51,0 sekundi Bajtovi u sekundi: poslano 100245,4, primljeno 51,0 debug1: Izlazni status 0 debug1: komprimiranje odlaznih: neobrađeni podaci 7511925, komprimirani 7513136 7513136 komprimirani 7513136 podataka: komprimirani 1 rabug faktor 1, kompresirani faktor 1 ra7 999, faktor 0,68 gaurav@ubuntu:~$
Ovdje to možemo lako uočiti koristeći -C
opcija s scp
naredba nam je omogućila komprimiranje datoteke preko mreže i tako se pokazalo kao opcija za uštedu vremena.
Korištenje drugog ssh porta za prijenos datoteka
Tijekom korištenja scp
naredba zadani port koji se postavlja je luka 22
. Korisnik ima slobodu prilagoditi ovaj izbor porta. Možete koristiti -P
(opcija P velikim slovima) s scp
naredbu za korištenje porta po svom izboru.
Opća sintaksa:
cp -P [novi_broj_porta] [naziv_datoteke/ime_direktorija] udaljeni_korisnik@host:[odredišna_mapa]
Primjer:
scp -P 4248 dlink [email protected]:tim
Koristeći gornju naredbu, datoteka će se prenijeti na udaljeni poslužitelj. Ali ovaj put će se koristiti luka luka 4248
umjesto zadanog luka 22
.
Zaključak
Nakon što smo prošli kroz ovaj vodič, naučili smo o dinamičkoj prirodi scp
naredba koja se koristi za prijenos ili kopiranje datoteka s jednog sustava na drugi. Ova se opcija također može koristiti za preuzimanje datoteka ili direktorija s udaljenog poslužitelja. Dakle, možemo zaključiti da scp
naredba se pokazuje vrlo korisnom za prijenos datoteka kada morate istovremeno rukovati više od jednog sustava kao i udaljenim poslužiteljima.