zondag 26 mei 2013

Degelijk een backup scripten met Robocopy


Robocopy is een handig Windows-tooltje dat ideaal is om een backup te maken van een of meer mappen naar een andere locatie. Je kunt een kopie maken in "mirror"-mode, dat wil zeggen dat de doelmap precies de bronmap weerspiegelt. Hierbij kunnen ook bestanden en mappen verwijderd worden op de doellokatie wanneer deze niet (meer) in de bron voorkomen. Robocopy vergelijkt de bronlokatie en de doellokatie met elkaar en is slim genoeg om uitsluitend gewijzigde bestanden te kopieren. Je kunt ook bestanden of mappen uitsluiten voor kopieren als je wilt. Dit alles laat zich goed scripten en is dus geschikt om te worden uitgevoerd op gezette tijden vanuit Geplande taken (scheduled jobs).



Robocopy zat oorspronkelijk in de Windows 2003 Resource kit. Sinds Windows Vista en Windows Server 2008 is bij het besturingssysteem geleverd

Het volgende script geeft een voorbeeld van een gescripte opdracht om de user profile directory te backuppen naar een andere locatie.

@echo off
:: Backup1.cmd
::   Dit script maakt backup van userprofile naar USB-disk
::   20130526 Paul Wiegmans
set BRON=C:\Users\paul
set DOEL=%~d0/%COMPUTERNAME%-Paul
SET OPTS=/MIR /FFT /COPY:DAT /DCOPY:DAT /R:3 /W:1 /NP /NDL /XD "%BRON%\appdata\local" "%BRON%\appdata\locallow" "temp" "cache" /XF *.tmp *.dmp *.hdmp /XJ
Title Backup %BRON% naar %DOEL%
Robocopy %BRON% %DOEL% *.* %OPTS%

Speciale aandacht verdient het gebruik van de /XD parameter die je gebruikt bij het uitsluiten van mappen.  Dit gaat vaak verkeerd. Op Technet: Excluding Multiple Directories using /XD is al het een en ander geschreven.

Mijn conclusie is dat je enkele zaken in acht moet nemen, wanneer je succesvol enkele folders wilt uitsluiten:

  • Geef de brondirectory zonder afsluitende backslash.
  • Je kunt bij de /XD parameter verscheidene folders opgeven, gescheiden door een spatie.
  • Padnamen met spaties worden omgeven door aanhalingstekens.
  • Geef uit te sluiten mappen bij voorkeur op als enkelvoudig pad, dus als naam zonder backslashes.
  • Mappen die bestaan uit meer dan één deel (bijv Appdata\LocalLow) geef je op als absoluut pad. 
Tenslotte nog een tip: gebruik /L om te testen. Zelfs als Robocopy in de header aangeeft deze directories uit te sluiten, dan nog kunnen de ongewenste mappen toch worden gekopieerd. Uitsluitend in de uitvoer zie je welke mappen werkelijk worden gekopieerd.

Geen opmerkingen:

Een reactie posten