Windows batchscript om gegevens te back-uppen

Computergebruikers die zijn opgegroeid met geavanceerde Mac- en Windows-computers zijn zich er misschien niet van bewust, maar ooit, lang geleden, werden alle pc's bestuurd via een opdrachtregelinterface. Ja, dat onhandige opdrachtvenster op uw Windows-computer was vroeger letterlijk de enige manier waarop de meeste mensen ooit met een computer omgingen. Opdrachtregelinterfaces waren sterk afhankelijk van kleine programma's die 'scripts' worden genoemd, dit waren verzamelingen van besturingssysteemopdrachten die werden gebruikt om algemene taken uit te voeren.

Hoewel de grafische gebruikersinterfaces van de huidige pc's lichtjaren geavanceerder en gebruiksvriendelijker zijn dan de oude opdrachtregels, zijn er nog steeds toepassingen voor de oudere methode om uw computer te besturen. Een van de meest voorkomende en meest geschikte toepassingen voor een opdrachtregelscript is gegevensback-up. Opdrachtregelscripts kunnen worden geautomatiseerd om op elk moment te worden uitgevoerd zonder enige menselijke interactie en hebben weinig beperkingen. Het beste van alles is dat ze een ingebouwd onderdeel zijn van het Windows-besturingssysteem.

Waarom opdrachtregelscripts?

Waarom een ​​opdrachtregelscript gebruiken als er zowel commerciële als gratis back-upprogramma's zijn? Welnu, opdrachtregelscripts hebben een aantal unieke voordelen. Hier zijn er een paar:

  • Inheemse opdrachten : Wat is een betere manier om een ​​back-up van gegevens te maken dan door de functies te gebruiken die beschikbaar worden gesteld door het programma dat de gegevens maakt? Of dit nu het besturingssysteem zelf is via een eenvoudige opdracht voor het kopiëren van bestanden of een databaseopdracht om een ​​herstelbaar binair bestand te maken, het bronprogramma weet het beste hoe zichzelf een back-up te maken.
  • Ultieme controle : Aangezien een opdrachtregelscript een eenvoudige stapsgewijze procedure volgt, weet u precies wat er gebeurt en kunt u het gedrag eenvoudig aanpassen.
  • Snel : Aangezien alles een native commando is, is niets onderhevig aan interpretatie. Nogmaals, u gebruikt opdrachten die door het programma zelf worden geleverd, dus de overhead wordt tot een minimum beperkt.
  • Krachtig : Ik moet nog een back-uptaak ​​zien die niet kan worden bereikt via een opdrachtregelscript ... en ik heb wat funky dingen gedaan. Hoewel je misschien wat onderzoek en vallen en opstaan ​​moet doen als je echt unieke behoeften hebt, zijn de ingebouwde functies en kenmerken van de scripttaal die je gebruikt meer dan voldoende.
  • Gratis en flexibel : Het is duidelijk dat een opdrachtregelscript niets kost (buiten de tijd om het te ontwikkelen), dus u kunt uw scripts naar een willekeurig aantal machines en systemen kopiëren met weinig tot geen tijd of kosten. Vergelijk dit met de aanschafkosten van licenties voor back-upsoftware op meerdere servers en/of desktopcomputers.

Een snel overzicht van het back-upbatchscript

De meeste mensen hebben nooit geleerd om command-line scripting te gebruiken, en het wordt beschouwd als een beetje een "zwarte kunst". Het is echter eigenlijk vrij eenvoudig om te leren. Om de kracht van de opdrachtregel te demonstreren, bied ik een eenvoudig Windows-batchscript dat u kunt gebruiken om een ​​back-up van uw belangrijke gegevens te maken. Dit configureerbare en aanpasbare script vereist geen kennis (of bereidheid om te leren) van de Windows batchscriptingtaal, maar als u besluit dat u meer wilt weten over Windows batchscripting, zult u merken dat dit script een goed startpunt is .

