Rsync (remote sync) je orodje za kopiranje in usklajevanje datotek med mapami, diski ali računalniki. Njegova največja prednost je pametno kopiranje: prenaša samo tiste dele datotek, ki so se spremenili, zato je pri velikih količinah podatkov veliko hitrejši od običajnega kopiranja. Prav zato je priljubljen za varnostne kopije.
rsync -avh izvorna_mapa/ ciljna_mapa/
Kako je zgrajen ukaz
Osnovna oblika je preprosta: izvor, cilj in zastavice. Najpogostejša kombinacija je -avh:
- a ohrani vse atribute (dovoljenja, čase, simbolne povezave),
- v prikaže potek izvajanja,
- h pa izpisuje velikosti v berljivi obliki (KB, MB).
Pomembna poševnica na koncu
Najpogostejša past pri rsync-u je poševnica na koncu izvorne poti. Z njo se kopira vsebina mape, brez nje pa mapa sama. Razlika je precejšnja zato je priporočljivo opraviti preizkus z zastavico -n (dry run - suhi tek), ki pokaže, kaj bi se preneslo, ne da bi se dejansko karkoli izvedlo.
rsync -avh dokumenti/ varnostna/ # kopira vsebino mape dokumenti rsync -avh dokumenti varnostna/ # kopira mapo dokumenti kot celoto rsync -avhn dokumenti/ varnostna/ # dry run: samo pokaže, brez kopiranja
Brisanje odvečnih datotek
Privzeto rsync ne briše datotek na ciljni lokaciji, ki na izvorni lokaciji ne obstajajo več. Z uporabo zastavice --delete postaneta mapi povsem enaki — kar izgine v izvoru, izgine tudi v cilju. Za varnostne kopije je ta zastavica nevarna, za zrcalne kopije pa prav priročna.
rsync -avh --delete dokumenti/ varnostna/ # cilj postane zrcalo izvora
Kopiranje preko omrežja
Rsync zna prenašati tudi preko SSH na drug računalnik ali strežnik. Prenaša se samo spremenjeni del vsake datoteke. Ravno zato so obsežna varnostna kopiranja prek omrežja precej hitrejša kot pri običajnem kopiranju.
rsync -avh dokumenti/ borut@192.168.1.50:/varnostna/ rsync -avh borut@192.168.1.50:/varnostna/dokumenti/ ./dokumenti/
Izključitev datotek
Z zastavico --exclude izpustimo, kar ne želimo kopirati. Navedemo lahko več vzorcev zaporedoma, za daljši seznam pa uporabimo datoteko z možnostjo --exclude-from.
rsync -avh --exclude='*.tmp' --exclude='cache/' dokumenti/ varnostna/
Zakaj rsync za varnostne kopije
Običajno kopiranje vedno prepiše vse od začetka. rsync pa si zapomni, kaj je že prenesel, in ob naslednjem zagonu prenese samo spremembe. Pri vsakodnevnih kopijah istih podatkov to pomeni minute namesto ur — ravno zato je rsync osnova številnih skript za samodejno varnostno kopiranje.
Zaradi svoje priročne sintakse je rsync orodje, ki ga je vredno znati na pamet: eno stikalo, ena poševnica in ena pot do zanesljive kopije.