Kovalevy telakassaan.

Rsnapshot asentaminen

Minulla on käytössä pelkkään rsynciin perustuva varmuuskopiointi. Cron ajaa x kertaa vuorokaudessa scriptin ja minun ei tarvitse huolentia asiasta. Paitsi, että tarvitsee. Ajatus oli alun perin, että homma tehdään niin yksinkertaisesti kuin vain mahdollista, scripti ajaa verkkokovalevylle varmuuskopiot ja rsync huoletii siitä, että samoja asioita ei tarvitse siirtää verkon yli joka kerta. Homma toimi ihan hyvin paitsi, että huomasin tuossa varmuuskopion sisältävän noin 700gigaa täysin turhaa, jota ei oikeastaan olisi tarvinnut säästää.

Päätin siis vaihtaa omat ”scriptit” oikeampaan varmuuskopio ratkaisuun. Valinta osui tällä kertaa rsnapshot nimiseen tuotteeseen . Se on kirjoitettu perlillä ja tukeutuu vahvasti rsynciin ja tiedostojen hard linkkeihin. Mukana on rsyncin hyvät puolet eli se siirtää vain muuttuneet tiedot ja hard link avulla saadaan monta eri snapshottia ilman, että tallennus tilaa tarvitaan kovinkaan paljoa enempää kuin yksi varmuuskopio tarvitsee, käytännössä tilaa tarvitaan suunnilleen yhden koko varmuuskopion ja muuttuneiden tietojen verran.

Jos haluat tehokkaan, monipuolisen ja suhteellisen helpon varmuuskopiointi ratkaisun, rsnapshot on sinulle. Paitsi, jos et ole valmis käyttämään asetustiedostoja ja cronia.

Asennus

Asensin rsyncin aluksi virtuaalikoneelle, että pääsen sitä rauhassa testailemaan ilman riskiä tietojen häviämisestä. Testipenkkinä toimii Ubuntu 20.10 ( sama kuin minuila on käytössä, mutta puhtaalla asennkusella.)

Asennus tapahtuu helposti yhdellä käskyllä ja sen jälkeen pääsee arvuuttelemaan asetuksia ja asetus tiedostoja. Ne eivät ole mallia osoita hiirellä ja klikkaa vaan ihan pitää itse tiedostoon kirjoittaa mitä haluaa rsnapshotin tekevän. Onneksi meille kuitenkin annetaan esimerkki tiedosto, koska muuten homma menisi aika vaikeaksi 😀

sudo apt install rsnapshot

Asetustiedosto ja asetukset

Rsnapshotin asetustiedosto löytyy (ubuntun tapauksessa) /etc/rsnapshot.conf . Huomiotava asia on, että asetustiedosto käyttää välilyönnin sijaan tabulaattoria. Asetuksista löytyy iso kasa vaihtoehtoja ja mahdollisuuksia, joista en tiedä läheskään kaikkia saatikka, että olisin tarvinnut kaikkia.

Käsittelen vain niitä asetuksia mitä jouduin muuttamaan, että sain homman pelittämään. Asiat käsitellään siinä järjestyksessä kuin ne tulevat esimerkki asetustiedostossa vastaan

Snapshot_root

Ensimmäiseksi pitää päättää minne varmuuskopioiden juurihakemisto osoittaa. Tämä tieto on kohdassa snapshot_root

snapshot_root /var/cache/rsnapshot

Oletusarvo on ”/var/cache/rsnapshot”. Itse laitoin tässä vaiheessa tämän osoittamaan kohtaan ”/media/jra/Varmauuskopio/”, koska ulkoinen kovalevy mounttautuu tuohon kohti. Myöhemmin laitan tämän osoittamaan verkkokovalevyyn.

No_create_root

Seuraava kohta mitä minun piti muuttaa oli poistaa #(uncommet) kohdasta ”no_create_root 1”, mutta vasta sen jälkeen, kun olin ajanut varmuuskopion ensimmäisen kerran. Oletusarvo tässä on ”0”. No_create_root asettaminen ykköseksi aiheuttaa sen, että rsnapshot ei tee varmuuskopion juurta uudestaan, jos sitä ei löydy. Varsin kätevä ominaisuus, jos käytössä on ulkoinen tallennus media, joka ei ole jatkuvasti kiinni tietokoneessa.

Retain

Seuraavaksi rsnapshotille kerrotaan ”retain” sanalla miten varmuuskopioita halutaan tehdä ja säilyttää. Oletuksena löytyy seuraavat.