Wat het back-upscript doet:

  1. Maakt volledige of dagelijkse incrementele (zie hieronder voor een definitie) back-ups van bestanden en mappen die u opgeeft in een afzonderlijk configuratietekstbestand (zie hieronder).
    • Wanneer een map een naam heeft, wordt een back-up gemaakt van die map en van alle submappen.
    • Wanneer een bestand een naam heeft, wordt alleen van dat bestand een back-up gemaakt.
  2. Comprimeert (zipt) de back-upbestanden. Nadat alle bestanden waarvan een back-up moet worden gemaakt, zijn gekopieerd, worden ze gecomprimeerd om ruimte te besparen. Om dit te laten werken, moet 7-Zip op uw systeem zijn geïnstalleerd.
  3. Dateert het gecomprimeerde bestand en verplaatst het naar een opslaglocatie. Nadat de back-upbestanden zijn gecomprimeerd, krijgt het resulterende archief een bestandsnaam volgens de huidige datum en vervolgens verplaatst naar een geconfigureerde opslaglocatie, zoals een externe schijf of netwerklocatie.
  4. Ruimt zichzelf op. Nadat alle taken zijn voltooid, ruimt het batchscript alle tijdelijke bestanden op die het heeft gemaakt.

Vereisten:

Windows 2000/XP/2003/Vista of nieuwer

7-Zip (het is gratis)

Configuratiebestand:

Het configuratiebestand is gewoon een tekstbestand dat bestanden en mappen bevat waarvan een back-up moet worden gemaakt, waarbij één back-upitem per regel is ingevoerd. Dit bestand moeten de naam "BackupConfig.txt" krijgen en zich in dezelfde map bevinden als het back-upscript. Hier is een voorbeeld van een BackupConfig.txt-bestand (let op, het "#"-teken op de eerste regel geeft aan dat de regel een opmerking is; opmerkingen worden altijd genegeerd wanneer het script wordt uitgevoerd):

# Voer bestands- en mapnamen in, één per regel.

C:Documenten en instellingenJason FaulknerDesktop C:Documenten en instellingenJason FaulknerMijn documentenBelangrijke bestanden C:ScriptsBackupScript.bat

Het bovenstaande voorbeeld zou een back-up maken van het bureaublad van de Windows-gebruiker Jason Faulkner (en alle mappen op het bureaublad), de map met de naam "Belangrijke bestanden" in Mijn documenten (en alle mappen in "Belangrijke bestanden") en het bestand "BackupScript.bat" erin de C:Scripts-map.

Soorten back-ups:

  • Volledige back-up: een volledige kopie van alle bestanden en mappen (inclusief submappen) wordt in de back-up opgenomen.
  • Incrementele back-up: wanneer er een map is, worden alleen bestanden gemaakt of gewijzigd op de huidige datum zijn

    gebackupt. Wanneer een bestand wordt aangeleverd, wordt er altijd een back-up van gemaakt, ongeacht wanneer het is gewijzigd.

Het Windows Batch-script voor gegevensback-up

Ik wil benadrukken dat dit script erg basaal is, omdat het alleen back-ups maakt door een eenvoudige bestandskopie te gebruiken. Er zijn enkele configuratie-opties die u kunt instellen:

  • De back-upopslaglocatie waar de resulterende gecomprimeerde back-upbestanden worden opgeslagen.
  • De dag van de week waarop de volledige back-up wordt uitgevoerd (elke andere dag zou een incrementele back-up uitvoeren).
  • Locatie waar 7-Zip op uw computer is geïnstalleerd. Het script is automatisch ingesteld om op de standaardlocatie te kijken.

Als u suggesties of functieverzoeken heeft, kunt u hieronder reageren. Ik zou heel graag een vervolgartikel op dit bericht willen schrijven met een bijgewerkt script op basis van invoer van de lezer. Als je instructies nodig hebt over het "gebruiken" van dit script of het instellen van een geplande taak, bekijk dan de links onder de scriptbron.

Zonder verder oponthoud, hier is het:

Opmerking: Aangezien de aanhalingstekens hieronder niet correct worden weergegeven (en als gevolg daarvan het script in de war kunnen brengen), heb ik een link in platte tekst onder het script opgenomen die u kunt gebruiken om een ​​nauwkeurige bron te krijgen om van te kopiëren.

