Robocopy aansturen met parameters uit een .ini bestand

Robocopy Controller script stuurt Robocopy van Microsoft aan om specifieke mappen op de laptop synchroon te houden met het netwerk. De mappen op het netwerk zijn leidend. De mappen op het netwerk worden “gemirrored” op de laptop. Het gebruik van Robocopy Controller script garandeert consistent gebruik van parameters en voorkomt fouten. Daarbij krijgt de eindgebruiker een voorgangsindicator.

Robocopy (Robust File and Folder Copy) is een command line tool van Microsoft. De tool is standaard meegeleverd vanaf Windows Vista maar bestaat al langer. Robocopy maakt al vanaf Windows NT onderdeel uit van de resource kits van Windows. Robocopy biedt maar liefst 104 parameters waarmee je exact kunt bepalen wat en hoe je een bestand wilt kopiëren. Je kunt het ook gebruiken voor het maken van backups en dergelijke, zie Kopieerrobot Robocopy maakt al uw back-ups.

Globale werking van Rocobopy Controller

“Robocopy Controller” is een script dat om de tool Robocopy heen geschreven is zodat Robocopy eenvoudig en eenduidig configureerbaar is en een voortgang weergeeft. Het script leest een .ini bestand uit waarin staat welke bestanden van het netwerk moeten worden gekopieerd naar de laptop en waar deze op de laptop terecht moeten komen. Robocopy Controller script leest de .ini en voert de opdrachten die daarin staan uit met in het script vastgelegde parameters. De parameters zijn zo ingesteld dat de netwerk map gemirrored wordt naar de laptop.

Niet alle bestanden en submappen die genoemd zijn in het .ini bestanden hoeven meegenomen te worden. In het .ini bestand kan worden opgegeven:

  • Submappen die genegeerd dienen te worden, bijvoorbeeld: archief
  • Bestanden die genegeerd dienen te worden, bijvoorbeeld: *.bak
  • Alleen deze bestanden dienen gekopieerd te worden, bijvoorbeeld: *.pdf

De doeldirectory dient met “D:Network Mirror” te beginnen (of de letters ‘backup’ te bevatten). Deze map is afgesproken zodat niet per ongeluk een verkeerde map opgegeven kan worden in het .csv bestand. Indien bijvoorbeeld een netwerk map per ongeluk gemirrord zou worden met “D:” dan zou alle inhoud van de D-schijf gelijk worden gemaakt aan de netwerk map en dat is nu net niet de bedoeling.

Er worden bij het mirroren alleen bestanden van het netwerk naar de laptops gekopieerd. Er worden geen bestanden van de laptops naar het netwerk gekopieerd of bijgewerkt! Het is dus eenrichtingsverkeer. Hier is helaas één (niet instelbaar in Robocopy) uitzondering op. Als de verantwoordelijke voor de configuratie bestanden heeft laten kopiëren die bij nader inzien niet op de laptop moeten staan dan zal deze de niet te kopiëren map filteren. De logica van Robocopy is dan helaas dat de betreffende map nog wel bestaat op het netwerk en dat deze dus niet verwijderd zal worden van de laptop.

Tip #1: Binnen de organisatie kun je iemand verantwoordelijk maken voor hetgeen wel of niet gekopieerd dient te worden. Verder kan periodiek de map “D:Network Mirror” worden verwijderd om de in beslag genomen schijfruimte door de genoemde niet-instelbare optie weer vrij te maken.

Het .ini bestand configureren

Hieronder staat een voorbeeld van twee mogelijke secties in het .ini bestand:

[UniqueDisplayName]
SourceFolder=\\server\share\firstfolder
TargetFolder=C:\Network Mirror\firstfolder
FoldersToExclude=OLD “to be archived”
FilesToExclude=*.bak
CopyOnlyTheseFiles=

[OtherDisplayName]
SourceFolder=\\server\share\secondfolder
TargetFolder=C:\Network Mirror\firstfolder
FoldersToExclude=
FilesToExclude=
CopyOnlyTheseFiles=

Robocopy Controller beschikbaar stellen

Robocopy Controller.exe dient gestart te worden met ten minste één parameter, namelijk de verwijzing naar het .ini bestand waar de verantwoordelijke de configuratie in bij houdt. In een Windows Snelkoppeling staat dan bijvoorbeeld:

“\\server\share\applicaties\Robocopy controller\Robocopy Controller.exe” “\\server\share\applicaties\Robocopy Controller\robocopy fileset.ini”

Verder kan de parameter /noconfirm mee worden gegeven. Dan begint het kopiëren direct, zonder eerst een annuleer optie te bieden. In een Windows Snelkoppeling staat dan bijvoorbeeld:

“\\server\share\applicaties\Robocopy controller\Robocopy Controller.exe” “\\server\share\applicaties\Robocopy Controller\robocopy fileset.ini” /noconfirm

Daarbij dient robocopy.exe beschikbaar te worden gesteld in de directory waar Robocopy Controller is opgeslagen.

Tip #3: Zoals verderop genoemd op deze pagina is het handig om Network Starter script te gebruiken om Robocopy Controller script automatisch te starten als een medewerker de laptop aan het kantoornetwerk koppelt.

Robocopy Controller dagelijks gebruik

Na het starten controleert Robocopy Controller script of de eindgebruiker toegang heeft tot de te kopieren mappen.

Robocopy Controller script geeft de voorgang van het mirroren weer met een voorgangsbalk door per regel in het .ini bestand de indicator bij te werken.

Er wordt een logbestand bijgehouden in de %temp% map. Robocopy zelf zal gestart worden met de parameters: /S /PURGE /NP /R:0 /W:0 /LOG+:<naam van de logfile welke is afgeleid van de naam van het .csv bestand>. Als er iets is misgegaan toont Robocopy Controller script een popup met het errorlevel nummer van Robocopy erin.

Na het kopiëren worden de bestanden readonly gemaakt zodat de eindgebruiker deze niet per ongeluk op de laptop bijwerkt, waar ze immers weer worden overschreven. De parameter “/A+:R” van Robocopy kan dit ook maar alleen voor nieuw gekopieerde bestanden.

Download Robocopy Controller (2.19)

Download Robocopy Controller executable (of sourcecode). Robocopy.exe zelf is een standaard onderdeel vanaf Windows 7 en Windows Server 2008.

Ander handig script: Network Starter

Network Starter script en Robocopy Controller script kunnen los van elkaar gebruikt worden. Maar ze kunnen ook handig samen worden gebruikt. Network Starter script kan programma’s starten in een bepaalde netwerkomgeving. Op deze manier kan Rocobopy Controller script aanroepen worden op het moment dat de laptop aan het kantoornetwerk gekoppeld is. Robocopy Controller script draaien kan zo niet worden vergeten en de laptop is dus altijd bijgewerkt na een bezoek aan kantoor.

AutoIt

Het script is geschreven en gecompileerd naar een executable met AutoIt (freeware). Het script is ook realiseerbaar als batch file. Een executable heeft echter als voordeel dat er geen ongewenste wijzigingen in kunnen worden doorgevoerd en AutoIt heeft als voordeel dat veel functies reeds voorgedefinieerd zijn.

Geef een reactie

Je reactie verschijnt pas na goedkeuring. Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.