• Jeg ved det, og det gør vi nok allesammen… det er en god idé at have en backup af de data man har på ens computer. Indtil videre har jeg gjort dette ved at have en ekstern harddisk som jeg (alt for sjældent) koblede til min computer, og så kørte et script der kopierede alle ændrede filer over på den. Det virkede, men blev ikke gjort ret ofte, så min backup kunne godt risikere at være flere måneder gammel.

    Da jeg har en QNAP TS-219P NAS stående, var det jo nærliggende at bruge den til backup, men så var problemet at finde noget passende software. Jeg ønskede noget hvor jeg ikke skulle gøre noget aktivt efter at det var sat op, så det var ikke en løsning at fortsætte med mit eget script. Efter megen søgen og læsen af anmeldelser, så endte jeg med at installere programmet CrashPlan. Programmet virker ved at køre en tjeneste i baggrunden der holder øje med de filer der ændres på din harddisk, og så laver den med jævne mellemrum (konfigurerbart for den betalte version, en gang om dagen for gratisversionen) en kopi af disse. Det er også muligt at gå tilbage i tiden og hente en fil man fx lige er kommet til at slette.

    Installationen er simpel, men opsætningen tog lidt tid, og det er egentlig primært det som dette blogindlæg handler om. Man kan købe diskplads hos CrashPlan til ganske rimelige priser, men så er jeg begrænset af min internethastighed når jeg skal uploade data til dem. Derfor foretrækker jeg at bruge min NAS server, men CrashPlan kan ikke umiddelbart gemme data til den. CrashPlan kan dog tage backup til en folder, så jeg mappede straks en folder fra min NAS til Z: drevet på min maskine for at tage backup til den. Stor var min overraskelse da jeg så at det ikke var muligt at vælge Z: drevet inde fra CrashPlan.

    Forklaringen er at backuplokationen vælges af den CrashPlan tjeneste der kører i baggrunden, og den kører ikke som din egen bruger, men som brugeren SYSTEM. Denne bruger har dog ikke adgang til de drev du selv har mappet, og derfor kan CrashPlan ikke se Z: drevet. Løsningen var jo ligetil… jeg måtte mappe drevet som SYSTEM brugeren. Det kan gøres ved at køre en kommando via Windows’ Task Scheduler (eller Opgavestyring som den vist hedder i en dansk Windows). Her kan man vælge at starte en opgave når brugeren logger på, og samtidigt sige at den opgave skal køre under brugeren SYSTEM.

    Så opstår der bare et lille problem. Det er ikke altid at netværket er klart lige efter man logger på, og så fejler denne kommando. Man kan løse dette ved at forsinke den fx 30 sekunder, men er det for lidt/meget? Jeg gider heller ikke have at den skal forsøge hvis den ikke er på mit netværk. Jeg indså derfor at jeg måtte lave et lille script til at mappe dette drev som nogenlunde gør følgende:

    Den identificerer mit netværk ud fra hvilket standard gateway der er valgt. Hvis der ikke er valgt en endnu, så prøver den igen i et minuts tid før den giver op og erkender at der nok bare ikke er netværksadgang. Såfremt den finder den rigtige default gateway, så prøver den at pinge en bestemt IP adresse (hos mig er det min NAS boks). Først hvis dette lykkes, så vil den mappe det valgte drev. Det er ikke ufejlbarligt, men det virker i langt de fleste situationer, og endnu bedre er at det virker uden at jeg skal gøre noget som helst når først det er sat op, hvilket jo også var et af målene med at installere CrashPlan.

    I tilfælde af at du står med samme problem, så er scriptet som følger:


    RequiredGateway = "10.6.6.1"
    ServerIP = "10.6.6.2"
    Username = ""
    Password = ""
    ShareName = ""

    Timeout = 60
    PingRetries = 5

    i = 0
    Do
    i = i + 1
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")

    Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

    For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.DefaultIPGateway) Then
    For j=LBound(IPConfig.DefaultIPGateway) to UBound(IPConfig.DefaultIPGateway)
    DefaultGateway = IPConfig.DefaultIPGateway(j)
    if StrComp(DefaultGateway,RequiredGateway,1) = 0 Then
    Set Shell = wscript.createObject("wscript.shell")
    strCommand = "ping -n 1 -w 300 " & ServerIP
    k = 0
    Do
    k = k + 1
    ReturnCode = Shell.Run(strCommand, 0, True)
    If ReturnCode = 0 Then
    strCommand = "net use Z: \\" & ServerIP & "\" & ShareName & " /PERSISTENT:NO /USER:" & Username & " " & Password
    ReturnCode = Shell.Run(strCommand, 0, True)
    Exit Do
    Else
    WScript.Sleep 1000
    End If
    Loop While k

    Husk at rette parametrene øverst i scriptet til at passe til din opsætning. Vær ikke nervøs når du starter op og CrashPlan siger at den ikke kan finde sin backuplokation. Det er fordi dens tjeneste er startet før du er logget på og får mappet drevet. Den finder i løbet af et par minutter ud af at drevet er tilbage, og begynder sin backup. Du behøver ikke at gøre noget.

    Ellers så ser CrashPlan ud til at være et ganske fornuftigt program. Hvis man har mindre datamænger kan man muligvis med fordel bruge den plads de stiller til rådighed for et beskedent beløb. Der er dog 30 dages gratis prøvetid med programmet, så man kan jo altid se om det fungerer til ens behov. Dine data kan krypteres med en nøgle du selv vælger, og på den måde burde der (såfremt det er implementeret korrekt) ikke være problemer med at uploade dine data til en fremmed server. Den betalte version af programmet giver dig mulighed for at tage backup oftere, samt indstille flere ting om hvor længe, og hvor mange gamle versioner, af en fil der skal gemmes.

    Posted by Michael @ 16:04

Der er lukket for kommentarer.