Erinevus lehekülje "Rsync" redaktsioonide vahel

Allikas: Kuutõrvaja
(Kiiruse limiteerimine)
 
(ei näidata 3 kasutaja 80 vahepealset redaktsiooni)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  
Rsync on vaba tarkvara unixi laadsetele süsteemidele mis sünkroniseerib faile ja kaustu ühest asukohast teise. Kasutades kodeerimist vähendades infomahte.
+
Rsync on vabavara unixi laadsetele op süsteemidele, mis teeb andmete sünkroniseerimese arvutite vahel väga lihtsaks. Rsync kasutab kodeerimist ja ei tekita varundamisel duplikaate, vaid loob viiteid failide vahel, vähendades sedaviisi infomahte ja ka kettakasutust.
  
veebisait
+
Veebisait http://rsync.samba.org/ ja dokumentatsioon http://www.samba.org/rsync/documentation.html.
http://rsync.samba.org/
 
  
Lihtne näide rsync kasutamisest
+
Lihtne näide rsync kasutamisest:
  
sünkroniseerime faili lokaalsest masinast teise nimega host.ee
+
Sünkroniseerime faili lokaalsest masinast teise nimega host.ee
 
   
 
   
  rsync fail kasutaja@host.ee:
+
  rsync fail.laiend kasutaja@host.ee:
  
sünkroniseerime kausta lokaalsest masinast ümber
+
Sünkroniseerime kausta lokaalsest masinast teise
  
 
  rsync -a kaust kasutaja@host.ee:
 
  rsync -a kaust kasutaja@host.ee:
  
Sellise näite järgi on kõige lihtsam failide sünkroniseerimine. Toimib see samuti üle ssh ning on koormust tekitav viis.
+
Rsync toimib ka üle tavalise OpenSSH (Kuid on rohkem koormust tekitav).
  
===Põhilised võtmed===
+
===Olulisemad võtmed===
  
*--archive  -a arhiivi võti mida kasutades kindlustatakse kuupäevade õiguste omanike ja linkide säilumine soovituslik võti
+
*--archive  -a arhiivi võti mida kasutades kindlustatakse kuupäevade õiguste omanike ja linkide säilumine, soovituslik lisada igasuguste sünkroniseerimiste puhul.
 
*--verbose  -v protsessi kohta põhjalikuma info näitamine nt failinimekiri
 
*--verbose  -v protsessi kohta põhjalikuma info näitamine nt failinimekiri
 
*--progress ülekande progressi kohta info
 
*--progress ülekande progressi kohta info
 
*--stats ülevaatlikum statistika kulunud ajast ja failide hulgast
 
*--stats ülevaatlikum statistika kulunud ajast ja failide hulgast
 
*--compress -z toimub pakkimine enne ülekandmist
 
*--compress -z toimub pakkimine enne ülekandmist
*--delete -d kustutatakse mitte eksisteerivad failid eelnevast backupist
+
*--delete -d sihtkohast kustutatakse algallikas enam mitte eksisteerivad failid
*--exclude "*bak" mingite faililaiendite, failinimede ignoreerimine näiteks avi, mp3
+
*--exclude "*bak" mingite faililaiendite, failinimede ignoreerimine näiteks avi, mp3 võib määrata ka võtmega --exclude-from faili milles failides või kaustades asjadest mida ei varundata
 +
*--numeric-ids ei üritata failide UID/GID muuta sünkroniseeritava süsteemi kasutajate järgi ja jäetakse need puutumatuna
  
===rsync deemonina===
+
Veel mõned erandjuhtudel vajaminevad parameetrid
  
Vajalik näiteks varundusserverile. Rsync deemon kuulab
+
*-n Mille korral rsync lihtsalt ütleb mida ta teeks ilma reaalselt faile üle kandmata
pidevalt ja võimaldab parooliga ligipääsu lugemiseks/kirjutamiseks
+
*-W Teatab rsyncile kanda üle terve fail selle asemel, et kasutada oma block leveli võrdlemise vahendeid. Kui kasutada on väga kiire võrguühendus võib see võti muuta tööd kiiremaks kuna rsync ei pea faile kontrollima, kasutades rsynci üle interneti on tõenäoliselt seda võtit kasutada ebapraktiline
teatud kaustadele
+
*-c Käseb genereerida kõigi failide kontrollsummad. Kasutades seda võtit võib rsync muutuda üsnagi aeglaselt seega kasutada vaid tõsise vajaduse korral, näiteks kui kahtlus, et failide info on kuidagi rikutud.
 +
