Windows Batch Script för att säkerhetskopiera data

Datoranvändare som har vuxit upp med avancerade Mac- och Windows-datorer kanske inte är medvetna om det, men en gång, för länge sedan, styrdes alla persondatorer med ett kommandoradsgränssnitt. Ja, den där klumpiga kommandorutan på din Windows-maskin brukade vara bokstavligen det enda sättet som de flesta någonsin interagerade med en dator. Kommandoradsgränssnitt förlitade sig starkt på små program som kallas "skript", som var samlingar av operativsystemkommandon som användes för att utföra vanliga uppgifter.

Även om de grafiska användargränssnitten på dagens datorer är ljusår mer sofistikerade och enkla att använda än de gamla kommandoraderna, finns det fortfarande användningsområden för den äldre metoden att styra din dator. En av de vanligaste och väl lämpade programmen för ett kommandoradsskript är säkerhetskopiering av data. Kommandoradsskript kan automatiseras för att köras när som helst utan mänsklig interaktion och har få begränsningar. Bäst av allt – de är en inbyggd del av Windows-operativsystemet.

Varför kommandoradsskript?

Varför använda ett kommandoradsskript när det finns både kommersiella och gratis säkerhetskopieringsprogram där ute? Tja, kommandoradsskript har ett antal unika fördelar. Här är några av dem:

  • Inbyggda kommandon : Vilket bättre sätt att säkerhetskopiera data än att använda de funktioner som görs tillgängliga genom programmet som skapar data? Oavsett om detta är själva operativsystemet via ett enkelt filkopieringskommando eller ett databaskommando för att producera en återställbar binär fil, vet källprogrammet bäst hur man säkerhetskopierar sig själv.
  • Ultimate kontroll : Eftersom ett kommandoradsskript följer en enkel steg-för-steg-procedur vet du exakt vad som händer och kan enkelt ändra beteendet.
  • Snabb : Eftersom allt är ett inbyggt kommando är ingenting föremål för tolkning. Återigen, du använder kommandon som tillhandahålls av själva programmet, så overhead hålls till ett minimum.
  • Kraftfull : Jag har ännu inte sett en säkerhetskopieringsuppgift som inte kan utföras via ett kommandoradsskript... och jag har gjort några läckra saker. Även om du kan behöva göra en del efterforskningar och försök och misstag om du har verkligen unika behov, är vanligtvis de inbyggda funktionerna och funktionerna i skriptspråket du använder mer än tillräckliga.
  • Gratis och flexibel : Uppenbarligen kostar ett kommandoradsskript ingenting (utanför tiden att utveckla det), så du kan kopiera dina skript till valfritt antal maskiner och system med liten eller ingen tid eller kostnad. Jämför detta med kostnaden för att köpa licenser för säkerhetskopieringsprogram på flera servrar och/eller stationära datorer.

En snabb översikt av Backup Batch Script

De flesta människor har aldrig lärt sig att använda kommandoradsskript, och det anses vara något av en "svartkonst". Men det är faktiskt en ganska enkel sak att lära sig. För att demonstrera kraften i kommandoraden tillhandahåller jag ett enkelt Windows-batchskript som du kan använda för att säkerhetskopiera dina viktiga data. Det här konfigurerbara och anpassningsbara skriptet kräver ingen kunskap (eller vilja att lära sig) om Windows batchskriptspråk, men om du bestämmer dig för att du vill lära dig mer om Windows batchscripting kommer du att tycka att det här skriptet är en bra startplats .

