logo

rsync-komento Linuxissa esimerkkien kanssa

rsync tai etäsynkronointi on ohjelmistoapuohjelma Unix-tyyppisille järjestelmille, joka synkronoi tehokkaasti tiedostoja ja hakemistoja kahden isännän tai koneen välillä. Toinen on lähde tai paikallinen isäntä, josta tiedostot synkronoidaan, toinen on etäisäntä, jolla synkronointi tapahtuu. On periaatteessa kaksi tapaa, joilla rsync voi kopioida/synkronoida tietoja:

  • Kopiointi/synkronointi toiselle isännälle/toisesta isännästä minkä tahansa etäkäskyn, kuten esim ssh , rsh .
  • Kopiointi/synkronointi rsync-daemonin kautta TCP:tä käyttäen.

Rsync on kuuluisa delta-siirtoalgoritmi , jossa se kopioi vain erot paikallisessa isännässä olevien lähdetiedostojen ja kohteen tai etäisännän olemassa olevien tiedostojen välillä.



Esimerkki:

rsync local-file user@remote-host:remote-file>

Mitä täällä tapahtuu:

Rsync käyttää ensin SSH:ta yhteyden muodostamiseenuser>etäisäntälle ja pyytääuser's>Salasana. Kun yhteys on muodostettu, se käynnistää etäisännän rsyncin, ja sitten nämä kaksi ohjelmaa määrittävät, mitkä paikallisen tiedoston osat on kopioitava, jotta etätiedosto vastaa paikallista tiedostoa. Huomaa seuraava rsyncin toiminta:



  • Tiedostot, joita ei ole etäisännässä, kopioidaan.
  • Päivitetyt tiedostot synkronoidaan, rsync kopioi vain tiedostojen muuttuneet osat etäisäntään.
  • täsmälleen samoja tiedostoja ei kopioida etäisäntään.

rsync-komennon syntaksi Linuxissa

rsync [options] source [destination]>

Vaihtoehto saatavana rsync-komennolla Linuxissa

Vaihtoehdot

Kuvaus

jquery napsautuksella

a, -arkisto



Tämä vastaa käyttöä -rlptgoD . Arkistotila sisältää kaikki tarvittavat vaihtoehdot, kuten tiedostojen kopioinnin rekursiivisesti, lähes kaiken säilyttämisen (kuten symboliset linkit, tiedostooikeudet, käyttäjien ja ryhmien omistajuudet ja aikaleimat).

-v, -sanallinen

Oletuksena rsync toimii äänettömästi. Yhden -v-vaihtoehdon käyttäminen antaa tietoja siirretyistä tiedostoista ja yhteenvedon lopussa. Kahden -v-vaihtoehdon lisääminen antaa tilapäivitykset delta-lähetyksestä ja ohitetuista tiedostoista sekä lisätietoja lopussa. Useita -v-vaihtoehtoja käytetään yleensä rsyncin virheenkorjaukseen.

-h, -ihmisen luettava muoto

Tulosteet ihmisen luettavassa muodossa.

-z, -pakkaus

Pakkaa tiedostotiedot siirron aikana

Esimerkkejä

rsyncin käyttäminen luettelokomentona

Jos vain lähdepolku on määritetty, lähteen sisältö luetellaan samankaltaisessa tulostusmuodossa kuinls -l>.

rsync foo/>

Yllä oleva komento luettelee hakemistossa olevat tiedostot ja hakemistot foo .

Lähtö:

Kopioi/synkronoi tiedostot ja hakemisto paikallisesti

Jos lähde- tai kohdepolku ei määritä etäisäntää, rsync-komennot toimivat kuin kopiointikomento.

rsync -avh foo/ bar/>

Yllä oleva komento kopioi / synkronoi kaikki hakemistossa olevat tiedostot ja hakemistotfoo>hakemistoon baari . Jos kohdehakemistoa ei ole (tästäbar>), rsync luo sellaisen automaattisesti ja kopioi kaikki sen tiedot.

Lähtö:

Rsync ssh:lla

Rsyncillä on kaksi eri tapaa ottaa yhteyttä etäjärjestelmään:

  • Etäkuoriohjelman käyttäminen siirtona (esimssh>(Secure Shell) tairsh>(Remote Shell)).
  • Yhteyden ottaminen rsync-demoniin suoraan TCP:n kautta.

Täällä keskustelemme rsync yli ssh.

rsync -avhze ssh /foo user@remote-host:/tmp/>

Määrittääksesi käytettävän protokollan tyypin,-e>vaihtoehtoa käytetään.

Lähtö:

Rsync tietyillä tiedostooikeuksilla

Jos haluamme synkronoida tiedostoja paikalliseen tai etäisäntään muutettavien tiedostojen käyttöoikeuksilla. Seuraavaa komentoa on käytettävä.

rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

Yllä oleva komento synkronoi kaikki hakemistossa olevat tiedostot /foo hakemistossa olevien tiedostojen kanssa /tmp inremote-host>kaikki tiedostot, jotka omistaa USER ryhmässä GROUP.

Lähtö:

päivämäärien erot excelissä

Huomautus: Theuser>jagroup>on jo luotu etäisännässä.

Rsync kanssa --ignore-existing-files>