*-z suunab rsynci kasutama zlib pakkimist
 +
*-H, --hard-links Säilita hard lingid, vajalik nt kui ülekantavad andmed varundatud link-dest võtmega
 +
*-i - kui nö tavalise võtmekomplekti '-avH --numeric-ids' puhul ei esitata andmeid kui ainult faili metaandmed muutuvad, nt omanik, siis -i lisamisel esitatakse
 +
*-A --acls säilita acl-id
 +
*-X --xattrs säilitada laiendatud atribuudid
  
/etc/rsyncd.conf freebsdl /usr/local/etc/rsyncd.conf
+
Lisaks kui rsync teatab file has vanished tähendab seda, et failisüsteemis on sünkroniseerimise ajal tekkinud muudatusi
 +
 
 +
Tasub ettevaatlik ning tähelepanelik olla kaika (/) märgi kasutamisega. kui tahad kopeerida kataloogi alla, siis pane teisele argumendile kaigas ja esimesele mitte.
 +
Kui tahad kopeerida kataloogi (/mnt -> /mnt ntx), siis pane esimesele kaigas ja teisele mitte. Kaks näidet kuidas selle asetsemine võib käsu tundmatuseni muuta:
 +
 
 +
*--exclude "/foo"
 +
eraldab faili nimega foo kaustas kus hetkel asutakse mida näeb pwd käsuga
 +
 
 +
*--exclude "foo/"
 +
eraldab aga kõik kaustad nimega foo
 +
 
 +
Võimalus on tekitada ka kausta mida arhiveeritakse fail .rsync-filter sisuga
 +