Vad säkerhetskopieringsskriptet gör:

  1. Skapar fullständiga eller dagliga inkrementella (se nedan för en definition) säkerhetskopior av filer och mappar som du anger i en separat konfigurationstextfil (se nedan).
    • När en mapp namnges säkerhetskopieras den mappen och alla undermappar.
    • När en fil namnges, säkerhetskopieras bara den filen.
  2. Komprimerar (zippar) de säkerhetskopierade filerna. När alla filer som ska säkerhetskopieras har kopierats komprimeras de för att spara utrymme. 7-Zip måste vara installerat på ditt system för att detta ska fungera.
  3. Daterar den komprimerade filen och flyttar den till en lagringsplats. Efter att säkerhetskopieringsfilerna har komprimerats får det resulterande arkivet ett filnamn enligt det aktuella datumet och flyttas sedan till en konfigurerad lagringsplats, till exempel en extern enhet eller nätverksplats.
  4. Rengör efter sig. När alla uppgifter är slutförda rensar batchskriptet upp alla temporära filer som det skapade.

Krav:

Windows 2000/XP/2003/Vista eller senare

7-Zip (det är gratis)

Konfigurationsfil:

Konfigurationsfilen är helt enkelt en textfil som innehåller filer och mappar att säkerhetskopiera, angett ett backupobjekt per rad. Den här filen måste heta "BackupConfig.txt" och finnas i samma mapp som säkerhetskopieringsskriptet. Här är ett exempel på en BackupConfig.txt-fil (observera att tecknet "#" på första raden indikerar att raden är en kommentar; kommentarer ignoreras alltid när skriptet körs):

# Ange fil- och mappnamn, ett per rad.

C:Dokument och inställningarJason FaulknerDesktop C:Dokument och inställningarJason FaulknerMina dokument Viktiga filer C:ScriptsBackupScript.bat

Exemplet ovan skulle säkerhetskopiera Windows-användaren Jason Faulkners skrivbord (och alla mappar på skrivbordet), mappen som heter "Important Files" inuti Mina dokument (och alla mappar inuti "Important Files") och filen "BackupScript.bat" inuti katalogen C:Scripts.

Typer av säkerhetskopior:

  • Fullständig säkerhetskopia: En fullständig kopia av alla filer och mappar (inklusive undermappar) ingår i säkerhetskopian.
  • Inkrementell säkerhetskopiering: När en mapp tillhandahålls är det bara filer som skapats eller ändrats på dagens datum är

    backade upp. När en fil tillhandahålls säkerhetskopieras den alltid, oavsett när den ändrades.

Data Backup Windows Batch Script

Jag vill betona att detta skript är väldigt grundläggande, eftersom allt det gör är att skapa säkerhetskopior genom att använda en enkel filkopia. Det finns några konfigurationsalternativ du kan ställa in:

  • Lagringsplatsen för säkerhetskopiering där de resulterande komprimerade säkerhetskopieringsfilerna lagras.
  • Veckodagen den fullständiga säkerhetskopieringen körs (vilken annan dag som helst skulle köra en inkrementell säkerhetskopiering).
  • Plats där 7-Zip är installerat på din dator. Skriptet ställs automatiskt in för att se ut på standardplatsen.

Om du har några förslag eller önskemål om funktioner, vänligen kommentera nedan. Jag skulle verkligen älska att göra en uppföljningsartikel till det här inlägget som innehåller ett uppdaterat manus baserat på läsarens input. Om du behöver instruktioner om hur du "använder" det här skriptet eller ställer in en schemalagd uppgift, ta en titt på länkarna under skriptkällan.

Utan vidare, här är den:

Notera: Eftersom citaten inte visas korrekt nedan (och som ett resultat kan förstöra skriptet) har jag inkluderat en vanlig textlänk under skriptet som du kan använda för att få en korrekt källa att kopiera från.

