Ei sulla olisi lähettää jotain ihan simppeliä esimerkkiä tuosta miten säästetään vanhoja versioita?
Tuota kirjoittaessa ei ollut mitään julkaisukelpoista koska skriptini ei olisi käyttäytynyt kauniisti jos sen ajo olisi keskeytetty tai jos siitä olisi ajettu useampi instanssi samaan aikaan. Korjailin tuota tänään ja lainasin netistä riittävän luotettavalta tuntuvan koodin lockfilen tekemiseen ja nyt tuon pitäisi olla melko luotettava.
Nyt jos skriptejä ajetaan useita samaan aikaan niin vain ensimmäisen pitäisi toimia ja seuraavien suorituksen pitäisi keskeytyä virheeseen. Jos skriptin suoritus keskeytyy jostain syystä niin seuraavan ajon yhteydessä tuhotaan keskeneräinen varmuuskopio ennen uuden tekemistä.
En ole tätä versiota kovin tarkkaan testannut ja itseasiassa tein vielä äsken pienen bugikorjauksen testaamatta lopputulosta joten olen maksimoinut todennäköisyyden sille että skripti ei toimi
Skriptin alussa on muutama muuttuja jotka tulee asettaa ennen skriptin käyttämistä.
Muuttujan
lockfile muuttaminen on periaatteessa vapaaehtoista mutta jos skriptistä ajaa useita eri versioita eri hakemistojen varmuuskopiointiin niin tällöin jokaiselle versiolla kannattaa vaihtaa yksilöllinen lockfilen nimi.
Varmuuskopioitava hakemisto kerrotaan muuttujalla
sourcedir ja sen arvo menee suoraan rsync:lle joten rsyncin säännöt pätevät sen kirjoittamisessa. Oletuksena olen laittanut siihen kotihakemiston ilman loppukauttaviivaa jolloin varmuuskopiohakemistoon tulee ylimmälle tasolle home-hakemisto. Jos hakemiston perässä olisi kauttaviiva niin silloinhan varmuuskopiohakemiston ylimmälle tasolle tulisi home-hakemiston sisältö.
Varmuuskopiot talletetaan muuttujan
basedir osoittaman hakemiston alle omiin hakemistoihinsa.
Muuttuja
datedir kertoo yksittäisten varmuuskopioiden hakemistojen nimen. Oletuksena on UTC päivämäärä muodossa 2007-09-22. Tällä muuttujalla on huomattava vaikutus varmuuskopioiden tallentamiseen. Skripti tarkistaa aluksi onko varmuuskopiohakemistoa olemassa ja mikäli se on jo olemassa niin skriptin suoritus lopetetaan ilman virhettä. Näin ollen oletusmuodossa skripti tekee vain yhden varmuuskopion vuorokaudessa vaikka se ajettaisiin useaan kertaan.
Jos hakemiston nimeen lisättäisiin myös tunnit niin silloin skripti tekisi joka tunti uuden varmuuskopion jos se ajettaisiin riittävän useasti. Testikäytössä hakemistonimenä kannattaa käyttää muotoa jossa on päivämäärän lisäksi tunnit ja minuutit. Tällöin toimintaa on helppo testata.
Muuttujan
datedir tulee olla sellainen että järjestettäessä varmuuskopiohakemistoja nousevaan järjestykseen tulee tuorein varmuuskopio viimeiseksi.
Rsyncissä on noita vipuja niin maan perusteellisesti, että työtöapu olisi poikaa - ittellä kun on nyt vain kylmästi --delete ja joskus on käynyt mielessä, että muutamia sukupolvia voisi kyllä säästää taaksekinpäin.
Laittamistani linkeistä ainakin toisessa oli skripti joka säilytti muistaakseni kolme tai neljä viimeisintä sukupolvea varmuuskopioista. Minun skriptissäni vanhojen varmuuskopioiden poistaminen on jätetty ylläpitäjän vastuulle. Syynä on lähinnä se että minulla ei ole ollut tarvetta vanhojen versioiden siivoamiselle sillä tila on vielä toistaiseksi riittänyt
Nykyisen skriptin yhteyteen olisi melko triviaalia lisätä toiminnallisuus joka poistaisi vanhimpia varmuuskopioita kunnes haluttu määrä tilaa on vapaana. En kuitenkaan kovin mielelläni automatisoi tämän tyyppisiä tehtäviä vaan suoritan ne ennemmin käsin kun sille tulee tarvetta.
[ylläpito on poistanut liitteen]