Anacron

Tämä on jatkoa rsnapshotin asennukseen, mutta toimii yksinäänkin.

Anacron on siis tekee siis samaa kuin cron, mutta varmistaa sen, että ajastetut asiat tehdään vaikka tietokone olisi ollut sammutettuna ajastuksen hetkellä.

Jos anacron ei ole valmiiksi asennettuna, sen voi tehdä seuraavalla käskyllä.

sudo apt install anacron

Anacronin asentus tiedosto löytyy /etc/anacrontab. Tiedostossa on asetettu milloin päivittäiset, viikottaiset ja kuukausittaiset tekemiset olisi tarkoitus ajaa. Heti asennuksen jälkeen minun koneella se näytti kuvan kaltaiselta.

Anacron oletusasetukset

Tiedoston alussa määritellään ajoympäristöön liittyviä kohtia ja kolme alinta riviä määrittelevät mitä ajetaan. Kommentti rivit alkavat #-merkillä.

# These replace cron's entries
#Jakso          viive   nimi            käsky
1               5       cron.daily      run-parts --report /etc/cron.daily
7               10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

Jakso kertoo kuinka usein käsky ajetaan, Sen voi kirjoittaa numeroina monenko päivän välein käsky ajetaan tai @daily, @weekly tai @monthly. (Minulla tosin @weekly ei jostain syystä toiminut.)

Viive kertoo kuinka kauan tietokoneen käynnistyksestä odotetaan ennen kuin käsky ajetaan. Viiveeseen lisätään satunnainen minuutti määrä, jonka maksimi asetetetaan random_delay määreellä (oletus 0).

Nimi kertoo millä nimellä käsky näkyy raporteilla.

Viimeisenä on käsky mikä suoritetaan. Se voi olla käskynä suoraan tässä, linkki hakemistoon missä on suoritettavat scriptit tai linkki scriptiin. Scriptit ovat SH muodossa, eivät BASH. Jos käytät hakemistoa/scriptiä muista antaa tiedostolle ajo-oikeus!

Seuraava tärkeä paikka anacronille on /var/spool/anacron hakemisto. Sieltä löytyvät aikaleimat milloin käskyt ovat viimeksi ajettu. Leimat löytyvät saman nimisistä tiedostoista kuin käskyille annetut nimet etc/anacrontab tiedostossa. Halutessaan leiman voi tarkistaa vaikkapa cat käskyllä.

sudo cat /var/spool/anacron/cron.daily 

Anacron ajaa itsensä automaattisesti, mutta sen voi käynnistää manuaalisestikin vaikkapa näin.

sudo anacron -df

Konfiguraatio tiedoston vot tarkistaa käskyllä:

 sudo anacron -T

Jos kaikki on kunnossa käsky ei tulosta mitään, jos ei, se kertoo mitä anacron ei ymmärrä tiedostossa.

Tässä vaiheessa poistin crontabista varmuuskopio asiat ja varmistin, että anacron todella ajaa varmuuskopiot poistamalla /var/spool/anacron hakemistosta aikaleima tiedostot ja käynnistämällä koneen uudestaan ja toimiihan se! Lopullinen anacrontab tiedosto (tässä vaiheessa) minulla näyttää tällälaiselta.

En siis poistanut tuolta mitään vaan vain lisäsin omani tiedoston perään.

Kuten kaikissa minun kirjoituksissa, en ole guru! Nämä ovat enemmän tai vähemmän minun oman muistin tueksi millä olen näitä saanut toimimaan. Kerro toki, jos näistä on sinulle ollut hyötyä, mutta käytä näitä omalla vastuulla!

Gurujen kirjoittamaa löytyy vaikkapa näistä man sivuilta: anacron ja anacrontab

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.