Paprasta pamoka, padedanti perkelti failus į nuotolinę sistemą iš „Linux“ sistemos naudojant komandą scp.
SCP reiškia „saugi kopija“. scp
yra „Linux“ siūloma komandų eilutės programa, leidžianti perkelti failus ir katalogus iš vieno įrenginio į kitą per nesaugų tinklą.
Jei norite kopijuoti failus iš vienos sistemos į kitą, tada scp
gali būti labai gera galimybė saugiai perkelti failus ir katalogus. Kai du bendraujantys įrenginiai yra sujungti per tą patį tinklą, tada naudojant scp
tampa įmanoma.
Galite labai pasikliauti scp
konfidencialumo ir vientisumo komanda, nes perduodamas failas ir perkėlimui naudojamas slaptažodis yra užšifruoti. Jokia neskelbtina informacija nebus atskleista, net jei kas nors bandys šnipinėti srautą, kol vyksta šis perkėlimas.
Šioje pamokoje pamatysime įvairių pavyzdžių scp
komandą. Taip pat apžvelgsime kai kurias dažniausiai naudojamas parinktis scp
komandą.
Darbo su scp komanda pradžia
Naudojant scp
komanda galite perkelti failus / katalogus:
- Iš vietinio įrenginio į nuotolinį įrenginį.
- Tarp dviejų nuotolinių mašinų.
- Iš nuotolinio įrenginio į vietinį įrenginį.
Bendroji sintaksė:
scp [Parinktis] [šaltinio_failo_pavadinimas] [naudotojas@paskirties_host]:paskirties_aplankas
Leiskite mums suprasti pagrindinius šios komandos požymius.
- [šaltinio_failo_pavadinimas] Tai šaltinio failas, kurį norite nukopijuoti.
- [naudotojas@paskirties_priegloba] Tai yra nuotolinės sistemos, į kurią norite kopijuoti failą, vartotojo vardas. Nuotolinio įrenginio IP adresas taip pat naudojamas šiame atribute po „
@
‘ simbolis. - [paskirties aplanką] Tai yra katalogas, kuriame norite išsaugoti nukopijuotą failą.
Pastaba: dvitaškis (:
) simbolis naudojamas sintaksėje, nes jis atskiria vietines ir nutolusias vietas. Mes naudojame dvitaškį (:
) su nuotoline sistema, kad nurodytumėte katalogą, į kurį reikia kopijuoti failus. Jei nenurodysime tikslinio katalogo, failai bus nukopijuoti į nuotolinio sistemos vartotojo namų katalogą.
Parinktys, naudojamos su scp
Kai kurios iš populiariausių parinkčių, naudojamų su scp
komandos yra išvardytos žemiau.
Parinktis | apibūdinimas |
-C | leisti perduoti failo suglaudinimą |
-v | duoti žodinį išvestį |
-r | rekursyviai kopijuoti failus ir katalogus |
-p | išsaugoti failų leidimus, režimus ir prieigos laiką |
-P | pakeisti numatytąjį prievadą, kurį naudoja scp komandą |
Šių parinkčių pavyzdžius pamatysime toliau mokymo programoje.
Failo kopijavimas iš vietinės į nuotolinę sistemą
scp
leidžia perkelti failus iš vietinės sistemos į nuotolinę sistemą naudojant šią sintaksę. Tai leidžia perkelti arba įkelti failus į nuotolinį serverį.
Bendroji sintaksė:
scp [failo_pavadinimas] nuotolinis_vartotojas@host:[paskirties_aplankas]
Pavyzdys:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
Šiame pavyzdyje kopijuojame failą „apache-tomcat-9.0.8.tar.gz“ iš vietinės sistemos į nuotolinę sistemą, kurios IP adresas yra „143.110.178.221“.
Nuotolinėje sistemoje failas dabar bus nukopijuotas į katalogą pavadinimu „gaurav“.
Išvestis:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] slaptažodis: apache-tomcat-9.0.8.tar.gz 100% 798 KB /s 02:00 gaurav@ubuntu:~$
Patikrinkime failo išvestį nuotolinėje sistemoje.
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Taigi failas sėkmingai nukopijuojamas į nuotolinę sistemą naudojant scp
komandą.
Kelių failų kopijavimas į nuotolinę sistemą
Ankstesniame pavyzdyje išmokome perkelti failą į nuotolinę sistemą naudodami scp
komandą. Dabar pamatysime būdą, kaip perkelti kelis failus iš vietinės sistemos į nuotolinę sistemą naudojant šią komandą.
Bendroji sintaksė:
scp [failas 1] [failas 2] [failas n] remote_username@remote_host:[konkretus katalogas]
Supraskime šį paprastą procesą pateikdami pavyzdį.
Pavyzdys:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Čia keli failai paminėti komandoje, kurią reikia nukopijuoti nuotolinėje sistemoje.
Išvestis:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] slaptažodis: ath.html 100 %s 40 KB 9 KB 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:~$
Nuotolinėje sistemoje:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l iš viso 9800 -rw-r--r-- 1 šaknis 0 spalio 5 d. 08:58 abc.txt -rw-r-- r-- 1 šaknis 9818695 spalio 5 d. 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 šaknis 204057 spalio 5 d. 08:58 ath.html -rw-r-- r-- 1 šaknies šaknis 4360 spalio 5 d. 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Visi trys failai dabar nukopijuoti į nuotolinę sistemą.
Katalogo kopijavimas į nuotolinę sistemą
Tu gali naudoti scp
komanda, kad nukopijuotumėte katalogą iš vietinės sistemos į nuotolinę sistemą. Procesas panašus į failo kopijavimo procesą. Norėdami nukopijuoti ir katalogo turinį, galite naudoti -r
variantas su scp
komandą.
The -r
parinktis naudojama rekursyviai nukopijuoti katalogą. Tai reiškia, kad visi poaplankiai ir failai kataloge taip pat bus nukopijuoti.
Bendroji sintaksė:
scp -r [katalogo kelias] nuotolinis_naudotojovardas@remote_host:[tikslinis_katalogas]
Pavyzdys:
scp -r PycharmProjects [email protected]:gaurav
Išvestis:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] slaptažodis: __main__.py 100% 623 7.8KB/s 00:00 __ins 0 KB/0 00:00 __ins3 :00 užbaigimas.py 100 % 2929 28,1 KB/s 00:00 search.py 100 % 4728 38,7 KB/s 00:00 uninstall.py 100 % 2963 32,5 KB/s 00:00 hash.py 10 .py 61 KB/s s 00:00 check.py 100% 1430 16,8KB/s 00:00 configuration.py 100% 7125 50,4KB/s 00:00 show.py 100% 6289 49,8KB/s 00:00 download.py 623% 468 KB/s 00:00 gaurav@ubuntu:~$
Naudojant -r
variantas su scp
komanda nukopijuoja visus katalogo poaplankius ir failus iš vietinio kompiuterio į nuotolinę sistemą.
Rodoma išsami informacija apie scp procesą
Galite naudoti -v
(mažosios raidės v
) parinktį, kad būtų rodoma informacija apie failus, kurie yra kopijuojami nuotoliniu būdu arba vietinėje sistemoje. Šio tipo išvestis taip pat vadinama išsamia išvestimi.
Kai naudojama ši parinktis, visa derinimo informacija apie failą rodoma ekrane.
Bendroji sintaksė:
scp -v [failo_vardas] vartotojo_vardas@user_host:
Pavyzdys:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Išvestis:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Vykdoma: programa /usr/bin/ssh host 159.89.170.11, vartotojo šaknis, komanda scp -v -t komanda OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 2017 m. gruodžio 7 d. debug1: nuskaitomi konfigūracijos duomenys /home/gaurav/.ssh/config debug1: nuskaitomi konfigūracijos duomenys /etc/ssh/ssh_config debug1: /etc/sfshig 19 eilutė: * debug1 parinkčių taikymas: prisijungimas prie 159.89.170.11 [159.89.170.11] prievado 22. debug1: ryšys užmegztas. debug1: key_load_publik 0 kanalas rtipo išėjimo būsenos atsakymas 0 debug1: kanalas 0: nemokamas: kliento seansas, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Perduota: išsiųsta 9826736, gauta 4016 baitų per sekundę. 101133.9, gautas 41.3 debug1: Išėjimo būsena 0 gaurav@ubuntu:~$
Čia, išvestyje, galite pamatyti, kad failo derinimo informacija rodoma jūsų terminale, kai scp
komanda naudojama su -v
variantas.
Failų perkėlimas tarp dviejų nuotolinių kompiuterių
„Linux“ leidžia prisijungti prie kelių nuotolinių kompiuterių. Galite perkelti failus ir katalogus tarp dviejų nuotolinių kompiuterių, naudodami scp
komandą.
Bendroji sintaksė:
scp nuotolinis_naudotojas_1@host_1:/[failo_pavadinimas] nuotolinis_vartotojas_2@host_2:[aplankas, kurį reikia išsaugoti]
Sintaksė gali atrodyti šiek tiek platesnė, bet gana paprasta. Čia pirmoji komandos dalis suteikia įvestį apie nuotolinį vartotoją, iš kurio reikia nukopijuoti failą. dvitaškis (:) ir /
naudojamas norint nurodyti failo pavadinimą arba katalogo pavadinimą, kuris turi būti perkeltas tarp dviejų nuotolinių mašinų.
Antroje dalyje pateikiama informacija apie tikslinę nuotolinę sistemą, kurioje failas turi būti kopijuojamas.
Pavyzdys:
scp -r [email protected]:gaurav [email protected]:/komanda
Čia mes rekursyviai nukopijuosime katalogą pavadinimu „gaurav“ iš vietinės sistemos į nuotolinę sistemą. Failas bus nukopijuotas į nuotolinės sistemos aplanką „team“.
Išvestis:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] slaptažodis: 1.py 100% 134 261.3KB/s kintamieji 0:0 100% 377 949,2 KB/s 00:00 abc.txt 100% 0 0,0 KB/s 00:00 ath.html 100% 199 KB 41,8 MB/s 00:00 gaurav@ubuntu:~$
Čia mes panaudojome scp
komanda vietinėje sistemoje perkelti katalogą pavadinimu „gaurav“ iš vieno nuotolinio serverio į kitą.
Perkelkite failus iš nuotolinės sistemos į vietinę sistemą
Galite lengvai perkelti failus ar katalogus iš nuotolinės sistemos į vietinę sistemą naudodami scp
komandą. Paprasčiau tariant, galite atsisiųsti kelis failus arba katalogus iš nuotolinio serverio į savo vietinę sistemą naudodami scp
komandą.
Bendroji sintaksė:
scp remote_username@user_host:/files/file.txt /[folder_of_local_system]
Išvestis:
gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected] slaptažodis: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$
Čia aš atsisiunčiau (nukopijavau) failą iš nuotolinio serverio į savo namų katalogą. Todėl aš naudoju tašką (.
) komandoje nurodyti kopijuoti failą į mano namų katalogą.
Išvesties pavyzdys:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 spalio 6 d. 09:49 how.txt gaurav@ubuntu:~$
Čia failas dabar nukopijuotas į mano namų katalogą iš nuotolinio serverio.
Taip pat galite atsisiųsti kelis failus arba katalogus iš nuotolinio serverio naudodami scp
komandą su atitinkamomis parinktimis.
Failų suspaudimas, kad būtų galima greičiau perkelti
Kartais didelių failų perkėlimas gali užtrukti. Šią problemą galima išspręsti naudojant scp
komandą su -C
(didžiosios raidės C
) variantas.
Naudojant -C
parinktį, suspaudžia didesnio dydžio failus, o tai palengvina greitesnį perdavimą ir taip sutaupo laiko.
Vienas įdomus šios parinkties faktas yra tas, kad failas nukopijuojamas su pradiniu dydžiu paskirties sistemoje, tačiau perkėlimo proceso metu dydis suglaudinamas, kad būtų galima greičiau perkelti. Taigi suspaudimas atliekamas tik tinkle.
Bendroji sintaksė:
scp -C [failo_vardas] vartotojo_vardas@naudotojo_host:[tikslinis_aplankas]
Pažiūrėkime lyginamąjį pavyzdį, kad suprastume skirtumą.
Perkėlimas be -C parinkties:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Vykdoma: programa /usr/bin/ssh host 68.183.82.183, vartotojo root, komanda scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0 3, OpenSSL 1.0.2n 2017 m. gruodžio 7 d. debug1: nuskaitomi konfigūracijos duomenys /home/trinity/.ssh/config debug1: nuskaitomi konfigūracijos duomenys /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config 19 eilutė: *debug1 parinkčių taikymas : Prisijungiama prie 68.183.82.183 [68.183.82.183] prievado 22. debug1: ryšys užmegztas. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Perduota: 4 sekundė 047s, 6 siųsta 047s. per sekundę: išsiųsta 100693.7, gauta 53.7 debug1: Išėjimo būsena 0 gaurav@ubuntu:~$
Iš aukščiau pateiktos išvesties matome, kad perkėlimui reikalingas laikas yra 74,6 sekundės. Bandysime perkelti tą patį failą naudodami parinktį -C ir pastebėsime skirtumą.
Perkėlimas naudojant -C parinktį:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Vykdoma: programa /usr/bin/ssh host 68.183.82.183, vartotojo root, komanda scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu. 3, OpenSSL 1.0.2n 2017 m. gruodžio 7 d. debug1: nuskaitomi konfigūracijos duomenys /home/trinity/.ssh/config debug1: nuskaitomi konfigūracijos duomenys /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config 19 eilutė: *debug1 parinkčių taikymas : Prisijungiama prie 68.183.82.183 [68.183.82.183] prievado 22. debug1: ryšys užmegztas. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Siuntimo failų režimai: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB/100.:0618 failo režimai0.:0:68 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Kriauklė: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07. 100% 3666KB 218.5KB/s 00:16 Sink: E debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd_NOCK ON Clearing 0BLOCKNbug1 Perduota: išsiųsta 7518864, gauta 3828 baitai, per 51,0 sekundės Baitai per sekundę: išsiųsta 100245,4, gauta 51,0 derinimas1: Išėjimo būsena 0 debug1: suspausti išeinantys: neapdoroti duomenys 7511925, suspausti 7513136, suspausti 7513136, suspausti 1 veiksnys: debug7: 999, koeficientas 0,68 gaurav@ubuntu:~$
Čia galime lengvai pastebėti, kad naudojant -C
variantas su scp
komanda leido mums suspausti failą tinkle, todėl tai pasirodė esanti laiko taupymo parinktis.
Failų perdavimui naudokite kitą ssh prievadą
Naudodami scp
komandą numatytasis įdiegtas prievadas yra 22 uostas
. Vartotojas turi laisvę tinkinti šį prievado pasirinkimą. Galite naudoti -P
(didžiųjų raidžių P parinktis) su scp
komandą, kad galėtumėte naudoti pasirinktą prievadą.
Bendroji sintaksė:
cp -P [naujas_prievado_numeris] [failo_pavadinimas/katalogo_pavadinimas] nuotolinis_vartotojas@host:[paskirties_aplankas]
Pavyzdys:
scp -P 4248 dlink [email protected]:team
Naudojant aukščiau pateiktą komandą, failas bus perkeltas į nuotolinį serverį. Tačiau šį kartą bus naudojamas uostas 4248 prievadas
vietoj numatytojo 22 uostas
.
Išvada
Peržiūrėję šią mokymo programą sužinojome apie dinamišką šios programos prigimtį scp
komanda, naudojama failams perkelti arba kopijuoti iš vienos sistemos į kitą. Ši parinktis taip pat gali būti naudojama failams ar katalogams atsisiųsti iš nuotolinio serverio. Taigi galime daryti tokią išvadą scp
komanda yra labai naudinga perduodant failus, kai vienu metu turite tvarkyti daugiau nei vieną sistemą ir nuotolinius serverius.