@ECHO OFF REM BackupScript REM versie 1.01, bijgewerkt: 21-05-2008 REM Door Jason Faulkner (articles[-at-]132solutions.com) REM Voert volledige of incrementele back-ups uit van mappen en bestanden die door de gebruiker zijn geconfigureerd. REM Gebruik--- REM > BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION INSCHAKELEN REM ---Configuratieopties--- REM Maplocatie waar u het resulterende back-uparchief wilt opslaan. REM Deze map moet bestaan. Zet geen '' aan het einde, dit wordt automatisch toegevoegd. REM U kunt een lokaal pad, een externe stationsletter (bijv. F:) of een netwerklocatie (bijv. \serverbackups) invoeren SET BackupStorage=C:Backup REM Op welke dag van de week wilt u een volledige back-up uitvoeren? REM Voer een van de volgende opties in: zo, ma, di, wo, do, vr, za, * REM Elke andere dag van de week dan de hieronder gespecificeerde zal een incrementele back-up uitvoeren. REM Als u '*' invoert, wordt er elke keer een volledige back-up uitgevoerd. SET FullBackupDay=* REM Locatie waar 7-Zip op uw computer is geïnstalleerd. REM De standaard staat in een map, '7-Zip' in de map Program Files. SET InstallLocationOf7Zip=%ProgramFiles%7-Zip REM +--------------------------------------- --------------------------------+ REM | Verander hier niets, tenzij u weet wat u doet. | REM +------------------------------------------------ -----------------------+ REM Gebruiksvariabelen. SET exe7Zip=%InstallLocationOf7Zip%7z.exe SET dirTempBackup=%TEMP%backup SET filBackupConfig=BackupConfig.txt REM-validatie. INDIEN NIET BESTAAN %filBackupConfig% ( ECHO Geen configuratiebestand gevonden, ontbreekt: %filBackupConfig% GOTO End ) INDIEN NIET BESTAAN "%exe7Zip%" ( ECHO 7-Zip is niet geïnstalleerd op de locatie: %dir7Zip% ECHO Werk de map bij waar 7-Zip is geïnstalleerd GOTO End ) REM Back-upvariabelen. FOR /f "tokens=1,2,3,4 delims=/ " %%a IN ('date /t') DO ( SET DayOfWeek=%%a SET NowDate=%%d-%%b-%%c SET FileDate=%%b-%%c-%%d ) IF {%FullBackupDay%}=={*} SET FullBackupDay=%DayOfWeek% IF /i {%FullBackupDay%}=={%DayOfWeek%} ( SET txtBackup =Volledige SET swXCopy=/e ) ELSE ( SET txtBackup=Incrementele SET swXCopy=/s /d:%FileDate% ) ECHO Begint met het kopiëren van bestanden. INDIEN NIET BESTAAN "%dirTempBackup%" MKDIR "%dirTempBackup%" FOR /f "skip=1 tokens=*" %%A IN (%filBackupConfig%) DOEN ( STEL Current=%%~A INDIEN NIET BESTAAT "!Current! " ( ECHO ERROR! Niet gevonden: !Current! ) ELSE ( ECHO Kopiëren: !Current! SET Destination=%dirTempBackup%!Current:~0,1!%%~pnxA REM Bepaal of het item een ​​bestand of map is. IF "%%~xA"=="" ( REM Directory. XCOPY "!Current!" "!Destination!" /v /c /i /g /h /q /r /y %swXCopy% ) ELSE ( REM-bestand. COPY /v /y "!Current!" "!Destination!" ) ) ) ECHO Klaar met kopiëren van bestanden. ECHO. SET BackupFileDestination=%BackupStorage%Backup_%FileDate%_%txtBackup%.zip REM Als het back-upbestand bestaat, verwijder het dan in plaats van het nieuwe bestand. INDIEN BESTAAN "%BackupFileDestination%" DEL /f /q "%BackupFileDestination%" ECHO Comprimeren van back-upbestanden. (Nieuw venster) REM Comprimeer bestanden met 7-Zip in een proces met een lagere prioriteit. START "Back-up comprimeren. NIET SLUITEN" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 "%BackupFileDestination%" "%dirTempBackup%" ECHO Gereed met comprimeren van back-upbestanden. ECHO. ECHO Opruimen. INDIEN BESTAAT "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%" ECHO. :Einde ECHO Voltooid. ECHO. ENDLOKAAL

Platte tekst bron is hier beschikbaar:backup

Als je hulp nodig hebt om aan de slag te gaan met het implementeren van dit script, zijn hier een paar links om je te helpen:

  • Een batchbestand maken
  • Een geplande Windows-taak maken

Dit is hetzelfde script dat ik gebruik om dagelijks een back-up van mijn computer te maken (met een paar aanpassingen natuurlijk), dus ik weet dat het heel goed werkt. Ik hoop dat je het nuttig vindt.

Genieten van!