retain  alpha   6
retain  beta    7
retain  gamma   4
#retain delta   3

Alpha, beta, gamma ja delta ovat vain nimiä millä kerrotaan komentorivillä minkä ajan varmuuskopiota ollaan tekemässä ja numero perässä tarkoittaa sitä kuinka monta kopiota säilytetään. Minä laitoin tämän kohdan näin.

retain  daily   7
retain  weekly  5
retain  monthly  12
retain  yearly  2

Päivittäisiä kopioita siis säilytetään 7 kappaletta, viikottaisia 5, kuukausittaisia 12 ja vuosittaisia 2. Tämä on minusta vähän hassusti toteutettu, mutta näillä mennään. Retain oli aiemmissa versioissa ”interval”.

Verbose, loglevel & logfile

Testausvaiheessa laitoin ajonaikaisia viestejä lisää näkyviin muuttamalla ”verbose 5”. Luultavasti muutan tämän arvoon ”1” tai ”2”, kun asennus on valmis. Tähän liittyen voi myös laittaa ”loglevel” kohdan haluamaansa arvoon. Jos haluaa käyttää logitiedostoa täytyy ”logfile” kohta poistaa kommenteista poistamalla rivin alusta # ja vaihtaa tarvittaessa sopiva hakemistopolku. Oletus ”/var/log/rsnapshot.log” kelpasi minulle vallan mainiosti.

Include, exclude, include_file & exclude_file

Include, exclude, include_file ja exclude_file kohdilla voidaan määritellä mitä otetaan varmuuskopioon mukaan. Nämä kohdat annetaan suoraan rsyncille. En itse tässä vaiheessa laittanut tähän mitään, mutta aion siihen laittaa esimerkiksi tmp hakemistot joista on ihan turha tehdä kopioita. Tässä kohti ei määritellä hakemistoja jotka varmuuskopioidaan vaan esimerkiksi, jos halutaan varmuuskopioida vain zip-tiedostot.

Backup, bacup_script & backup_exec

Seuraavaksi (vihdoinkin!) kerrotaan mitä hakemistoja ollaan varmuuskopiomassa. Oletusarvot näyttävät seuraavalta.

#LOCALHOST
 backup  /home/          localhost/
 backup  /etc/           localhost/
 backup  /usr/local/     localhost/
 #backup /var/log/rsnapshot              localhost/
 #backup /etc/passwd     localhost/
 #backup /home/foo/My Documents/         localhost/
 #backup /foo/bar/       localhost/      one_fs=1,rsync_short_args=-urltvpog
 #backup_script  /usr/local/bin/backup_pgsql.sh  localhost/postgres/
 #You must set linux_lvm_* parameters below before using lvm snapshots
 #backup lvm://vg0/xen-home/     lvm-vg0/xen-home/

#EXAMPLE.COM
 #backup_exec    /bin/date "+ backup of example.com started at %c"
 #backup root@example.com:/home/ example.com/    +rsync_long_args=--bwlimit=16,exclude=core
 #backup root@example.com:/etc/  example.com/    exclude=mtab,exclude=core
 #backup_exec    ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql"
 #backup root@example.com:/var/db/dump/  example.com/
 #backup_exec    /bin/date "+ backup of example.com ended at %c"

 #CVS.SOURCEFORGE.NET
 #backup_script  /usr/local/bin/backup_rsnapshot_cvsroot.sh      rsnapshot.cvs.sourceforge.net/

Kuten huomataan yhdessä tiedostossa voidaan määritellä useamman tietokoneen varmuuskopiot, rsnapshotin antamassa esimerkissä kolme eri konetta. Rsnapshot osaa myös käynnistää tarvittaessa ohjelmia ”backup_exec” määreellä. Se voi myös käyttää scriptejä ”backup_script” määreellä. Varsinainen varmuuskopio määritellään ”backup” määreellä. Ensiksi kerrotaan mikä hakemisto (ja tarvittaessa mistä tietokoneesta) ollaan kopioimassa ja sen jälkeen kerrotaan järjestelmän nimi millä se halutaan tunnistaa varmuuskopioista. Minä asettelin, ainakin tässä vaiheessa, nämä näin.

backup  /home/          sonyvaio/
backup  /etc/           sonyvaio/
backup  /usr/local/     sonyvaio/

Rsnapshotin toiminta

