logo

ukaz rsync v Linuxu s primeri

rsync ali oddaljena sinhronizacija je programski pripomoček za sisteme, podobne Unixu, ki učinkovito sinhronizira datoteke in imenike med dvema gostiteljema ali napravama. Eden je vir ali lokalni gostitelj, s katerega se bodo datoteke sinhronizirale, drugi je oddaljeni gostitelj, na katerem bo potekala sinhronizacija. V bistvu obstajata dva načina rsync lahko kopira/sinhronizira podatke:

  • Kopiranje/sinhroniziranje na/iz drugega gostitelja prek katere koli oddaljene lupine, kot je npr ssh , rsh .
  • Kopiranje/sinhronizacija prek demona rsync z uporabo TCP.

Rsync je znan po svojih algoritem delta prenosa , v kateri kopira samo razlike med izvornimi datotekami, ki so prisotne v lokalnem gostitelju, in obstoječimi datotekami v ciljnem ali oddaljenem gostitelju.



primer:

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

Kaj se zgodi tukaj:

Rsync bo najprej uporabil SSH za povezavo kotuser>na oddaljenega gostitelja in bo zahtevaluser's>geslo. Ko se vzpostavi povezava, bo poklical rsync oddaljenega gostitelja, nato pa bosta programa določila, katere dele lokalne datoteke je treba kopirati, da se oddaljena datoteka ujema z lokalno. Upoštevajte naslednje vedenje rsync:



java različica linux
  • Datoteke, ki ne obstajajo na oddaljenem gostitelju, se kopirajo.
  • Datoteke, ki so bile posodobljene, bodo sinhronizirane, rsync bo na oddaljenega gostitelja kopiral samo spremenjene dele datotek.
  • datoteke, ki so popolnoma enake, se ne kopirajo na oddaljenega gostitelja.

Sintaksa ukaza `rsync` v Linuxu

rsync [options] source [destination]>

Možnost na voljo v ukazu `rsync` v Linuxu

Opcije

Opis

a, – arhiv



To je enakovredno uporabi -rlptgoD . Arhivski način vključuje vse potrebne možnosti, kot je rekurzivno kopiranje datotek, pri čemer se ohrani skoraj vse (kot so simbolične povezave, dovoljenja za datoteke, lastništvo uporabnikov in skupin ter časovni žigi).

-v, –besedno

Rsync privzeto deluje tiho. Uporaba ene same možnosti -v zagotavlja informacije o prenesenih datotekah in povzetek na koncu. Če dodate dve možnosti -v, dobite posodobitve statusa delta-prenosa in preskočenih datotek, skupaj z več informacijami na koncu. Za razhroščevanje rsync se običajno uporablja več možnosti -v.

-h, –človeku berljiva oblika

Izhodi v človeku berljivi obliki.

-z, – stisniti

Stisnite podatke datoteke med prenosom

Primeri

Uporaba `rsync` kot ukaza seznama

Če je navedena samo izvorna pot, je vsebina vira navedena v izhodnem formatu, podobnemls -l>.

rsync foo/>

Zgornji ukaz bo prikazal seznam datotek in imenikov v imeniku foo .

Izhod:

Kopirajte/sinhronizirajte datoteke in imenik lokalno

Če niti izvorna niti ciljna pot ne določa oddaljenega gostitelja, se ukazi rsync obnašajo kot ukaz za kopiranje.

rsync -avh foo/ bar/>

Zgornji ukaz bo kopiral/sinhroniziral vse datoteke in imenike v imenikufoo>v imenik bar . Če ciljni imenik ni prisoten (tukajbar>), rsync samodejno ustvari enega in kopira vse podatke v njem.

Izhod:

Rsync z uporabo ssh

Obstajata dva različna načina, da rsync vzpostavi stik z oddaljenim sistemom:

  • Uporaba programa oddaljene lupine kot transporta (kot nprssh>(Secure Shell) ozrsh>(Remote Shell)).
  • Neposredni stik z demonom rsync prek TCP.

Tukaj bomo razpravljali o rsync prek ssh.

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

Če želite določiti vrsto protokola, ki bo uporabljen,-e>uporabljena možnost.

Izhod:

Rsync s posebnimi dovoljenji za datoteke

Če želimo sinhronizirati datoteke z lokalnim ali oddaljenim gostiteljem z dovoljenji datotek, ki se spreminjajo. Uporabiti je treba naslednji ukaz.

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

Zgornji ukaz bo sinhroniziral vse datoteke v imeniku /foo z datotekami v imeniku /tmp vremote-host>z vsemi datotekami v lasti USER s skupino GROUP.

Izhod:

Opomba: Theuser>ingroup>mora biti že ustvarjen v oddaljenem gostitelju.

Rsync z --ignore-existing-files>

Že obstoječe datoteke na destinaciji lahko tudi preskočimo. To lahko na splošno uporabimo, ko izvajamo varnostno kopiranje z uporabo –link-dest možnost, medtem ko nadaljujete z varnostnim kopiranjem, ki je bilo prekinjeno.

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