@ECHO OFF REM BackupScript REM Version 1.01, Uppdaterad: 2008-05-21 REM Av Jason Faulkner (articles[-at-]132solutions.com) REM Utför fullständiga eller inkrementella säkerhetskopieringar av mappar och filer som konfigurerats av användaren. REM-användning--- REM > BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM ---Konfigurationsalternativ--- REM Mappplats där du vill lagra det resulterande säkerhetskopieringsarkivet. REM Denna mapp måste finnas. Sätt inte ett '' på slutet, detta kommer att läggas till automatiskt. REM Du kan ange en lokal sökväg, en extern enhetsbeteckning (ex. F:) eller en nätverksplats (ex. \serverbackups) SET BackupStorage=C:Backup REM Vilken veckodag vill du göra en fullständig säkerhetskopiering på? REM Ange något av följande: Sön, Mån, Tis, Ons, Tors, Fre, Lör, * REM Alla veckodagar förutom den som anges nedan kommer att köra en inkrementell säkerhetskopiering. REM Om du anger '*' kommer en fullständig säkerhetskopiering att köras varje gång. SET FullBackupDay=* REM Plats där 7-Zip är installerat på din dator. REM Standard finns i en mapp, '7-Zip' i din Program File-katalog. SET InstallLocationOf7Zip=%ProgramFiles%7-Zip REM +--------------------------------------- --------------------------------+ REM | Ändra inget här nedan om du inte vet vad du gör. | REM +------------------------------------------------ -----------------------+ REM Användningsvariabler. SET exe7Zip=%InstallLocationOf7Zip%7z.exe SET dirTempBackup=%TEMP%backup SET filBackupConfig=BackupConfig.txt REM-validering. OM INTE FINNS %filBackupConfig% ( ECHO Ingen konfigurationsfil hittades, saknas: %filBackupConfig% GÅ TILL Slut ) OM INTE FINNS "%exe7Zip%" ( ECHO 7-Zip är inte installerat på platsen: %dir7Zip% ECHO Vänligen uppdatera katalogen där 7-Zip är installerat GÅ TILL Slut ) REM Backup-variabler. FÖR /f "tokens=1,2,3,4 delims=/ " %%a IN ('datum /t') GÖ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 =Fullständigt SET swXCopy=/e ) ELSE ( SET txtBackup=Inkrementell SET swXCopy=/s /d:%FileDate% ) ECHO Börjar kopiera filer. OM INTE FINNS "%dirTempBackup%" MKDIR "%dirTempBackup%" FÖR /f "skip=1 tokens=*" %%A IN (%filBackupConfig%) GÖR ( SET Current=%%~A OM INTE FINNS "!Current! " ( ECHO ERROR! Not found: !Current! ) ELSE ( ECHO-kopiering: !Current! SET Destination=%dirTempBackup%!Current:~0,1!%%~pnxA REM Bestäm om posten är en fil eller katalog. IF "%%~xA"=="" ( REM Directory. XCOPY "!Current!" "!Destination!" /v /c /i /g /h /q /r /y %swXCopy% ) ANNAT ( REM-fil. COPY /v /y "!Current!" "!Destination!" ) ) ) ECHO Klar med att kopiera filer. EKO. SET BackupFileDestination=%BackupStorage%Backup_%FileDate%_%txtBackup%.zip REM Om säkerhetskopian finns, ta bort den till förmån för den nya filen. OM FINNS "%BackupFileDestination%" DEL /f /q "%BackupFileDestination%" ECHO Komprimerar säkerhetskopierade filer. (Nytt fönster) REM Komprimera filer med 7-Zip i en process med lägre prioritet. STARTA "Komprimera säkerhetskopiering. STÄNG INTE" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 "%BackupFileDestination%" "%dirTempBackup%" ECHO Klar med komprimering av säkerhetskopierade filer. EKO. ECHO Städning. OM FINNS "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%" ECHO. :Avsluta ECHO Finished. EKO. ENDLOKALT

Oformaterad textkälla är tillgänglig här: backup

Om du behöver hjälp med att komma igång med att implementera detta skript, här är ett par länkar som hjälper dig:

  • Hur man skapar en batchfil
  • Hur man skapar en schemalagd Windows-uppgift

Det här är samma skript som jag använder för att säkerhetskopiera min dator dagligen (med ett par modifieringar såklart), så jag vet att det fungerar väldigt bra. Jag hoppas att du tycker att det är användbart.

Njut av!