Windows Batch Script for å sikkerhetskopiere data

Databrukere som har vokst opp med avanserte Mac- og Windows-datamaskiner er kanskje ikke klar over det, men en gang for lenge siden ble alle personlige datamaskiner kontrollert ved hjelp av et kommandolinjegrensesnitt. Ja, den klumpete kommandoboksen på Windows-maskinen din pleide å være bokstavelig talt den eneste måten de fleste noen gang har interaksjon med en datamaskin. Kommandolinjegrensesnitt var sterkt avhengig av små programmer kalt "skript", som var samlinger av operativsystemkommandoer som ble brukt til å utføre vanlige oppgaver.

Selv om de grafiske brukergrensesnittene til dagens PC-er er lysår mer sofistikerte og enkle å bruke enn de gamle kommandolinjene, er det fortsatt bruk for den eldre metoden for å kontrollere datamaskinen din. En av de vanligste og velegnede applikasjonene for et kommandolinjeskript er sikkerhetskopiering av data. Kommandolinjeskript kan automatiseres for å kjøre når som helst uten menneskelig interaksjon, og har få begrensninger. Best av alt - de er en innebygd del av Windows-operativsystemet.

Hvorfor kommandolinjeskript?

Hvorfor bruke et kommandolinjeskript når det finnes både kommersielle og gratis sikkerhetskopieringsprogrammer der ute? Vel, kommandolinjeskript har en rekke unike fordeler. Her er noen av dem:

  • Innfødte kommandoer : Hvilken bedre måte å sikkerhetskopiere data på enn å bruke funksjonene som gjøres tilgjengelig gjennom programmet som lager dataene? Enten dette er selve operativsystemet via en enkel filkopieringskommando eller en databasekommando for å produsere en gjenopprettbar binær fil, vet kildeprogrammet best hvordan det skal sikkerhetskopiere seg selv.
  • Ultimate kontroll : Siden et kommandolinjeskript følger en enkel trinn-for-trinn-prosedyre, vet du nøyaktig hva som skjer og kan enkelt endre virkemåten.
  • Rask : Siden alt er en innfødt kommando, er ingenting gjenstand for tolkning. Igjen, du bruker kommandoer levert av selve programmet, så overhead holdes på et minimum.
  • Kraftig : Jeg har ennå ikke sett en sikkerhetskopioppgave som ikke kan utføres gjennom et kommandolinjeskript ... og jeg har gjort noen funky ting. Selv om du kanskje må gjøre litt research og prøve og feile hvis du har virkelig unike behov, er vanligvis de innebygde funksjonene og funksjonene til skriptspråket du bruker mer enn tilstrekkelig.
  • Gratis og fleksibel : Det er klart at et kommandolinjeskript ikke koster noe (utenom tiden for å utvikle det), så du kan kopiere skriptene dine til et hvilket som helst antall maskiner og systemer med liten eller ingen tid eller kostnad. Sammenlign dette med kostnadene ved å kjøpe lisenser for sikkerhetskopieringsprogramvare på flere servere og/eller stasjonære maskiner.

En rask oversikt over Backup Batch Script

De fleste har aldri lært å bruke kommandolinjeskripting, og det anses som noe av en "svart kunst". Imidlertid er det faktisk en ganske enkel ting å lære. For å demonstrere kraften til kommandolinjen, gir jeg et enkelt Windows batch-skript som du kan bruke til å sikkerhetskopiere viktige data. Dette konfigurerbare og tilpassbare skriptet krever ingen kunnskap (eller vilje til å lære) om Windows batch-skriptspråk, men hvis du bestemmer deg for å lære mer om Windows batch-skripting, vil du finne at dette skriptet er et godt utgangspunkt. .