Torej bodo vse datoteke, ki ne obstajajo na cilju, prekopirane. Tukaj sem izbrisalgeeksforgeeks>mapo iz imenikafoo>, zato mora kopirati samogeeksforgeeks>imenik.

Opomba: S tem ne prezrete obstoječih imenikov, sicer ne bo nič narejeno. Tudi če je v datoteki v lokalnem gostitelju nekaj sprememb, še vedno ne bo sinhronizirana, če je prisotna na oddaljenem gostitelju.

Izhod:

Pokaži napredek med prenosom

Za prikaz napredka med prenosom podatkov iz lokalnega gostitelja na oddaljenega gostitelja lahko uporabimo-–progress>možnost.

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

Ko se prenos za določeno datoteko konča, rsync izda vrstico s povzetkom, kot je prikazano spodaj.

Izhod:

Na zgornji sliki, če pogledamo datoteko/foo/file2>, to nam pove

  • Datoteka je bila skupaj dolga 44 bajtov.
  • Povprečna hitrost prenosa za celotno datoteko je bila 42,97 kilobajtov na sekundo v 0:00:00 sekundah, ki so bile potrebne za dokončanje.
  • To je bil že drugi prestop v tem času rsync sejo.
  • Od skupno 13 datotek na seznamu datotek je na voljo še 10 datotek, ki jih mora oddaljeni gostitelj preveriti (da vidi, ali so posodobljene ali ne).
  • Posodobite daljinski upravljalnik samo, če je v lokalnem datotečnem sistemu novejša različica:
    Če želimo preko oddaljenega gostitelja kopirati datoteke, ki so bile nedavno posodobljene v lokalnem datotečnem sistemu. Končano je z -nadgradnja zastava. Obnašanje je zdaj takšno:
    • Datoteke, ki ne obstajajo na oddaljenem gostitelju, se kopirajo.
    • Datoteke, ki obstajajo na lokalnem in oddaljenem mestu, vendar imajo novejši časovni žig na lokalnem gostitelju, se prekopirajo na oddaljenega gostitelja. (Nasprotno pa se datoteke s starejšim časovnim žigom ne kopirajo).

    Tukaj sem naredil nekaj sprememb datoteka1 in datoteka2 , vendar spremembe v datoteka2 so bile narejene pred kratkim. Torej samo datoteka2 bo sinhronizirano.

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

    Izhod: posodobitev rsync

    Samodejno izbriši datoteke z lokalnega gostitelja po uspešnem prenosu

    Recimo, da imamo spletni strežnik in strežnik za varnostno kopiranje ter smo ustvarili dnevno varnostno kopijo in jo sinhronizirali z našim strežnikom za varnostno kopiranje, potem pa ne želimo obdržati lokalne kopije varnostne kopije v našem spletnem strežniku. Torej, namesto da ga ročno izbrišemo po uspešnem prenosu, lahko uporabimo--remove-source-files>zastavico za samodejno brisanje datotek s spletnega strežnika.

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

    Izhod:

    Opomba: S tem boste izbrisali samo datoteke in ne imenikov.

    Izbrišite datoteke, ki so bile izbrisane na lokalnem gostitelju

    Če so nekatere datoteke izbrisane na lokalnem gostitelju in želimo, da se to posodobi tudi na oddaljenem gostitelju, moramo uporabiti--delete>možnost.

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

    Izhod:

    Torej, tukaj datoteka1 , datoteka2 , datoteka3 so bile izbrisane na lokalnem gostitelju in kot je razvidno, so posodobljene tudi na oddaljenem gostitelju.

    Opomba: ` rsync` ne izbriše datotek samodejno, da sinhronizira imenike, ki so prisotni na obeh straneh.

    skener.naslednja java

    Izvajanje suhega zagona z `rsync`

    Suhi zagon povzroči, da `rsync` izvede poskusni zagon, ki ne naredi nobenih sprememb in prikaže skoraj enak rezultat, kot bi ga naredil pravi zagon. Običajno se uporablja z možnostmi -v, –verbose in/ali -i, –itemize-changes, da vidimo, kaj bi naredil ukaz `rsync`, preden ga dejansko zaženemo.

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

    Izhod:

    Zaključek

    V tem članku smo razpravljali o ukazu rsync v Linuxu, ki je vsestransko in zmogljivo orodje za sinhronizacijo datotek in imenikov med gostitelji ali stroji. S svojim algoritmom delta prenosa in različnimi možnostmi ponuja učinkovito sinhronizacijo podatkov, zmožnosti varnostnega kopiranja in upravljanje prenosa datotek. Z obvladovanjem ukaza rsync lahko uporabniki Linuxa zagotovijo konsistentnost datotek, optimizirajo prenos podatkov in poenostavijo potek dela za upravljanje podatkov.