rsync alebo vzdialená synchronizácia je softvérová pomôcka pre systémy typu Unix, ktorá efektívne synchronizuje súbory a adresáre medzi dvoma hostiteľmi alebo počítačmi. Jedným je zdroj alebo lokálny hostiteľ, z ktorého sa budú súbory synchronizovať, druhým je vzdialený hostiteľ, na ktorom bude prebiehať synchronizácia. V zásade existujú dva spôsoby, ako rsync dokáže kopírovať/synchronizovať dáta:
- Kopírovanie/synchronizácia do/z iného hostiteľa cez akýkoľvek vzdialený shell ssh , rsh .
- Kopírovanie/synchronizácia cez démona rsync pomocou TCP.
Rsync je známy svojim delta-prenosový algoritmus , v ktorom skopíruje iba rozdiely medzi zdrojovými súbormi prítomnými v lokálnom hostiteľovi a existujúcimi súbormi v cieľovom alebo vzdialenom hostiteľovi.
Príklad:
rsync local-file user@remote-host:remote-file>
Čo sa tu deje:
Rsync najprv použije SSH na pripojenie akouser>na vzdialený hostiteľ a požiada o touser's>heslo. Po pripojení vyvolá rsync vzdialeného hostiteľa a potom dva programy určia, ktoré časti lokálneho súboru treba skopírovať, aby sa vzdialený súbor zhodoval s lokálnym. Vezmite prosím na vedomie nasledujúce správanie rsync:
- Súbory, ktoré neexistujú na vzdialenom hostiteľovi, sa skopírujú.
- Súbory, ktoré boli aktualizované, budú synchronizované, rsync skopíruje iba zmenené časti súborov na vzdialený hostiteľ.
- súbory, ktoré sú úplne rovnaké, sa neskopírujú na vzdialený hostiteľ.
Syntax príkazu `rsync` v Linuxe
rsync [options] source [destination]>
Možnosť dostupné v príkaze `rsync` v systéme Linux
| možnosti | Popis |
|---|---|
| a, –archív | Toto je ekvivalentné s použitím -rlptgoD . Režim archívu obsahuje všetky potrebné možnosti, ako je rekurzívne kopírovanie súborov, čím sa zachová takmer všetko (ako sú symbolické odkazy, povolenia súborov, vlastníctvo používateľov a skupín a časové pečiatky). |
| -v, –verbózny | V predvolenom nastavení rsync funguje ticho. Použitie jedinej voľby -v poskytuje informácie o prenesených súboroch a zhrnutie na konci. Pridaním dvoch volieb -v získate aktualizácie stavu delta prenosu a vynechaných súborov spolu s ďalšími informáciami na konci. Na ladenie rsync sa zvyčajne používajú viaceré voľby -v. |
| -h, –ľudsky čitateľný formát | Výstupy vo formáte čitateľnom pre ľudí. príklady mooreovho stroja |
| -z, –komprimovať | Počas prenosu komprimujte údaje súboru |
Príklady
Použitie `rsync` ako príkazu zoznamu
Ak je zadaná iba zdrojová cesta, obsah zdroja je uvedený vo výstupnom formáte podobnom akols -l>.
rsync foo/>
Vyššie uvedený príkaz zobrazí zoznam súborov a adresárov prítomných v adresári foo .
Výkon:
Skopírujte/synchronizujte súbory a adresár lokálne
Ak ani zdrojová ani cieľová cesta neurčuje vzdialeného hostiteľa, príkazy rsync sa správajú ako príkaz na kopírovanie.
rsync -avh foo/ bar/>
Vyššie uvedený príkaz skopíruje/synchronizuje všetky súbory a adresáre nachádzajúce sa v adresárifoo>do adresára bar . Ak cieľový adresár neexistuje (tubar>), rsync automaticky vytvorí jeden a skopíruje všetky údaje v ňom.
Výkon:
Rsync pomocou ssh
Existujú dva rôzne spôsoby, ako môže rsync kontaktovať vzdialený systém:
- Použitie programu vzdialeného prostredia ako prenosu (ako napr
ssh>(Secure Shell) príprsh>(Vzdialený kryt)). - Kontaktovanie démona rsync priamo cez TCP.
Tu budeme diskutovať o rsync cez ssh.
rsync -avhze ssh /foo user@remote-host:/tmp/>
Ak chcete určiť typ protokolu, ktorý sa má použiť,-e>sa používa možnosť.
Výkon:
Rsync s konkrétnymi povoleniami pre súbory
Ak chceme synchronizovať súbory s lokálnym alebo vzdialeným hostiteľom s oprávneniami zmenených súborov. Musí sa použiť nasledujúci príkaz.
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>
Vyššie uvedený príkaz zosynchronizuje všetky súbory v adresári /foo so súbormi prítomnými v adresári /tmp vremote-host>so všetkými súbormi, ktoré vlastní USER so skupinou GROUP.
Výkon:
Poznámka: Theuser>agroup>musí byť už vytvorený vo vzdialenom hostiteľovi.
Rsync s --ignore-existing-files>
Môžeme tiež preskočiť už existujúce súbory na cieľovom mieste. Vo všeobecnosti sa to dá použiť, keď vykonávame zálohovanie pomocou –odkaz-cieľ pri pokračovaní v zálohovaní, ktoré bolo prerušené.
koľko núl v 1 miliarde
rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>
Všetky súbory, ktoré v cieľovom mieste neexistujú, sa teda skopírujú. Tu som vymazalgeeksforgeeks>priečinok z adresárafoo>, takže by mal kopírovať iba súborgeeksforgeeks>adresár.
Poznámka: Toto neignoruje existujúce adresáre, inak sa nič neurobí. Aj keď sú nejaké zmeny v súbore v lokálnom hostiteľovi, stále by sa nesynchronizoval, ak je prítomný na vzdialenom hostiteľovi.
Výkon:
Zobrazte priebeh počas prenosu
Na zobrazenie postupu pri prenose údajov z lokálneho hostiteľa na vzdialený hostiteľ môžeme použiť-–progress>možnosť.
rsync -avhe ssh --progress /foo user@remote-host:/tmp/>
Keď sa prenos pre konkrétny súbor dokončí, rsync vypíše súhrnný riadok, ako je uvedené nižšie.
Výkon:
Na obrázku vyššie, ak sa pozrieme na súbor/foo/file2>, hovorí nám to
- Súbor mal celkovú dĺžku 44 bajtov.
- Priemerná rýchlosť prenosu celého súboru bola 42,97 kilobajtov za sekundu počas 0:00:00 sekúnd, ktoré trvalo dokončenie.
- Bol to druhý prestup počas prúdu rsync relácie.
- Existuje 10 ďalších súborov, ktoré musí vzdialený hostiteľ skontrolovať (aby zistil, či sú aktuálne alebo nie), ktoré zostávajú z celkového počtu 13 súborov v zozname súborov.
Ak chceme kopírovať súbory cez vzdialený hostiteľ, ktoré boli nedávno aktualizované na lokálnom súborovom systéme. Je hotovo s -aktualizácia vlajka. Správanie je teraz takéto:
- Súbory, ktoré neexistujú na vzdialenom hostiteľovi, sa skopírujú.
- Súbory, ktoré existujú na lokálnom aj vzdialenom serveri, ale majú novšiu časovú pečiatku na lokálnom hostiteľovi, sa skopírujú na vzdialeného hostiteľa. (Naopak, súbory, ktoré majú staršiu časovú pečiatku, sa neskopírujú).
Tu som urobil nejaké zmeny súbor1 a súbor2 , ale zmeny v súbor2 boli vykonané nedávno. Takže jedine súbor2 budú synchronizované.
rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>
Výkon: 
Automaticky odstrániť súbory z lokálneho hostiteľa po úspešnom prenose
Teraz predpokladajme, že máme webový server a záložný server a vytvorili sme dennú zálohu a synchronizovali ju s naším záložným serverom a potom nechceme uchovávať lokálnu kópiu zálohy na našom webovom serveri. Takže namiesto manuálneho odstránenia po úspešnom prenose môžeme použiť--remove-source-files>príznak automaticky odstráni súbory z webového servera.
rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>
Výkon:
Poznámka: Týmto sa odstránia iba súbory a nie adresáre.
Odstráňte súbory, ktoré boli odstránené na lokálnom hostiteľovi
Ak sú nejaké súbory odstránené na lokálnom hostiteľovi a chceme, aby sa aktualizovali aj na vzdialenom hostiteľovi, musíme použiť--delete>možnosť.
pole v java metódach
rsync -avhe ssh /foo --delete user@remote-host:/tmp/>
Výkon:
Takže tu súbor1 , súbor2 , súbor3 boli odstránené na lokálnom hostiteľovi a ako je vidieť, sú aktualizované aj na vzdialenom hostiteľovi.
Poznámka: ` rsync` nevymaže súbory automaticky, aby sa synchronizovali adresáre prítomné na oboch stranách.
Vykonanie suchého chodu s `rsync`
Spustenie nasucho spôsobí, že `rsync` vykoná skúšobnú prevádzku, ktorá nevykonáva žiadne zmeny a zobrazí takmer rovnaký výstup ako skutočný chod. Vo všeobecnosti sa používa s voľbami -v, –verbose a/alebo -i, –itemize-changes, aby ste videli, čo urobí príkaz `rsync` predtým, ako ho skutočne spustíte.
rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>
Výkon:
Záver
V tomto článku sme diskutovali o príkaze rsync v systéme Linux, ktorý je všestranným a výkonným nástrojom na synchronizáciu súborov a adresárov medzi hostiteľmi alebo počítačmi. Vďaka svojmu delta-prenosovému algoritmu a rôznym možnostiam ponúka efektívnu synchronizáciu dát, možnosti zálohovania a správu prenosu súborov. Zvládnutím príkazu rsync môžu používatelia Linuxu zabezpečiť konzistenciu súborov, optimalizovať prenos údajov a zefektívniť svoje pracovné postupy pri správe údajov.