Hva sikkerhetskopieringsskriptet gjør:

  1. Oppretter komplette eller daglige inkrementelle (se nedenfor for en definisjon) sikkerhetskopier av filer og mapper du spesifiserer i en separat konfigurasjonstekstfil (se nedenfor).
    • Når en mappe er navngitt, blir den mappen og alle undermappene sikkerhetskopiert.
    • Når en fil er navngitt, blir bare den filen sikkerhetskopiert.
  2. Komprimerer (zipper) de sikkerhetskopierte filene. Etter at alle filene som skal sikkerhetskopieres er kopiert, komprimeres de for å spare plass. 7-Zip må være installert på systemet ditt for at dette skal fungere.
  3. Daterer den komprimerte filen og flytter den til et lagringssted. Etter at backupfilene er komprimert, får det resulterende arkivet et filnavn i henhold til gjeldende dato og flyttes deretter til et konfigurert lagringssted, for eksempel en ekstern stasjon eller nettverksplassering.
  4. Rydder opp etter seg. Etter at alle oppgavene er fullført, rydder batchskriptet opp i alle de midlertidige filene det opprettet.

Krav:

Windows 2000/XP/2003/Vista eller nyere

7-Zip (det er gratis)

Konfigurasjonsfil:

Konfigurasjonsfilen er ganske enkelt en tekstfil som inneholder filer og mapper som skal sikkerhetskopieres, angitt ett sikkerhetskopielement per linje. Denne filen ha navnet "BackupConfig.txt" og være plassert i samme mappe som sikkerhetskopiskriptet. Her er et eksempel på en BackupConfig.txt-fil (merk at "#"-tegnet på den første linjen indikerer at linjen er en kommentar; kommentarer ignoreres alltid når skriptet kjøres):

# Skriv inn fil- og mappenavn, ett per linje.

C:Dokumenter og innstillingerJason FaulknerDesktop C:Dokumenter og innstillingerJason FaulknerMine dokumenterViktige filer C:ScriptsBackupScript.bat

Eksemplet ovenfor vil sikkerhetskopiere Windows-brukeren Jason Faulkners skrivebord (og alle mappene på skrivebordet), mappen kalt "Viktige filer" inne i Mine dokumenter (og alle mappene inne i "Viktige filer") og filen "BackupScript.bat" inne i C:Scripts-katalogen.

Typer sikkerhetskopier:

  • Full backup: En fullstendig kopi av alle filer og mapper (inkludert undermapper) er inkludert i sikkerhetskopien.
  • Inkrementell sikkerhetskopi: Når en mappe leveres, er det bare filer som er opprettet eller endret på dagens dato er

    støttet opp. Når en fil leveres, blir den alltid sikkerhetskopiert, uavhengig av når den ble endret.

Data Backup Windows Batch Script

Jeg vil understreke at dette skriptet er veldig grunnleggende, da alt det gjør er å lage sikkerhetskopier ved å bruke en enkel filkopi. Det er noen konfigurasjonsalternativer du kan angi:

  • Sikkerhetskopieringsplasseringen der de resulterende komprimerte sikkerhetskopieringsfilene lagres.
  • Ukedagen full sikkerhetskopiering kjøres (enhver annen dag vil kjøre en inkrementell sikkerhetskopi).
  • Plassering av hvor 7-Zip er installert på datamaskinen din. Skriptet er automatisk satt til å se på standardplasseringen.

Hvis du har forslag eller funksjonsforespørsler, vennligst kommenter nedenfor. Jeg vil virkelig gjerne lage en oppfølgingsartikkel til dette innlegget som inneholder et oppdatert skript basert på leserinnspill. Hvis du trenger instruksjoner om hvordan du "bruker" dette skriptet eller setter opp en planlagt oppgave, kan du ta en titt på lenkene under skriptkilden.

Uten videre, her er den:

Merk: Siden sitatene ikke vises riktig nedenfor (og som et resultat kan ødelegge skriptet), har jeg inkludert en ren tekstlink under skriptet som du kan bruke for å få en nøyaktig kilde å kopiere fra.

