E-mail














 

Mert archíválni kell!


A fenti gondolattal csak az nem érthet egyet, akinek nem vesztek el még adatai. Illetve a gazdasági ügyekért felelôs vezetô, aki nem használ számítógépet. Nos, ôket leszámítva mindenki tudja, hogy az elveszett adatok fontossága, értéke fordítottan arányos azzal az idôvel, amely pótlásukra rendelkezésünkre áll.

Az általános archiválási gyakorlatot folytató vállalkozások napi, heti és havi archiválással rendelkeznek. Azaz naponta – amikor az iroda alszik – végrehajtódik az adatmásolás. A hétfô, kedd... Vasárnap jelölésű állományok egy hétig porosodnak, majd felülírja ôket a friss. A heti másolat általában négy hétig pihen, a havi pedig – például könyvelô cégeknél – akár egy évig is. Mondhatod, hogy ez rengeteg, amíg nem vesztesz adatot. Az ideális, ha mindig mindent archiválsz, ám nem életszerű. Hét közben rendszerint csak a munkaállományokat, a heti ciklusban szokás pluszban a betűket, setupokat, preferenciákat is, a havi ciklusban pedig fullra az egész gépet elmenteni.

Régen dúlt a szalagos archiválás – e sorok írója is rendszeresen mentett rá Novell alól egészen addig, amíg egyszer, szórakozásból vissza nem akart állítani egy könyvtárat. Nem ment. Lehet bohóckodni CDvel, esetleg DVD-vel, de nem igazán javaslom. A legegyszerűbb, leggyorsabb, legolcsóbb a külsô FireWire-os merevlemez – hálózatok esetén e célra dedikált gép: elôkerülhet a megôrzött LC 475 vinyóbôvítéssel, vagy valamelyik elsô generációs, lehetôleg FireWire-ös iMac.

Önállóan mentek
E kis írás az egygépes archiválásra mutat egy elvetemült példát – amit, ha nem vagy BSDguru, akkor ne az élesben használt gépeden tesztelj! Hármas célt tűztem magam elé. Legyen a mentés automatikus, és akkor fusson lehetôleg, amikor én nem használnám a Macem (azaz alszom). Az eltérô idôpontú mentések megôrzôdjenek, és minél olcsóbban megússzam.

Elsô ötletként végigtúrtam a Versiontrackert és hasonló weboldalakat, számos megoldást találtam – ám ezek érthetetlen módon pénzbe kerültek, és meg kellett volna tanulnom használatukat. Kevés pénzem inkább egy 120 gigás merevlemezbe fektettem, és belevetettem magam a Macbe.

Az op. rendszerrel együtt érkezett ASR (Apple Software Restore) segédprogi, amely képes egy kötetet egy másikra átmásolni. Köszönhetôen a BSD-s alapoknak, használhattam a hdiutil parancsot, amellyel disk image-t hozhatok létre, mountolhatok (megragadhatok – hegyelhetek) és unmountolhatok (elenged – völgyelhetek). Megnézem, mekkora adathalmazt kell archiválnom, létrehozok egy ekkorra volume-ot a tartalék FireWire lemezemen, és hipp-hopp, áttolom az adatokat.

Kódvetés
A kódot itt találod a cikk mellett (a progi a cikk webre menetele után – április vége – letölthetô lesz), a számjegy és kettôspont nem része, csak hivatkozás. Itt szólnék, remélem, semmit nem írtam, gépeltem el, de mindent a saját felelôsségedre használsz. Néhány változómnak igyekeztem épkézláb nevet adni. SOURCE annak a kötetnek (volume) a neve, amelyiket archiválni szeretném. A VOLUMENAME a diskimage neve, hogy ne untitled legyen, alapja a backup_évszám_hónap_nap, ehhez fűzzük majd a nevet hozzá.

És akkor fussunk neki! A 15-17. sorokban lekérdezem az archiválandó kötet méretét, és megnézem, van-e elég helyem a FireWire merevlemezen, biztonsági okokból öt százalékkal többet foglalok majd. A 21. sorban létrehozom a diskimage-t, a 25-ben felmountolom. A mountoláskor meg kell jegyezni a használt nevet, e nélkül kacifántos volna dismountolni késôbb.

A 25. sorban elkészült a Source másolata. A 29. sorban az ASR eléréséhez megadtam a teljes elérési útvonalat. Az utolsó sorral dismountolom a 25-ben felhúzott image-t. (Ez elég külföldiül van, de alapszintű programozási ismeretekkel a sorok jól olvashatók.)

Még egyszerűbben!
Most, hogy mindent rendben elmentettünk – a fenti állományt például mentsmar néven az usr/local/bin mappába –, elég root joggal behatolni a Macbe és kiadni a sudo mentsmar parancsot. Persze ez is macerás, mert nem megy magától. Viszont a BSD lélekkel érkezett a cron utasítás, amely épp automatizálásra képes. Essünk neki:

[akieztkitalalta]$ sudo crontab -e -u root
0 0 * * 0 /usr/local/bin/mentsmar


Ha valami nem akarna működni, akkor elvileg élô sendmailen át errôl üzit kapsz, de a var/mail/root könyvtárban ráakadsz majd a hiba okára.

Tovább, tovább...
Ez persze olyan házi megoldás, amely mellett továbbra is figyelned kell, hogy van-e elég hely a backupolásra használt vinyón, illik néha a backupra pillantva ellenôrizni a fájlok jóságát. Másképp mondva, minden automatizálható, ám a felelôsség nem, az örökre megmarad.

1:#!/bin/sh
2:############################################
3:# Set some variables
4:############################################
5:### The name of the volume we wish to backup
6:SOURCE='/'
7:### The volume onto which we are putting the backup
8:FILEDEST='/Volumes/Overflow'
9:### Creating the backup disk image file and volume name
10:VOLUMENAME=backup_`date +%Y-%m-%d`
11:IMAGENAME=$FILEDEST/$VOLUMENAME.dmg
12:############################################
13:# Find out the size we require (disk usage in Mb + 5%)
14:############################################
15:SIZE=`df -m $SOURCE | grep '^/'`
16:SIZE=`echo $SIZE | cut -d" " -f3`
17:SIZE=`dc -e "$SIZE $SIZE 5 / + n"`
18:############################################
19:# Create the image
20:############################################
21:hdiutil create -quiet -megabytes $SIZE -fs HFS+ \
-volname $VOLUMENAME $IMAGENAME|
22:############################################
23:# Mount the image and capture the device name
24:############################################
25:DEVICE=`hdiutil attach $IMAGENAME | grep $VOLUMENAME | cut -d" " -f1`
26:############################################
27:# Do the actual backup
28:############################################
29:/usr/sbin/asr -source $SOURCE -target
30:############################################
31:# Unmount the image
32:############################################
33:hdiutil detach -quiet $DEVICE




A lap tetejére