rsync arba nuotolinis sinchronizavimas yra programinės įrangos įrankis, skirtas Unix tipo sistemoms, kuri efektyviai sinchronizuoja failus ir katalogus tarp dviejų pagrindinių kompiuterių arba mašinų. Vienas iš jų yra šaltinis arba vietinis kompiuteris, iš kurio bus sinchronizuojami failai, o kitas yra nuotolinis kompiuteris, kuriame bus sinchronizuojama. Iš esmės yra du būdai rsync gali kopijuoti / sinchronizuoti duomenis:
- Kopijavimas / sinchronizavimas į / iš kito pagrindinio kompiuterio per bet kokį nuotolinį apvalkalą, pvz., ssh , rsh .
- Kopijavimas / sinchronizavimas per rsync demoną naudojant TCP.
Rsync garsėja savo delta perdavimo algoritmas , kuriame jis nukopijuoja tik skirtumus tarp šaltinio failų, esančių vietiniame pagrindiniame kompiuteryje, ir esamų failų paskirties arba nuotolinio kompiuterio.
Pavyzdys:
rsync local-file user@remote-host:remote-file>
Kas atsitiko čia:
„Rsync“ pirmiausia naudos SSH, kad prisijungtų kaipuser>į nuotolinį prieglobą ir paprašysuser's>Slaptažodis. Prisijungus, jis iškvies nuotolinio pagrindinio kompiuterio rsync, o tada abi programos nustatys, kurias vietinio failo dalis reikia nukopijuoti, kad nuotolinis failas atitiktų vietinį. Atkreipkite dėmesį į šiuos rsync veiksmus:
- Nukopijuojami failai, kurių nėra nuotoliniame pagrindiniame kompiuteryje.
- Atnaujinti failai bus sinchronizuojami, rsync nukopijuos tik pakeistas failų dalis į nuotolinį pagrindinį kompiuterį.
- lygiai tokie patys failai nenukopijuojami į nuotolinį pagrindinį kompiuterį.
„rsync“ komandos sintaksė sistemoje „Linux“.
rsync [options] source [destination]>
Parinktis pasiekiama komandoje „rsync“ sistemoje „Linux“.
| Galimybės | apibūdinimas |
|---|---|
| a, –archyvas | Tai prilygsta naudojimui -rlptgoD . Archyvavimo režimas apima visas būtinas parinktis, pvz., rekursyvų failų kopijavimą, beveik visko išsaugojimą (pvz., simbolines nuorodas, failų leidimus, vartotojo ir grupės nuosavybę bei laiko žymes). |
| -v, -žodingas | Pagal numatytuosius nustatymus rsync veikia tyliai. Naudojant vieną -v parinktį, pateikiama informacija apie perkeltus failus ir santrauka pabaigoje. Pridėjus dvi -v parinktis, bus atnaujinta delta perdavimo ir praleistų failų būsena bei daugiau informacijos pabaigoje. rsync derinimui paprastai naudojamos kelios -v parinktys. |
| -h, -žmogaus skaitomas formatas | Išvestys žmogui suprantamu formatu. |
| -z, -suspausti | Perkėlimo metu suspauskite failo duomenis |
Pavyzdžiai
„rsync“ naudojimas kaip sąrašo komanda
Jei nurodytas tik šaltinio kelias, šaltinio turinys pateikiamas panašiu išvesties formatuls -l>.
rsync foo/>
Aukščiau pateikta komanda išvardins kataloge esančius failus ir katalogus foo .
Išvestis:
Kopijuoti / sinchronizuoti failus ir katalogą vietoje
Jei nei šaltinis, nei paskirties kelias nenurodo nuotolinio pagrindinio kompiuterio, rsync komandos veikia kaip kopijavimo komanda.
rsync -avh foo/ bar/>
Aukščiau pateikta komanda nukopijuos / sinchronizuos visus kataloge esančius failus ir katalogusfoo>į katalogą baras . Jei paskirties katalogo nėra (čiabar>), rsync automatiškai sukuria vieną ir nukopijuoja visus jame esančius duomenis.
Išvestis:
Rsync naudojant ssh
Yra du skirtingi būdai, kaip rsync susisiekti su nuotoline sistema:
- Naudojant nuotolinio apvalkalo programą kaip transportavimą (pvz.,
ssh>(Secure Shell) arbarsh>(Nuotolinis apvalkalas)). - Susisiekimas su rsync demonu tiesiogiai per TCP.
Čia mes aptarsime rsync per ssh.
rsync -avhze ssh /foo user@remote-host:/tmp/>
Norėdami nurodyti naudojamo protokolo tipą,-e>naudojamas variantas.
Išvestis:
Rsinchronizuokite su tam tikrais failų leidimais
Jei norime sinchronizuoti failus su vietiniu ar nuotoliniu kompiuteriu su keičiamų failų leidimais. Turi būti naudojama ši komanda.
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>
Aukščiau pateikta komanda sinchronizuos visus kataloge esančius failus /foo su failais, esančiais kataloge /tmp vidujeremote-host>su visais failais, priklausančiais USER su grupe GROUP.
Išvestis:
Pastaba: Theuser>irgroup>jau turi būti sukurta nuotoliniame pagrindiniame kompiuteryje.
Sinchronizuoti su --ignore-existing-files>
Taip pat galime praleisti paskirties vietoje jau esamus failus. Paprastai tai gali būti naudojama, kai kuriame atsargines kopijas naudodami –link-dest parinktį, tęsdami atsarginės kopijos vykdymą, kuri buvo nutraukta.
rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>
Taigi, visi failai, kurių nėra paskirties vietoje, bus nukopijuoti. Čia aš ištryniaugeeksforgeeks>aplanką iš katalogofoo>, todėl jis turėtų nukopijuoti tikgeeksforgeeks>katalogas.
java math.min
Pastaba: Tai neignoruoja esamų katalogų, kitaip nieko nebus padaryta. Net jei vietiniame pagrindiniame kompiuteryje yra tam tikrų failo pakeitimų, jis vis tiek nebus sinchronizuojamas, jei jis yra nuotoliniame pagrindiniame kompiuteryje.
Išvestis:
Rodyti pažangą perdavimo metu
Norėdami parodyti pažangą perduodant duomenis iš vietinio pagrindinio kompiuterio į nuotolinį pagrindinį kompiuterį, galime naudoti-–progress>variantas.
rsync -avhe ssh --progress /foo user@remote-host:/tmp/>
Kai konkretaus failo perkėlimas baigiamas, rsync išveda suvestinės eilutę, kaip parodyta toliau.
Išvestis:
Aukščiau pateiktame paveikslėlyje, jei pažvelgsime į failą/foo/file2>, tai mums sako
- Iš viso failas buvo 44 baitai.
- Vidutinis viso failo perdavimo greitis buvo 42,97 kilobaitai per sekundę per 0:00:00 sekundžių, kurių prireikė užbaigti.
- Tai buvo antrasis perkėlimas per srovę rsync sesija.
- Iš 13 failų sąraše esančių failų liko dar 10 failų, kuriuos turi patikrinti nuotolinis pagrindinis kompiuteris (siekdami sužinoti, ar jie yra atnaujinti, ar ne).
Jei norime nukopijuoti failus per nuotolinį pagrindinį kompiuterį, kurie neseniai buvo atnaujinti vietinėje failų sistemoje. Tai daroma su – atnaujinimas vėliava. Dabar elgesys yra toks:
- Nukopijuojami failai, kurių nėra nuotoliniame pagrindiniame kompiuteryje.
- Failai, esantys tiek vietiniame, tiek nuotoliniame kompiuteryje, bet turintys naujesnę vietinio pagrindinio kompiuterio laiko žymą, nukopijuojami į nuotolinį pagrindinį kompiuterį. (Atvirkščiai, failai, turintys senesnę laiko žymą, nėra kopijuojami).
Čia aš padariau keletą pakeitimų failas1 ir failas2 , bet pokyčiai failas2 buvo atlikti neseniai. Taigi tik failas2 bus sinchronizuojamas.
rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>
Išvestis: 
Sėkmingai perkėlus, automatiškai ištrinkite failus iš vietinio pagrindinio kompiuterio
Tarkime, kad turime žiniatinklio serverį ir atsarginį serverį, kasdien kūrėme atsarginę kopiją ir sinchronizavome ją su atsarginės kopijos serveriu, o tada nenorime saugoti vietinės atsarginės kopijos savo žiniatinklio serveryje. Taigi, užuot jį ištrynę rankiniu būdu po sėkmingo perdavimo, galime naudoti--remove-source-files>pažymėkite, kad automatiškai ištrintumėte failus iš žiniatinklio serverio.
rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>
Išvestis:
Pastaba: Taip bus ištrinti tik failai, o ne katalogai.
Ištrinkite failus, kurie buvo ištrinti vietiniame pagrindiniame kompiuteryje
Jei vietiniame pagrindiniame kompiuteryje yra keletas failų, kurie yra ištrinti ir mes norime, kad jie būtų atnaujinti ir nuotoliniame pagrindiniame kompiuteryje, turime naudoti--delete>variantas.
rsync -avhe ssh /foo --delete user@remote-host:/tmp/>
Išvestis:
Taigi, čia failas1 , failas2 , failas3 buvo ištrinti vietiniame pagrindiniame kompiuteryje ir, kaip matyti, atnaujinami ir nuotoliniame pagrindiniame kompiuteryje.
Pastaba: ` rsync` automatiškai neištrina failų, kad būtų sinchronizuojami abiejose pusėse esantys katalogai.
Atliekamas sausas važiavimas naudojant „rsync“.
Sausasis paleidimas priverčia „rsync“ atlikti bandomąjį paleidimą, kuris neatlieka jokių pakeitimų ir rodo beveik tokią pat išvestį, kaip ir atliekant tikrąjį paleidimą. Paprastai jis naudojamas su -v, -verbose ir (arba) -i, -itemize-changes parinktimis, kad būtų galima pamatyti, ką komanda „rsync“ darytų prieš ją paleidžiant.
rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>
Išvestis:
Išvada
Šiame straipsnyje aptarėme rsync komandą Linux sistemoje, kuri yra universalus ir galingas įrankis failams ir katalogams sinchronizuoti tarp pagrindinių kompiuterių ar mašinų. Su delta perdavimo algoritmu ir įvairiomis parinktimis jis siūlo efektyvų duomenų sinchronizavimą, atsargines kopijas ir failų perdavimo valdymą. Įvaldydami rsync komandą, Linux vartotojai gali užtikrinti failų nuoseklumą, optimizuoti duomenų perdavimą ir supaprastinti duomenų valdymo darbo eigą.