+ *.mbox/***
 +
- *
 +
ja käsuraltuleb lisada -F võti.
 +
 
 +
===rsync server===
 +
 
 +
Varundusserverit luues on mõistlik startida seal rsynci deemon, mis võimaldab parooliga ligipääsu lugemiseks/kirjutamiseks teatud kaustadele.
 +
 
 +
Seadistusfailiks on rsyncd.conf mis vaikimisi Linuxis /etc/rsyncd.conf ja FreeBSDs /usr/local/etc/rsyncd.conf
 +
 
 +
Näidis failist rsyncd.conf:
  
 
  uid = root
 
  uid = root
41. rida: 68. rida:
 
  max connections = 25
 
  max connections = 25
 
  log file=/var/log/rsyncd.log
 
  log file=/var/log/rsyncd.log
 +
 +
pid file = /var/run/rsyncd.pid
 
   
 
   
 
  [failid]
 
  [failid]
 
         path = /kus/failid/on
 
         path = /kus/failid/on
 
         comment = failid
 
         comment = failid
 +
        read only = false
 
   
 
   
 
  [pildid]
 
  [pildid]
51. rida: 81. rida:
 
         dont  compress = *
 
         dont  compress = *
  
FreeBSD's tuleb rida  gid = root asendada reaga  gid = wheel
+
NB! Kasutades FreeBSDd tuleb rida  "gid = root" asendada reaga  "gid = wheel". read only parameeter on ääretult oluline, kui soovid rsync'ida faile serverisse. Vastasel juhul saad veateate, et "module is read only".
 +
 
 +
Seadistusfail tekitab kaks jaotist:
 +
Failid ja Pildid. Piltidele keelame direktiiviga "dont compress = *" andmevoo pakkimise,
 +
kuna pildid on juba pakitud ning suurt eelist see ei anna. Sama võib teha ka videosid sisaldavate kaustadega.
  
sellega tekitasime seadistuse kus on kaks jaotist
+
Seda meetodit rakendatakse vaikimisi failitüüpidele: *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
failid ja pildid. Piltidele ütleme dont  compress = *
 
kuna piltide pakkimine annab vähe eelist sama võib teha ka videote kaustadega.
 
  
vaikimisi juba ei teha seda failidele laiendiga *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
+
Logimist võib korraldada ka läbi syslogi'i, kasutades rida:
  
Logimist võib korraldada ka läbi syslogi'i kasutades rida
 
 
  syslog facility = local5
 
  syslog facility = local5
täpsemalt on seletatud asja logimise palas lahti http://kuutorvaja.eenet.ee/wiki/Logi.
 
Võimalik seada local0 kuni locan7ni
 
  
===tulemüür===
+
Või lihtsalt lisada syslog.conf'i rea:
 +
 
 +
daemon.info                                    /var/log/daemon.log
 +
 
 +
Logimisest saab lugeda täpsemalt [http://kuutorvaja.eenet.ee/wiki/Logi sellest palast].
 +
 
 +
Soovides lubada varundamisele kliente ligi vaid kindla parooliga tuleks share teha selliselt:
 +
 
 +
[failid]
 +
  path = /kus/failid/on
 +
  comment = failid
 +
  auth users = kasutaja
 +
  secrets file = /etc/rsyncd.pass
 +
  read only = false
 +
 
 +
Tekitame faili /etc/rsyncd.pass sisuga
 +
 
 +
kasutaja:salasona
 +
 
 +
Pange tähele, et paroolid hoitakse failis tavalise tekstina (plain text). Kindlasti tuleb paika panna paroolifaili õigused (ainult omanikule lugemiseks), vastasel juhul annab rsync veateate ja paroolifaili ignoreeritakse!
 +
 
 +
===rsync klient===
 +
 
 +
Ka klient masinas same parooli hoida eraldi failis. Tekitame /etc/rsyncd.pass faili sisuga
 +
 
 +
salasona
 +
 
 +
Kausta /etc sünkroniseerimiseks varundamise serveriga:
 +
 
 +
$ rsync --password-file /etc/rsyncd.pass -a /etc kasutaja@192.168.1.10::failid
 +
 
 +
Failide taastamine
 +
 
 +
$ rsync --password-file=/etc/rsyncd.pass -a kasutaja@192.168.1.10::failid /tmp/
 +
 
 +
===Tulemüüri seadistamine===
  
 
rsync töötades deemonina kasutab porti tcp 873  
 
rsync töötades deemonina kasutab porti tcp 873  
70. rida: 134. rida:
 
linux iptablesis saame müüri teha pordi lahti käsuga
 
linux iptablesis saame müüri teha pordi lahti käsuga
  
  iptables -I INPUT -p tcp -s ip_192.168.1.10 --dport 873 -j ACCEPT  
+
  iptables -I INPUT -p tcp -s 192.168.1.10 --dport 873 -j ACCEPT  
  
 
FreeBSD packet filteris
 
FreeBSD packet filteris
81. rida: 145. rida:
 
  hosts deny = *  
 
  hosts deny = *  
  
nüüd võime anda käsu
+
nüüd võime anda käsu rsync -a kaust kasutaja@server::jaotisenimi
  
  rsync -a kaust root@host::failid
+
   
 +
$ rsync -a kaust kasutaja@arhiiv.zoo.tartu.ee::failid
  
 
üleslaetud failide nimistut saab
 
üleslaetud failide nimistut saab
  
  rsync -v --list-only -a root@host.ee::pildid
+
  $ rsync -v --list-only -a root@host.ee::failid
 
 
kui pole öeldud muidugi  list = false
 
 
 
===kasutajad - paroolid===
 
 
 
Soovides lubada varundamisele kliente ligi vaid parooliga tuleks share teha selliselt
 
 
 
[failid]
 
  path = /kus/failid/on
 
  comment = failid
 
  auth users = kasutaja
 
  secrets file = /etc/rsyncd.pass
 
  
tekitame faili /etc/rsyncd.pass
+
kui pole öeldud muidugi list = false
paroolid hoitakse selles plaintextina. Tuleks jälgida ,et fail poleks world readable
 
milleüle hakkaks rsync kurtma
 
faili võime kirjutada näiteks
 
 
 
  kasutaja:kasutaja
 
 
 
käsk paroolifailiga sünkroniseerimiseks ,et saada kaust /etc varundatud võiks olla siis näiteks
 
 
 
rsync --password-file /etc/rsyncd.pass -a /etc kasutaja@192.168.1.10::backup
 
  
 
Soovides limiteerida aeglasema kiirusega kohtades rsync kiirust tuleks kasutada rsync omadust --bwlimit=KBPS
 
Soovides limiteerida aeglasema kiirusega kohtades rsync kiirust tuleks kasutada rsync omadust --bwlimit=KBPS
120. rida: 164. rida:
 
Genereerime privaatse ja avaliku võtme, kui parooli ei soovi vajutame lihtsalt enteri
 
Genereerime privaatse ja avaliku võtme, kui parooli ei soovi vajutame lihtsalt enteri
  
  # ssh-keygen -t rsa -b 4096 -f rsync-key
+
  # '''ssh-keygen -t rsa -b 4096 -f rsync-key'''
 
 
 
  Generating public/private rsa key pair.
 
  Generating public/private rsa key pair.
 
  rsync-key already exists.
 
  rsync-key already exists.
132. rida: 175. rida:
 
  e8:c7:f2:f1:da:2a:0f:a4:4f:63:89:9f:3e:9d:b9:87 root@loomaaed.zoo.ee
 
  e8:c7:f2:f1:da:2a:0f:a4:4f:63:89:9f:3e:9d:b9:87 root@loomaaed.zoo.ee
  
Kopeerime rsync.key.pub sisu sihtkoht masina faili authorized_keys
+
Kopeerime rsync-key.pub sisu sihtkoht masinas kasutaja faili .ssh/authorized_keys
 +
 
 +
$ scp rsync-key.pub remoteuser@remotehost:/home/remoteuser/
  
  /root/.ssh/authorized_keys
+
Seal masinas anname käsud
 +
   
 +
$ cat thishost-rsync-key.pub >> .ssh/authorized_keys
 +
$ chmod 700 .ssh
 +
$ chmod 600 .ssh/authorized_keys
  
 
Testime
 
Testime
  
  ssh -i rsync-key root@192.168.1.10
+
  $ ssh -i rsync-key root@192.168.1.10
  
 
ja rsync käsk näeb välja järgnev, ette tuleb anda rsync privaatne võti
 
ja rsync käsk näeb välja järgnev, ette tuleb anda rsync privaatne võti
  
  rsync -av --delete  -e "ssh -i /home/kasutaja/rsync-key"  /srv/kauyst root@192.168.1.10:/srv/
+
  $ rsync -av --delete  -e "ssh -i /home/kasutaja/rsync-key"  /srv/kauyst root@192.168.1.10:/srv/
  
 
Soovituslik oleks üldiselt kasutada sellistel juhtudel juba rsync serverit.
 
Soovituslik oleks üldiselt kasutada sellistel juhtudel juba rsync serverit.
154. rida: 203. rida:
 
suuruseks on vaid muutunud failide summa. Nii on võimalik teha paarkümmend full backupi
 
suuruseks on vaid muutunud failide summa. Nii on võimalik teha paarkümmend full backupi
 
kuid nende mahuks jääb kokkuvõtteks 1-2 maht.
 
kuid nende mahuks jääb kokkuvõtteks 1-2 maht.
 +
 +
[[Pilt:Summary educ4 html 61d7cbef.png]]
 +
 +
Illustreeriv skeem, võetud lehelt http://web.cs.mun.ca/infrastructure/labnet/summary_educ4.html
 +
 +
Hardlink on symlingi sarnane. Nad on tavaliselt loodud ln käsuga kuid ilma -s võtmeta. Hard link kujutab
 +
endast seda kui 2 faili viitavad samale inodele ja kettablokile. Erinevalt symlingist pole tegemist eraldi failiga vaid
 +
lihtsalt kahe lingiga samale faili.e Kui kustutada ükskõik kumb viide jääb teine alles ning sisaldab infot.
  
 
Käsu süntaksiks on:
 
Käsu süntaksiks on:
 
   
 
   
rsync -av --link-dest=$PWD/prior_dir host:src_dir/ new_dir/
 
 
Näiteks
 
 
 
  rsync -avH --link-dest=/backup/eile /root/kaust_mida_varundame /backup/tänane_backup
 
  rsync -avH --link-dest=/backup/eile /root/kaust_mida_varundame /backup/tänane_backup
  
168. rida: 221. rida:
 
Töö lihtsustamiseks võib luua skripti
 
Töö lihtsustamiseks võib luua skripti
  
 +
<source lang=bash>
 
  #!/bin/sh
 
  #!/bin/sh
 
  t2na=`date "+%Y%m%d"`
 
  t2na=`date "+%Y%m%d"`
 
  eile=`date -v-1d "+%Y%m%d"`
 
  eile=`date -v-1d "+%Y%m%d"`
 
  mkdir /backup/$t2na
 
  mkdir /backup/$t2na
  rsync -avH --link-dest=/backup/$eile /root/kaust_mida_varundame /backup/$t2na
+
  rsync -avH --link-dest=/backup/$eile /www/kaust/mida/varundame /backup/$t2na
 +
</source>
 +
 
 +
Ajaformaat tuleb kujul 20120809 ning võti -v-1d lahutab selest maha ühe päeva.
  
 
Loomulikult ei või aga kustutada ühtegi backup kausta kuna sellisel juhul
 
Loomulikult ei või aga kustutada ühtegi backup kausta kuna sellisel juhul
 
lähevad hardlingid failide vahel katki.
 
lähevad hardlingid failide vahel katki.
 +
 +
Siin on näide skriptist mis salvestab 7 incremental varukoopiat http://www.syrlug.org/contrib/rsync.html
 +
 +
Juhul kui soovime sälitada vaid 28n päeva andmed siis tulb lisada skripti järgnev osa
 +
 +
DAY29=`date -v-29d "+%Y%m%d"`
 +
if [ -d /backup/website/$DAY29 ]
 +
then
 +
rm /backup/$DAY29
 +
fi
 +
 +
Veel juttu rsynciga snapshotide tegemisest aadressidel
 +
 +
* http://blog.interlinked.org/tutorials/rsync_time_machine.html
 +
 +
* http://www.mikerubel.org/computers/rsync_snapshots/
  
 
===Kiiruse limiteerimine===
 
===Kiiruse limiteerimine===
  
Mitmeid töötavaid süsteeme syncides võib juhtuda ,et rsync hakkab liiga
+
Kasutuse all olevates süsteemides võib sünkroniseerides juhtuda, et rsync hakkab liiga ohtralt io/protsessoriaega kulutama ja server muutub selle käigus aeglaseks, selpuhul on kasulik limiteerida kiirust näiteks järgnevalt
ohtralt io/protsessoriaega kulutama siis on hea seda limiteerida näiteks lokaalselt
 
  
 
  rsync --bwlimit=1000 fail1 fail2
 
  rsync --bwlimit=1000 fail1 fail2
  
või
+
kiirus tuleb märkida kilobaitides, number näitab täpsemalt mitu kilobaiti sekundus lubatakse saata. Teine hea võimalus on kasutada nice käsku
 +
 
 +
===Sudo kasutamine===
 +
 
 +
Vahel pole võimalik root kasuajana logida aga vaja täisõigusi, selleks aitab kui lisada rsyncile võti
 +
 
 +
--rsync-path="sudo rsync"
 +
 
 +
Ning /etc/sudoers faili
 +
 
 +
username ALL= NOPASSWD:/usr/bin/rsync
 +
 
 +
===Probleemid===
 +
 
 +
Ühes servers kippis rsync ikka aegajalt viskama teadet, et ei saa sünkroniseerimist lõpetada.
 +
 
 +
Output:
 +
ERROR: out of memory in receive_sums [sender]
 +
rsync error: error allocating core memory buffers (code 22) at util.c(117)  [sender=3.0.9]
 +
 
 +
Aitas, kui muutsin block-size suurust 1024 pealt ümber:
 +
 
 +
--block-size 2048
 +
 
 +
===Lingid===
 +
 
 +
* http://wiki.itcollege.ee/index.php/Rsync
 +
* http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp rsynci versioon windowsile
  
rsync--bwlimit=1000 fail1 fail2
+
* http://dailycupoftech.com/windows-backup-with-rsync-and-freenas/ veel juttu windowsi peal rsynci kasutamisest
  
kiirus tuleb märkida kilobaitides mida sekundus lubatakse saata
+
*http://qtdtools.doering-thomas.de/page.php?seite=0&sub=0&lang=en veel üks windowsi rsynci kasutajaliides
  
Teine hea võimalus on kasutada nice käsku
+
* https://serverfault.com/questions/746551/faster-rsync-of-huge-directory-which-was-not-changed Väga suure hulga failide varundamine

Viimane redaktsioon: 28. juuli 2021, kell 15:05

Sissejuhatus

Rsync on vabavara unixi laadsetele op süsteemidele, mis teeb andmete sünkroniseerimese arvutite vahel väga lihtsaks. Rsync kasutab kodeerimist ja ei tekita varundamisel duplikaate, vaid loob viiteid failide vahel, vähendades sedaviisi infomahte ja ka kettakasutust.

Veebisait http://rsync.samba.org/ ja dokumentatsioon http://www.samba.org/rsync/documentation.html.

Lihtne näide rsync kasutamisest:

Sünkroniseerime faili lokaalsest masinast teise nimega host.ee

rsync fail.laiend kasutaja@host.ee:

Sünkroniseerime kausta lokaalsest masinast teise

rsync -a kaust kasutaja@host.ee:

Rsync toimib ka üle tavalise OpenSSH (Kuid on rohkem koormust tekitav).

Olulisemad võtmed

  • --archive -a arhiivi võti mida kasutades kindlustatakse kuupäevade õiguste omanike ja linkide säilumine, soovituslik lisada igasuguste sünkroniseerimiste puhul.
  • --verbose -v protsessi kohta põhjalikuma info näitamine nt failinimekiri
  • --progress ülekande progressi kohta info
  • --stats ülevaatlikum statistika kulunud ajast ja failide hulgast
  • --compress -z toimub pakkimine enne ülekandmist
  • --delete -d sihtkohast kustutatakse algallikas enam mitte eksisteerivad failid
  • --exclude "*bak" mingite faililaiendite, failinimede ignoreerimine näiteks avi, mp3 võib määrata ka võtmega --exclude-from faili milles failides või kaustades asjadest mida ei varundata
  • --numeric-ids ei üritata failide UID/GID muuta sünkroniseeritava süsteemi kasutajate järgi ja jäetakse need puutumatuna

Veel mõned erandjuhtudel vajaminevad parameetrid

  • -n Mille korral rsync lihtsalt ütleb mida ta teeks ilma reaalselt faile üle kandmata
  • -W Teatab rsyncile kanda üle terve fail selle asemel, et kasutada oma block leveli võrdlemise vahendeid. Kui kasutada on väga kiire võrguühendus võib see võti muuta tööd kiiremaks kuna rsync ei pea faile kontrollima, kasutades rsynci üle interneti on tõenäoliselt seda võtit kasutada ebapraktiline
  • -c Käseb genereerida kõigi failide kontrollsummad. Kasutades seda võtit võib rsync muutuda üsnagi aeglaselt seega kasutada vaid tõsise vajaduse korral, näiteks kui kahtlus, et failide info on kuidagi rikutud.
  • -z suunab rsynci kasutama zlib pakkimist
  • -H, --hard-links Säilita hard lingid, vajalik nt kui ülekantavad andmed varundatud link-dest võtmega
  • -i - kui nö tavalise võtmekomplekti '-avH --numeric-ids' puhul ei esitata andmeid kui ainult faili metaandmed muutuvad, nt omanik, siis -i lisamisel esitatakse
  • -A --acls säilita acl-id
  • -X --xattrs säilitada laiendatud atribuudid

Lisaks kui rsync teatab file has vanished tähendab seda, et failisüsteemis on sünkroniseerimise ajal tekkinud muudatusi

Tasub ettevaatlik ning tähelepanelik olla kaika (/) märgi kasutamisega. kui tahad kopeerida kataloogi alla, siis pane teisele argumendile kaigas ja esimesele mitte. Kui tahad kopeerida kataloogi (/mnt -> /mnt ntx), siis pane esimesele kaigas ja teisele mitte. Kaks näidet kuidas selle asetsemine võib käsu tundmatuseni muuta:

  • --exclude "/foo"

eraldab faili nimega foo kaustas kus hetkel asutakse mida näeb pwd käsuga

  • --exclude "foo/"

eraldab aga kõik kaustad nimega foo

Võimalus on tekitada ka kausta mida arhiveeritakse fail .rsync-filter sisuga

+ *.mbox/***
- *

ja käsuraltuleb lisada -F võti.

rsync server

Varundusserverit luues on mõistlik startida seal rsynci deemon, mis võimaldab parooliga ligipääsu lugemiseks/kirjutamiseks teatud kaustadele.

Seadistusfailiks on rsyncd.conf mis vaikimisi Linuxis /etc/rsyncd.conf ja FreeBSDs /usr/local/etc/rsyncd.conf

Näidis failist rsyncd.conf:

uid = root
gid = root
use chroot = no
max connections = 25
log file=/var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

[failid]
       path = /kus/failid/on
       comment = failid
       read only = false

[pildid]
       path = /kus/pildid/on
       comment = failid
       dont  compress = *

NB! Kasutades FreeBSDd tuleb rida "gid = root" asendada reaga "gid = wheel". read only parameeter on ääretult oluline, kui soovid rsync'ida faile serverisse. Vastasel juhul saad veateate, et "module is read only".

Seadistusfail tekitab kaks jaotist: Failid ja Pildid. Piltidele keelame direktiiviga "dont compress = *" andmevoo pakkimise, kuna pildid on juba pakitud ning suurt eelist see ei anna. Sama võib teha ka videosid sisaldavate kaustadega.

Seda meetodit rakendatakse vaikimisi failitüüpidele: *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

Logimist võib korraldada ka läbi syslogi'i, kasutades rida:

syslog facility = local5

Või lihtsalt lisada syslog.conf'i rea:

daemon.info                                     /var/log/daemon.log

Logimisest saab lugeda täpsemalt sellest palast.

Soovides lubada varundamisele kliente ligi vaid kindla parooliga tuleks share teha selliselt:

[failid]
  path = /kus/failid/on
  comment = failid
  auth users = kasutaja
  secrets file = /etc/rsyncd.pass
  read only = false

Tekitame faili /etc/rsyncd.pass sisuga

kasutaja:salasona

Pange tähele, et paroolid hoitakse failis tavalise tekstina (plain text). Kindlasti tuleb paika panna paroolifaili õigused (ainult omanikule lugemiseks), vastasel juhul annab rsync veateate ja paroolifaili ignoreeritakse!

rsync klient

Ka klient masinas same parooli hoida eraldi failis. Tekitame /etc/rsyncd.pass faili sisuga

salasona

Kausta /etc sünkroniseerimiseks varundamise serveriga:

$ rsync --password-file /etc/rsyncd.pass -a /etc kasutaja@192.168.1.10::failid

Failide taastamine

$ rsync --password-file=/etc/rsyncd.pass -a kasutaja@192.168.1.10::failid /tmp/

Tulemüüri seadistamine

rsync töötades deemonina kasutab porti tcp 873

linux iptablesis saame müüri teha pordi lahti käsuga

iptables -I INPUT -p tcp -s 192.168.1.10 --dport 873 -j ACCEPT 

FreeBSD packet filteris

pass in on $ext_if proto tcp from { 192.168.1.10 } to port 873 

Muidugi võib seadistusfaili kirjutada kohe

hosts allow = *.host.ee
hosts deny = * 

nüüd võime anda käsu rsync -a kaust kasutaja@server::jaotisenimi


$ rsync -a kaust kasutaja@arhiiv.zoo.tartu.ee::failid

üleslaetud failide nimistut saab

$ rsync -v --list-only -a root@host.ee::failid

kui pole öeldud muidugi list = false

Soovides limiteerida aeglasema kiirusega kohtades rsync kiirust tuleks kasutada rsync omadust --bwlimit=KBPS

Paroolita rsync kasutades ssh kopeerimist

Paroolifaili etteandmine ilma rsync serverit kasutamata ei toimi, sellisel juhul tuleks toimida järgnevalt

Genereerime privaatse ja avaliku võtme, kui parooli ei soovi vajutame lihtsalt enteri

# ssh-keygen -t rsa -b 4096 -f rsync-key
Generating public/private rsa key pair.
rsync-key already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in rsync-key.
Your public key has been saved in rsync-key.pub.
The key fingerprint is:
e8:c7:f2:f1:da:2a:0f:a4:4f:63:89:9f:3e:9d:b9:87 root@loomaaed.zoo.ee

Kopeerime rsync-key.pub sisu sihtkoht masinas kasutaja faili .ssh/authorized_keys

$ scp rsync-key.pub remoteuser@remotehost:/home/remoteuser/ 

Seal masinas anname käsud

$ cat thishost-rsync-key.pub >> .ssh/authorized_keys 
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

Testime

$ ssh -i rsync-key root@192.168.1.10

ja rsync käsk näeb välja järgnev, ette tuleb anda rsync privaatne võti

$ rsync -av --delete  -e "ssh -i /home/kasutaja/rsync-key"  /srv/kauyst root@192.168.1.10:/srv/

Soovituslik oleks üldiselt kasutada sellistel juhtudel juba rsync serverit.

Snapshot stiilis backup

Rsync omab võtit --link-dest mis võimaldab full backupide tegemisel hoida kokku ruumi. Nimelt võtab rsync siis näiteks eelmise päeva backupi aluseks ja loob jooksva päeva backup kausta hardlingid failidest mis on juba olemas ning syncib ainult muutunud failid. Nii on kaustas full backup kuid selle suuruseks on vaid muutunud failide summa. Nii on võimalik teha paarkümmend full backupi kuid nende mahuks jääb kokkuvõtteks 1-2 maht.

Summary educ4 html 61d7cbef.png

Illustreeriv skeem, võetud lehelt http://web.cs.mun.ca/infrastructure/labnet/summary_educ4.html

Hardlink on symlingi sarnane. Nad on tavaliselt loodud ln käsuga kuid ilma -s võtmeta. Hard link kujutab endast seda kui 2 faili viitavad samale inodele ja kettablokile. Erinevalt symlingist pole tegemist eraldi failiga vaid lihtsalt kahe lingiga samale faili.e Kui kustutada ükskõik kumb viide jääb teine alles ning sisaldab infot.

Käsu süntaksiks on:

rsync -avH --link-dest=/backup/eile /root/kaust_mida_varundame /backup/tänane_backup

Anname rsyncile ette eilse backupi kausta, siis kausta mida soovime varundada ja kausta kuhu varundada.

Töö lihtsustamiseks võib luua skripti

 #!/bin/sh
 t2na=`date "+%Y%m%d"`
 eile=`date -v-1d "+%Y%m%d"`
 mkdir /backup/$t2na
 rsync -avH --link-dest=/backup/$eile /www/kaust/mida/varundame /backup/$t2na

Ajaformaat tuleb kujul 20120809 ning võti -v-1d lahutab selest maha ühe päeva.

Loomulikult ei või aga kustutada ühtegi backup kausta kuna sellisel juhul lähevad hardlingid failide vahel katki.

Siin on näide skriptist mis salvestab 7 incremental varukoopiat http://www.syrlug.org/contrib/rsync.html

Juhul kui soovime sälitada vaid 28n päeva andmed siis tulb lisada skripti järgnev osa

DAY29=`date -v-29d "+%Y%m%d"`
if [ -d /backup/website/$DAY29 ]
then
rm /backup/$DAY29
fi

Veel juttu rsynciga snapshotide tegemisest aadressidel

Kiiruse limiteerimine

Kasutuse all olevates süsteemides võib sünkroniseerides juhtuda, et rsync hakkab liiga ohtralt io/protsessoriaega kulutama ja server muutub selle käigus aeglaseks, selpuhul on kasulik limiteerida kiirust näiteks järgnevalt

rsync --bwlimit=1000 fail1 fail2

kiirus tuleb märkida kilobaitides, number näitab täpsemalt mitu kilobaiti sekundus lubatakse saata. Teine hea võimalus on kasutada nice käsku

Sudo kasutamine

Vahel pole võimalik root kasuajana logida aga vaja täisõigusi, selleks aitab kui lisada rsyncile võti

--rsync-path="sudo rsync"

Ning /etc/sudoers faili

username ALL= NOPASSWD:/usr/bin/rsync

Probleemid

Ühes servers kippis rsync ikka aegajalt viskama teadet, et ei saa sünkroniseerimist lõpetada.

Output:
ERROR: out of memory in receive_sums [sender]
rsync error: error allocating core memory buffers (code 22) at util.c(117)  [sender=3.0.9]

Aitas, kui muutsin block-size suurust 1024 pealt ümber:

--block-size 2048 

Lingid