Mitenkäs se sitten toimii? Helposti, komennat kerran päivässä ”rsnapshot daily”, kerran kuukaudessa ”rsnapshot monthly” ja kerran vuodessa ”rsnapshot yearly”. Kätevää eikö? 🙂

Järkevämpi vaihtoehto on automatisoida homma cronin avulla. Seuraavilla saa rsnapshotin toimimaan joka päivä kello 15, viikoittain joka maanantai kello 14.00, kuukausittain kuukauden ensimmäisenä päivänä kello 13.00 ja vuosittain aprillipäivänä kello 12.00.

0 15 * * * /usr/bin/rsnapshot daily
0 14 * * 1 /usr/bin/rsnapshot weekly
0 13 1 * * /usr/bin/rsnapshot monthly
0 12 1 4 * /usr/bin/rsnapshot yearly

Kannattaa huomata, että pitemmän ajan varmuuskopiot ajetaan aiemmin kuin lyhyemmän välin varmuuskopiot. Tällä varmistetaan se ettei synny kilpailutilannetta eri varmuuskopioden ajojen välillä. Luultavasti väliksi riittäisi huomattavan lyhyempikin aika. Jos toinen instanssi rsnapshottia yrittää käynnistyä, kun edellinen on viellä käynnissä se ei käynnisty, koska se huomaa lockfilestä, että edellinen on viellä käynnissä. Ajojen tekeminen näin myös nopeuttaa rsnapshotin toimintaa.

Rsnapshot siis käyttää rsynciä ja hard linkkejä. Varmuuskopiot löytyvät omista hakemistoistaan /snapshot_root/alpha.0/.., /snapshot_root/alpha.1/….. …. /snapshot_root/beta.0/…. …. /snapshot_root/gamma.3/…
Jokaisesta hakemistosta löytyy jokaisesta varmuuskopiodusta koneesta oma hakemisto, josta varmuuskopioidut tiedostot löytyvät samanlaisena ja samanlaisesta tiedostorakenteesta kuin ne olivat.

Alpha.0 (tai mikä nyt onkaan lyhimmän välin tunnuksena) on periaatteessa ainut johon luetaan muutoksia varmuuskopiotavasta kohteesta. Kaikki muut hakemistot ovat hard linkeillä tehtyjä kopioita. Kun lyhimmän välin varmuuskopio ajetaan uudestaan se tekee hakemiston alpha.1 ja seuraavalla kertaa alpha.2 ja näin tapahtuu kunnes asetuksissa määritelty määrä kopioita on saavutettu. Kun korkein taso on saavutettu, vanhin hakemisto poistetaan varmuuskopion ajon yhtydessä.

Jos seuraavan tason varmuuskopio eli vaikka beta ajetaan ennen kuin kuin korkein edellisen tason kopio on tehty, se ei tee mitään. Jos taas korkein löytyy, tässä tapauksessa siis alpha.5, se siirretään beta.0 hakemistoksi. Seuraavalla ajokerralla beta.0 siirretään beta.1 hakemistoksi ja jos alpha.5 hekemisto löytyy se siiretään beta.0 hakemistoksi, jos sitä taas ei löydy jää beta.0 hakemisto tekemättä.

Testaus

Asetustiedoston voi testata komennolla ”rsnapshot configtest”. Tämä kertoo onko tiedoston syntaksi oikein eli esimerkiksi onko jonnekin päätynyt tabulaatin sijasta välillyönti. Asetukset kannattaa myös tarkistaa tekemällä ns kuiva-ajo eli katsomalla mitä rsnapshot tekee. ilman että se oikeasti tekee mitään. Tämä onnistuu valitsimella ”-t” esim ”rsnapshot -t alpha”

Ajatuksia

En käynyt tässä lävitse miten varmuuskopion saa verkkokovalevylle, mutta se onnistuu näilläkin ohjeilla, kun mounttaa verkkokovalevyn johonkin sopivaan paikkaan. Nfs on suositeltava tapa, koska muilla tavoilla tiedostojen oikeudet ja omistajat vaativat kikkailua, että ne toimivat.

Tämä on vain pintaraapaisu rsnapshotista, mutta minä sain homman toimimaan näillä.

Jos tietokone on jatkuvasti päällä, cron ajaa kyllä varmuuskopiot, mutta jos kone sattuu olemaan sammuksissa, se ei varmuuskopiota tee. Tämän takia kannattaa käyttää anacronia.

Vastaa

Sähköpostiosoitettasi ei julkaista.