Kuinka siirtää tiedostoja kahden tietokoneen välillä nc- ja pv-komentojen avulla


Hei Linux-lukijat, tuon teille vielä yhden upean artikkelin vähemmän tunnetuista Linux-apuohjelmista, joista sinun on tiedettävä.

Tässä artikkelissa selitetään, kuinka siirrät tiedostoja kahden Linux-tietokoneen välillä käyttämällä nc (verkkoapuohjelma) ja pv (putki katselu) -komentoja, ennen kuin siirryt eteenpäin, selitän, mitkä nämä kaksi komentoa ovat.

nc tarkoittaa Netcatia ja mainitsee usein, että "Sveitsin armeijan veitsi" on verkkotyökalu, jota käytetään verkon virheenkorjaukseen ja tutkintaan. Sitä käytetään myös verkkoyhteyksien luomiseen TCP: tä tai UDP: tä käyttäen, porttien skannaukseen, tiedostojen siirtoon ja muuhun. Se on luotu luotettavaksi taustakuvaksi ja sitä käytetään erityisesti ohjelmissa ja komentosarjoissa, koska se voi luoda melkein minkä tahansa verkkoyhteyden ja sillä on useita sisäänrakennettuja ominaisuuksia.

pv lyhyesti Pipe Viewer on päätelaitteisiin perustuva työkalu putkilinjan kautta lähetettävän datan etenemisen seuraamiseen. Sen avulla käyttäjä voi nähdä tietojen etenemisen edistymispalkin avulla, näyttää kuluneen ajan, valmistuneen prosenttimäärän, nykyisen siirtonopeuden, siirretyn tiedon kokonaismäärän ja Arvioitu aika prosessin loppuun saattamiseksi.

Siirrytään nyt eteenpäin ja katsotaan, kuinka voimme yhdistää molemmat komennot tiedostojen siirtämiseen kahden Linux-tietokoneen välillä, tässä artikkelissa käytämme kahta Linux-konetta seuraavasti:

Machine A with IP : 192.168.0.4
Machine B with IP : 192.168.0.7

Tilanteissa, joissa tietoturva on tärkeämpää, käytä aina scp: tä SSH: n kautta.

Aloitetaan nyt todellisesta helpposta esimerkistä nc- ja pv-komennoista, mutta ennen kuin molemmat apuohjelmat on asennettava järjestelmään, ellei asenna niitä vastaavalla jakelupaketinhallintatyökalulla, kuten ehdotettiin:

# yum install netcat pv        [On RedHat based systems]
# dnf install netcat pv        [On Fedora 22+ versions]
# apt-get install netcat pv    [On Debian and its derivatives]

Kuinka siirtää tiedostoja kahden Linux-koneen välillä?

Oletetaan, että haluat lähettää yhden suuren tiedoston nimeltä CentOS-7-x86_64-DVD-1503.iso tietokoneelta A B: lle verkon kautta, nopein tapa saavuttaa tämä käyttämällä nc-verkkoapuohjelmaa lähetä tiedostoja TCP-verkon kautta, pv seurataksesi tietojen etenemistä ja terva-apuohjelma pakkaamaan tietoja siirtonopeuden parantamiseksi.

Kirjaudu sisään ensin koneeseen A, jonka IP-osoite on 192.168.0.4, ja suorita seuraava komento.

# tar -zcf - CentOS-7-x86_64-DVD-1503.iso | pv | nc -l -p 5555 -q 5

Haluan selittää yllä olevassa komennossa käytetyt vaihtoehdot:

  1. tar -zcf = tar on nauha-arkisto-apuohjelma, jota käytetään arkistotiedostojen ja argumenttien pakkaamiseen/purkamiseen - c luo uuden .tar-arkistotiedoston, -f määrittää arkistotiedoston tyypin ja -z-suodatinarkiston gzipin kautta.
  2. CentOS-7-x86_64-DVD-1503.iso = Määritä verkon kautta lähetettävä tiedostonimi, se voi olla tiedosto tai hakemiston polku.
  3. pv = Pipe Viewer tietojen etenemisen seuraamiseksi.
  4. nc -l -p 5555 -q 5 = Verkkotyökalu, jota käytetään datan lähettämiseen ja vastaanottamiseen TCP: n kautta ja argumentit -l, joita käytetään kuuntelemaan saapuvaa yhteyttä, -p 555 määrittää lähdeportin käytettäväksi ja -q 5 odottaa sekuntien määrä ja lopeta sitten.

Kirjaudu nyt koneeseen 'B' IP-osoitteella 192.168.0.7 ja suorita seuraava komento.

# nc 192.168.1.4 5555 | pv | tar -zxf -

Siinä kaikki, tiedosto siirretään tietokoneeseen B, ja voit seurata kuinka nopeasti operaatio suoritettiin. Nc: tä (ei vielä käsitelty, mutta kirjoitamme siitä pian) ja pv (olemme jo käsittäneet yksityiskohtaisen artikkelin tästä) komennot ovat tonnia enemmän, jos tiedät esimerkkejä, ilmoita siitä meille kommenttien kautta!