@ECHO OFF REM BackupScript REM versjon 1.01, Oppdatert: 2008-05-21 REM Av Jason Faulkner (articles[-at-]132solutions.com) REM Utfører full eller inkrementell sikkerhetskopiering av mapper og filer konfigurert av brukeren. REM-bruk--- REM > BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM ---Konfigurasjonsalternativer--- REM Mappeplassering der du vil lagre det resulterende sikkerhetskopieringsarkivet. REM Denne mappen må eksistere. Ikke sett en '' på slutten, dette legges til automatisk. REM Du kan angi en lokal bane, en ekstern stasjonsbokstav (f.eks. F:) eller en nettverksplassering (f.eks. \serverbackups) SET BackupStorage=C:Backup REM Hvilken ukedag vil du utføre en full backup på? REM Skriv inn ett av følgende: Søn, Man, Tir, Ons, Tor, Fre, Lør, * REM Enhver ukedag, bortsett fra den som er spesifisert nedenfor, vil kjøre en inkrementell sikkerhetskopi. REM Hvis du skriver inn '*', vil en fullstendig sikkerhetskopi kjøres hver gang. SET FullBackupDay=* REM Plassering der 7-Zip er installert på datamaskinen din. REM Standarden er i en mappe, '7-Zip' i Program Files-katalogen. SET InstallLocationOf7Zip=%ProgramFiles%7-Zip REM +--------------------------------------- ----------------------------------+ REM | Ikke endre noe under her med mindre du vet hva du gjør. | REM +------------------------------------------------ -----------------------+ REM-bruksvariabler. SET exe7Zip=%InstallLocationOf7Zip%7z.exe SET dirTempBackup=%TEMP%backup SET filBackupConfig=BackupConfig.txt REM-validering. HVIS IKKE FINNER %filBackupConfig% ( ECHO Ingen konfigurasjonsfil funnet, mangler: %filBackupConfig% GÅ TIL Slutt ) HVIS IKKE EKSISTERER "%exe7Zip%" ( ECHO 7-Zip er ikke installert på stedet: %dir7Zip% ECHO Vennligst oppdater katalogen der 7-Zip er installert GOTO End ) REM Backup variabler. FOR /f "tokens=1,2,3,4 delims=/ " %%a IN ('dato /t') GJØR ( SET DayOfWeek=%%a SET NowDate=%%d-%%b-%%c SET FileDate=%%b-%%c-%%d ) IF {%FullBackupDay%}=={*} SET FullBackupDay=%DayOfWeek% IF /i {%FullBackupDay%}=={%DayOfWeek%} ( SET txtBackup =Full SET swXCopy=/e ) ELSE ( SET txtBackup=Inkrementelt SET swXCopy=/s /d:%FileDate% ) ECHO Begynner å kopiere filer. HVIS IKKE FINNES "%dirTempBackup%" MKDIR "%dirTempBackup%" FOR /f "skip=1 tokens=*" %%A IN (%filBackupConfig%) GJØR (SETT Current=%%~A HVIS IKKE FINNES "!Current! " ( EKKOFEIL! Ikke funnet: !Gjeldende! ) ELSE ( EKKOkopiering: !Gjeldende! SET Destination=%dirTempBackup%!Current:~0,1!%%~pnxA REM Bestem om oppføringen er en fil eller katalog. IF "%%~xA"=="" ( REM-katalog. XCOPY "!Gjeldende!" "!Destinasjon!" /v /c /i /g /h /q /r /y %swXCopy% ) ELSE ( REM-fil. COPY /v /y "!Current!" "!Destination!" ) ) ) ECHO Ferdig med å kopiere filer. EKKO. SET BackupFileDestination=%BackupStorage%Backup_%FileDate%_%txtBackup%.zip REM Hvis sikkerhetskopifilen finnes, fjern den til fordel for den nye filen. HVIS EKSISTER "%BackupFileDestination%" DEL /f /q "%BackupFileDestination%" EKKO Komprimerer sikkerhetskopierte filer. (Nytt vindu) REM Komprimer filer med 7-Zip i en prosess med lavere prioritet. START "Komprimere sikkerhetskopi. IKKE LUKK" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 "%BackupFileDestination%" "%dirTempBackup%" ECHO Ferdig med å komprimere sikkerhetskopierte filer. EKKO. ECHO Rydd opp. HVIS EKSISTER "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%" EKKO. :End ECHO Finished. EKKO. ENDLOKALT

Ren tekstkilde er tilgjengelig her: backup

Hvis du trenger hjelp til å komme i gang med å implementere dette skriptet, her er et par lenker for å hjelpe deg:

  • Hvordan lage en batch-fil
  • Hvordan lage en Windows-planlagt oppgave

Dette er det samme skriptet jeg bruker til å sikkerhetskopiere datamaskinen min daglig (med et par modifikasjoner selvfølgelig), så jeg vet at det fungerer veldig bra. Jeg håper du finner det nyttig.

Nyt!