Jeg har i den senere tid jobbet litt med å få en god backupordning for lokal harddisk. Vi har allerede en god tape-backupordning i bedriften, og i tillegg kjører vi (Volume Shadow Copy Service). Allikevel føler jeg meg bedre når jeg har en lokal kopi på min lokale harddisk her på jobben. Som en god admin må man jo alltid være helt helt helt sikker, ikke sant? Vår backup-programvare støtter i dag også backup til harddisk direkte, og man får da også tatt en god backup av computer-state (hele maskinens registry og hele pakken), noe jeg ser bort fra som viktige data. Dette får tape-backup ta seg av.
Hva er viktige data for oss?
Man begynner selvsagt med å finne behovet. Ut fra en måling av VSS finner jeg ut at volumet i endrede filer øker ca med 3GB hver dag (gjennomsnitt over 30 dager). Nå er jeg usikker på hvor mye overhead VSS har men jeg ser allikevel at vi 1) har mye data som lages/endres hver dag og 2) det kan koste oss mye å tape noen dagers produksjon.
Hvorfor ikke bare bruke VSS?
VSS har en begrenset buffer, og dermed er det stor sjanse for at spesielt store filer ikke ligger lagret i flere versjoner.
Hvorfor ikke bare tape?
Selv om jeg bruker tapestasjon i dag (vi har en svær taperobot), så har jeg en intens fobi mot alt jeg ikke har 100% kontroll over. Og er det noe jeg hater, så er det dingser med spesialprogramvare. Altså, her må vi ha en egen løsning for meg når folk bare spør etter filer lagret en spesifikk dato om filen er ny. Da kan jeg veldig raskt hente ut fra lokal disk, og jeg slipper å gå gjennom tape-arkiv.
Jeg går for tape for langsiktig backup, og så ønsker jeg i tillegg en ekstra sikkerhet i å bruke en lokal disk for lagring av de siste 60 dager.
Robocopy
Jeg startet min testing med å bruke en enkel robocopy for å lage en lokal mirror av de siste 60 dagers arbeide. Robocopy er nå default med i Vista, men du kan enkelt laste det ned via et google-søk. For enkelthets-skyld så sier vi at jeg har mappet opp P: som arbeidsområdet til vårt firma. D: er en lokal 750GB SATA-harddisk jeg kjøpte i butikken for litt over 2000 NOK.
robocopy.exe P: “d:backupp” /MIR /MAXAGE:60 /XF *.jpg *.avi *.mpg *.mpeg *.mov *.mp3 Thumbs.db /S /V /NP /LOG+:”logsp_logfile.txt” /R:2 /W:5
Altså, robocopy gjør følgende: ta backup av P:, lagre det på d:ackupp, med mirror (slett lokale filer som ikke eksisterer lenger på P, og behandle kun filer som er yngre eller lik 60 dager gamle. Jeg satte samtidig på ekskludering av jpg og litt sånt, dette finner du ut av hva du vil ta vare på. Bilder og film kan man godt ta fra tape senere, jeg betrakter ikke som produksjonsviktig materiell på samme linje som f.eks. dokumenter og annet.
Les manualen til Robocopy. Eventuelt kan du også skrive robocopy /? for å få hjelpen.
Problemet med filversjoner
Vi har nå laget en brukbar lokal backup, men dette er ikke nok. Vi har nemlig bare en kopi av de siste filer. Altså mister vi den eldste versjonen av en fil, eller vi mister filen helt om den er slettet på P:.
Et alternativ her kunne selvsagt være at vi enablet VSS også på D: på den lokale maskinen, noe jeg ikke har testet ut videre. VSS er tjeneste jeg har nå, siden jeg kjører Vista, men har ikke funnet ut om jeg kan kontrollere denne til også å støtte en ekstra harddisk og ikke bare C:users-området.
Versjonshåndtering og komprimering
Uansett om vi kommer i mål med robocopy og vss, så er det en ting jeg alltid har savnet, nemlig at jeg gjerne vil ha skikkelig komprimering i backup. Den usle NTFS-komprimeringen som man kan bruke er en veldig svak komprimering, og er ikke godt nok for meg. Selv om jeg har en disk på 750gb så går nok denne ganske raskt full om jeg ikke får meg noe bedre alternativ.
7-Zip
7-zip kan ta backup av versjoner av filer. Dette fungerer på en måte hvor man først tar en vanlig backup, og deretter lager man en ny 7zip-arkiv hvor man kun lagrer de endringer som ikke finnes i den første backupen. Slik fortsetter man videre. Jeg går ikke i dybden på dette, men man finner et eksempel i denne bloggen. Dessverre bruker 7-zip ulike filer og dermed er det litt vanskelig å få oversikt. Jeg er ikke helt fornøyd med dette, selv om dette er det eneste gratis-alternativet. 7-zip lastes ned fra 7-zip.org
Endelig det jeg har letet etter, WinRAR (RAR)
Selv om jeg har brukt WinRAR lenge, var det ved en tilfeldighet at jeg kom over noen options som jeg fant interesse for: -ver og -tn. Oss ITpro-folk bryr oss selvsagt ikke om GUI’en her, så her snakker vi selvsagt om rar.exe som følger med i WinRAR-pakken.
Jeg lastet ned siste versjon av RAR og leste kjapt gjennom dokumentasjonen i rar.txt (c:program fileswinrar ar.txt). Det viste seg at Alexander Roshal (utvikleren av WinRAR) har utvidet RAR til også å støtte versjoner av filer. Ergo har vi nå nesten et helt komplett backupverktøy innbakt i RAR.
Endelig er det bare å pøse masse data inn i et rar-arkiv! Vi beholder da komprimering, og selvsagt vil endrede filer sammenlignes med eksisterende under komprimering for å oppnå så liten størrelse som mulig. Såklart krever RAR sin mann når det gjelder CPU, men de fleste har vel en brukbar maskin å kjøre dette på. Om du er av typen som ikke tåler litt venting mens maskinen arbeider i 100% CPU, så er du ingen ekte nerd! 😉
Altså,
Lag katlogen D:ackupscript og D:ackupscriptlogs
Lag filen D:ackupscript abackupavP.bat og fyll ut:
rem –tabackupavP.bat————–
@echo Starting fluorbackup at %time% %date% ;-)… >> logs%date%_log.log
rar.exe u -ed -m1 -os -ow -r -tn60d -ver10 p_last60d_10v.rar P: >>logs%date%_log.log
rem –Slutt på tabackupavp.bat—–
Opprett fila exlist.txt med følgende innhold:
————————-
*.jpg
*.mpg
*.mpeg
*.avi
*.mp3
*.mov
*Thumbs.db
————————-
Da er du klar til å ta backup av P: av siste 60 dager med max 10 versjoner av filer. Eldre versjoner vil da bli slettet fra rar-arkivet.
Forklaring av RAR-kommandoene/options:
u – oppdater arkivet. Om arkivet ikke eksisterer, opprettes det.
-ed – ikke ta med tomme mapper
-m1 – raskeste komprimering. anbefales ikke å øke denne siden det da kan gå svært tregt å oppdatere arkiver. m1 er allikevel kjempebra i forhold til -m0 som er ukomprimert
-os – ta med ntfs-streams
-ow – ta med ntfs-sikkerhetsinformasjon (eierskap, rettigheter)
-r – ta med undermapper
-tn60d – ta kun med siste 60 døgn. du kan bruke timer og minutter også, se manualen rar.txt
-ver10 – max 10 versjoner av en fil. en fil blir regnet som en ny versjon om det allerede eksisterer en fil fra før med samme versjon, og hvor den nye filen er ulik den gamle. altså om du kjører dette en gang for dagen, så er det en mulighet for en ny versjon en gang for dagen. altså har du 10 dager med ulike versjoner av en fil.
– les file excludes fra exlist.txt
p_last60d_10v.rar – filnavnet på arkivet som skal lages. skriv hva du vil
P: – katalogen som skal taes backup av
“>>logs%date%_log.log” skriv en logg over alt RAR utfører til en fil med dato. f.eks. blir dette logs11.04.2007_log.log om det kj&osla
sh;res i dag (merk at om du har engelsk i regional settings så får du en annen datostruktur og dette kan muligens ikke virke).
Nesten i mål
Da er vi nesten i mål. Du må sette opp bat-fila til å kjøres i scheduled tasks. F.eks. hver arbeidsdag kl 03:00 eller noe sånt.
Da er det til slutt en liten ting som mangler, nemlig at RAR ikke automatisk sletter de filer som er eldre enn 60 dager i kommandoen vår. Dette fikk jeg ikke til sånn uten videre, og dermed må jeg ha en egen kommando som sletter eldre filer:
—Lag filen purgeoldfiles.bat:—–
@echo Starting purge at %time% %date% >> logs%date%_purgelog.log
rar d -to60d p_last60d_10v.rar >>logs%date%_purgelog.log
——-
Hvor -to60d betyr process OLDER files than 60 days. Altså slett filer eldre enn 60dager. Og skriv som vanlig til loggen vår.
Restore av filer
Når du vil hente ut igjen fra rar-arkivet så bare åpner du det i WinRAR GUI-versjonen og henter ut de filene folk ønsker. Du vil se at flere versjoner av samme fil er tilstede,
f.eks.
minfil.txt
minfil.txt;1
minfil.txt;2
…Hvor minfil;1 er en eldre fil enn minfil.txt
Da er det bare å hente ut det du måtte trenge. Lykke til!
WinRAR lastes ned fra rarsoft.com og koster ca 300 kr i lisens på http://www.pc-ware.no. Absolutt verdt pengene.