Voimme myös ohittaa kohteen jo olemassa olevat tiedostot. Tätä voidaan yleensä käyttää, kun teemme varmuuskopioita käyttämällä –link-dest vaihtoehto, jatkaen samalla keskeytettyä varmuuskopiointia.

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>

Joten kaikki tiedostot, joita ei ole kohteessa, kopioidaan. Tästä olen poistanutgeeksforgeeks>kansio hakemistostafoo>, joten sen pitäisi kopioida vaingeeksforgeeks>hakemistosta.

Huomautus: Tämä ei ohita olemassa olevia hakemistoja, tai mitään ei tehdä. Vaikka paikallisessa isännässä tapahtuisi joitain muutoksia tiedostoon, sitä ei silti synkronoida, jos se on etäisännässä.

Lähtö:

Näytä edistyminen siirron aikana

Voimme näyttää edistymisen siirrettäessä tietoja paikallisesta isännästä etäisännälle-–progress>vaihtoehto.

rsync -avhe ssh --progress /foo user@remote-host:/tmp/>

Kun tietyn tiedoston siirto on valmis, rsync tulostaa yhteenvedon alla olevan kuvan mukaisesti.

Lähtö:

Yllä olevassa kuvassa, jos katsomme tiedostoa/foo/file2>, se kertoo meille sen

  • Tiedoston pituus oli yhteensä 44 tavua.
  • Koko tiedoston keskimääräinen siirtonopeus oli 42,97 kilotavua sekunnissa 0:00:00 sekunnin aikana, jonka se kesti.
  • Se oli toinen siirto virran aikana rsync istunto.
  • Tiedostoluettelon 13 tiedostosta on jäljellä vielä 10 tiedostoa, jotka etäisäntä voi tarkistaa (ovatko ne ajan tasalla vai eivät).
  • Päivitä kaukosäädin vain, jos paikallisessa tiedostojärjestelmässä on uudempi versio:
    Jos haluamme kopioida tiedostoja etäisännän kautta, jotka on päivitetty äskettäin paikallisessa tiedostojärjestelmässä. Se tehdään kanssa -päivittää lippu. Käyttäytyminen on nyt tällaista:
    • Tiedostot, joita ei ole etäisännässä, kopioidaan.
    • Tiedostot, jotka ovat olemassa sekä paikallisessa että etäkoneessa, mutta joilla on uudempi aikaleima paikallisessa isännässä, kopioidaan etäisäntään. (Päinvastoin, tiedostoja, joissa on vanhempi aikaleima, ei kopioida).

    Tässä tein joitain muutoksia tiedosto1 ja tiedosto2 , mutta muutokset tiedosto2 tehtiin äskettäin. Siis vain tiedosto2 synkronoidaan.

    rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>

    Lähtö: rsync-päivitys

    Poista tiedostot automaattisesti paikallisesta isännästä onnistuneen siirron jälkeen

    Oletetaan nyt, että meillä on verkkopalvelin ja varmuuskopiopalvelin ja loimme päivittäisen varmuuskopion ja synkronoimme sen varmuuskopiopalvelimemme kanssa, emmekä sitten halua säilyttää varmuuskopion paikallista kopiota verkkopalvelimellamme. Joten sen sijaan, että poistaisit sen manuaalisesti onnistuneen siirron jälkeen, voimme käyttää--remove-source-files>lippu poistaaksesi tiedostot automaattisesti verkkopalvelimelta.

    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    Lähtö:

    Huomautus: Tämä poistaa vain tiedostot, ei hakemistoja.

    Poista paikalliselta isännältä poistetut tiedostot

    Jos joitain tiedostoja on poistettu paikalliselta isännältä ja haluamme, että ne päivitetään myös etäisäntään, meidän on käytettävä--delete>vaihtoehto.

    rsync -avhe ssh /foo --delete user@remote-host:/tmp/>

    Lähtö:

    Joten tässä tiedosto1 , tiedosto2 , tiedosto3 poistettiin paikalliselta isännältä, ja kuten voidaan nähdä, päivitetään myös etäisännässä.

    Huomautus: ` rsync` ei poista tiedostoja automaattisesti synkronoidakseen molemmilla puolilla olevat hakemistot.

    Kuivaajon suorittaminen rsyncillä

    Kuivaajossa saa 'rsyncin' suorittamaan koeajon, joka ei tee muutoksia ja näyttää lähes saman tulosteen kuin todellinen ajo. Sitä käytetään yleensä -v, -verbose- ja/tai -i, -itemize-changes -valintojen kanssa, jotta nähdään, mitä rsync-komento tekisi ennen sen suorittamista.

    rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>

    Lähtö:

    Johtopäätös

    Tässä artikkelissa käsittelimme Linuxin rsync-komentoa, joka on monipuolinen ja tehokas työkalu tiedostojen ja hakemistojen synkronointiin isäntien tai koneiden välillä. Delta-siirtoalgoritminsa ja eri vaihtoehtojensa ansiosta se tarjoaa tehokkaan tiedon synkronoinnin, varmuuskopiointiominaisuudet ja tiedostojen siirron hallinnan. Hallitsemalla rsync-komentoa Linux-käyttäjät voivat varmistaa tiedostojen johdonmukaisuuden, optimoida tiedonsiirron ja virtaviivaistaa tiedonhallinnan työnkulkujaan.