Robocopy - Een verborgen schat in Windows

Door AtleX op zondag 29 juni 2008 18:33
Categorieën: Algemeen, HowTo, Views: 5355

Sinds een weekje heb ik een nieuwe server ter vervanging van een antieke Compaq Deskpro met een Pentium 3 1GHz en 512MB geheugen. De oude machine was te traag, er kon niet meer geheugen in en de harde schijf was te klein voor de verschillende taken.

1 Van de taken was namelijk het dienen als backupserver, maar een schijfje van 80GB staat zo vol en ik zag weinig heil in het komen van een dure nieuwe PATA schijf voor die oude machine. Mijn nieuwe server heeft een 320GB schijf, en dat is groot genoeg voor de 70GB die ik op het moment moet backuppen, ik hoef namelijk geen rollback mogelijkheden te hebben waardoor het op de server ook maar 70GB inneemt.

Dat backuppen moet natuurlijk wel automatisch gaan, en omdat ik voor het eerst sinds jaren weer Windows op mijn server draai had ik keuze genoeg. Na wat open-source, gratis of betaalde oplossingen bekeken te hebben schoot mij ineens een tooltje te binnen wat ik jaren terug op mijn werk gebruikt heb.

We moesten toen 2 locaties van een basisschool met elkaar synchroniseren, over een ADSL verbinding met aan beide kanten 128Kbit upload of iets dergelijks. Natuurlijk zagen we weinig heil in het constant overpompen van een gigabyte aan data en dus koos onze technische man voor Robocopy. Ondanks wat aanloopprobleempjes, zoals het verwisselen van 2 commandline switches waardoor de hele schooladministratie naar de Windows variant van /dev/null ging, werkte dat goed. Het kan prima gebruikt worden om directories over een netwerk te kopieren of te synchroniseren en bied uitgebreide logging opties.

Daarom keek ik er nu voor mijn backup thuis ook nog eens naar. Het bied namelijk alles wat ik wil, zoals een CLI en directory mirroring. Tot mijn verbazing zit het tegenwoordig zelfs standaard in Windows Vista (in %windir%\System32). Dat is al helemaal mooi, want mijn desktop en laptop draaien allebei Vista. :)

Afijn, na het vinden van Robocopy maar eens de commandline opgestart de de switches bekeken:
d:\backup\Robocopy.exe /?

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Sun Jun 29 18:49:09 2008

              Usage :: ROBOCOPY source destination [file [file]...] [options]

             source :: Source Directory (drive:\path or \\server\share\path).
        destination :: Destination Dir  (drive:\path or \\server\share\path).
               file :: File(s) to copy  (names/wildcards: default is "*.*").

*lange lijst met opties*

De lijst is te lang om hier weer te geven, maar ik heb de output gepiped naar een textfile en die hier neergezet.

Een paar switches vielen me al meteen op, zo is er de /MIR optie. Die een directory MIRrored van de source naar de destination. Daarbij worden bestanden die niet meer in de source staan uit de destination verwijderd. Omdat ik slechts 1 maal per dag een backup maak kan ik gedurende een hele werkdag mijn data terughalen, dus langer hoef ik het echt niet te bewaren. Daarom was /MIR de eerste switch in mijn rijtje.

De volgende, /ETA, is ook handig. ETA, of Estimated Time of Arrival, geeft aan hoe lang het kopieren van een bestand nog gaat duren. Omdat ik over een 100Mbit netwerk backup is dat wel handig om te weten. Zeker in het begin, als alle bestanden voor het eerst gekopieerd moeten worden, is het wel zo prettig om te weten wanneer dat voltooid is.
http://tweakers.net/ext/f/94Gqs0v7CiWrUh1aRB48oACk/thumb.png
Bij de eerste test ging er iets fout, ik had de naam van m'n server verkeerd getypt, en toen bleef Robocopy maar retryen. Wat zoekwerk leverde op dat in het geval van een fout Robocopy het 1 miljoen keer opnieuw probeerd voordat hij opgeeft. Tussen elke retry zit 30 seconden, dus dat duurt een eeuwigheid. Daarom heb ik nog 2 switches toegevoegd, namelijk /R en /W. /R Geeft aan hoe vaak er opnieuw geprobeerd moet worden, /R:10 resulteert dus is 10 retries. /W geeft de tijd aan dat er gewacht moet worden, in mijn geval 10 seconden dus /W:10.

Dat allemaal in een batchfile, die ik aan kan roepen via de task scheduler van Windows:

code:
1
2
3
4
5
@ECHO Source: %1
@ECHO Destination: %2

@ECHO  ON
robocopy.exe %1 %2 /MIR /ETA /XJ /R:10 /W:10

Deze batchfile verwacht 2 parameters, de eerste is de source en de 2e is de destination. Zo kan ik het script op meerdere PC's gebruiken, wat ik dus ook deed. Op mijn PC en laptop ging het allemaal goed, maar op de laptop van mijn moeder niet. 1 Of ander gaar softwarepakket heeft in de \Users\%username%\Documents directory een NTFS junction aangemaakt die circulair refereert naar een andere. Kortom: Endless loop. Robocopy heeft daar gelukkig een leuke switch voor, /XJ (eXclude Junctions), dus we konden weer verder. :)

Het batchscriptje wordt nu vanuit een ander, computerspecifiek script, aangeroepen:

code:
1
2
call backup.bat "D:\Visual Studio 2005" "\\hades\alex\Visual Studio 2005"
call backup.bat "D:\webroot" "\\hades\alex\webroot"

Op deze manier hoef ik slechts 1 taak aan te maken in de task scheduler, en bij een eventuele herinstallatie van een PC vergeet ik niet per ongeluk een backuptaak aan te maken voor een belangrijke map.

De task scheduler van Windows Vista is een wonder van eenvoud, die van XP heb ik nooit gebruikt maar ik kan me niet voorstellen dat die makkelijker is. Je maakt een nieuwe taak, geeft die een begintijd, een actie die uitgevoerd moet worden en wat settings en je bent klaar.
http://tweakers.net/ext/f/vkLaUVvm9ftg0oPs1TfetYRh/thumb.png
Bij mij zelf heb ik ingesteld dat de backup elke dag om 17:30 moet draaien. Als ik thuis ben staat mijn computer dan toch aan terwijl ik zit te eten. Dan heb ik er dus geen last van. :) Als ik die dag niet thuis ben dan staat mijn computer niet aan, maar daar is een handige optie voor bij de task scheduler:
http://tweakers.net/ext/f/550taX1PGf0tgyVnTxlG3kAg/thumb.png
Als ik mijn computer of laptop pas later aanzet is er niets aan de hand. Ongeveer 5 minuten na het aanmelden begint hij te synchroniseren, terwijl ik mijn mail check en me weer bijlees bij de verschillende websites. :)

Al met al bevalt Robocopy me prima, het is snel genoeg om over 100mbit te synchroniseren, het is eenvoudig te bedienen via de CLI en het is op elke Windows Vista machine aanwezig. :)

Volgende: Usability - Niet alleen voor websites 07-08
Volgende: Vrijdagavond verveling: Rendering snelheid van browsers 07-06

Reacties


Door T.net user TomBongers, zondag 29 juni 2008 19:46

Geinig... Precies wat ik zoek.

Bedankt voor de post... :D

Door T.net user Mike-RaWare, zondag 29 juni 2008 19:55

Ze zeggen dat Windows Vista geen voordelen biedt voor bedrijven. }:| Nou, dit is één van de vele redenen om te zeggen dat zij ongelijk hebben!

Door T.net user Tim_bots, zondag 29 juni 2008 19:58

Robocopy is ook een heel mooi tooltje. Voor de mensen die niet voldoen aan de eisen om dit programma te kunnen draaien (Vista/2008) of geen zin hebben in een command line tool heeft microsoft nog een ander mooi tooltje: synctoy

zie de wikipedia voor meer info

Door T.net user AtleX, zondag 29 juni 2008 20:03

Tim_bots: Robocopy draait gewoon onder XP. :)

Door T.net user LuckyY, zondag 29 juni 2008 21:09

Wij draaien Robocopy zakelijk voor het synchroniseren van bepaalde data voor backups

Door _root, zondag 29 juni 2008 23:32

Volgens mij komt robocopy uit de tijd van NT4.0 (resourcekit), dus niet iets van vista !
In het verleden veel gebruikt om een betrouwbare copy van schijven te maken

Door T.net user AtleX, maandag 30 juni 2008 08:38

_root: Ik zeg toch ook niet dat het pas sinds Vista bestaat?

Door T.net user Mike-RaWare, maandag 30 juni 2008 09:29

Hier staat dat robocopy pas sinds Windows Vista en Server 2008 standaard ingebouwd zit. Ik weet niet zeker, maar de resource kit niet gratis.

Door T.net user Dj Neo Ziggy, maandag 30 juni 2008 09:52

Ken dit programma ook al heel erg lang...
zeker een jaartje of 5... wij backupte de website ermee..

Door T.net user Vaudtje, maandag 30 juni 2008 09:58

Het nadeel aan de /MIR optie lijkt me dat als je iet s per ongeluk weggooit je het na een dagje synchen ook niet meer kunt terughalen.

Door T.net user Omegasun, maandag 30 juni 2008 10:40

Robocopy kun je ook aanroepen zonder je bat bestandjes.... commando Robocopy scheelt je nog meer rompslomp ;)

Door HEMan22, maandag 30 juni 2008 11:31

Dit is al zo oud! Robocopy bestaat al jaren, zat idd in ResourceKit en nu standaard beschikbaar in Vista/2008. Resource Kit is trouwens gewoon verkrijgbaar op download.microsoft.com. Geen pegels voor nodig.

Zakelijk gezien hadden wij onze 'remote' backups er ook op gebasseerd tussen lokaties om dat van fileservers naar centrale backup plek te trekken. Nu zijn wel overgestapt op BITS replicatie in Windows Server 2003 R2 welke betere management mogelijkheden kent.

Voor wie het zich interesseert, er is een tool voor dummies waarmee je BITS jobs voor file copy kan opzetten waarbij de files op UNC paden staan. Dit werkt op alle Windows versies waar BITS service op draait.
(Hey, daar hoor ik een slim iemand denken dat BITS toch alleen van webserver naar lokaal kon? Idd, dat was wel zo, maar tegenwoordig kan het ook vanaf netwerkpaden.)

Uiteraard kan je ook bitsadmin.exe (zit in Resource Kit, vanaf Vista/2008 ook standaard beschikbaar in OS) gebruiken, moet je alleen wel wat tijd in stoppen om het te leren begrijpen.

Het is wel opensource...
URL:
<http://www.codeplex.com/BITSDownloadMgr>

Zit een issuetje in met single file copy, maar directory copy werkt prima!

Doe er je voordeel mee!
Greetz,

Herman

Door T.net user kaaskopkoen, maandag 30 juni 2008 11:55

Zou Windows Home Server niet iets voor jouw zijn? Die back-upt automatisch op aangegeven tijden. Hier heb je geen omkijken meer na.

De kern is Windows 2003. Helaas zonder Active Directory

Door T.net user AtleX, maandag 30 juni 2008 12:32

@Omegasun: Weet ik, maar ik heb het scriptje dat Robocopy aanroept op de server staan, en die doet ook nog wat andere dingen dan hier vermeld. Dat scriptje wordt door een computer-specifieke batchfile aangeroepen. Zo hoef ik wijzigingen aan het script slechts op 1 punt bij te houden.

@kaaskopkoen: Nee, een Windows Home Server is niets voor mij. Afaik is het niet los te krijgen, maar alleen in combinatie met hardware. Daarnaast begin ik over een ruime voorraad Windows XP en Windows 2003 licenties die voorlopig voldoen voor mij.

Door T.net user EnigmA-X, maandag 30 juni 2008 14:02

Mooie samenvatting :)

Wat ik vind ontbreken in je verhaal is de kracht van de tool m.b.t. het syncen van fileservers in hetzelfde domain: je kunt gemakkelijk alle security-rights meenemen (uit mijn hoofd: /copyall).

Door T.net user kaaskopkoen, maandag 30 juni 2008 14:22

Ik heb mijn licentie gewoon los gekocht. (http://www.azerty.nl/prod...er-win32-1pk-dsp-oei.html)

Ik heb zelf ook een thuisservertje met dit besturingssysteem. Het deelt automatisch 6 mappen over het netwerk (er zijn er ook meer of minder in te stellen) met muziek, videos, afbeeldingen, software enz. Het beschikt zelf over een soort RAID1 configuratie, maar dan softwarematig. Alle harde schijven die je in je server stopt zijn als 1 schijf zichtbaar. Alle data wordt bij mij op beide schijven opgeslagen.

Mocht je nog een xbox360 hebben, al je muziek/films e.d. worden automatisch gestreamd naar je xbox. Zeer handig voor het bekijken van HD films met 5.1 geluid. Dat heb ik namelijk niet op mijn laptop.

Ik zelf heb er ook nog Hamachi op draaien, zodat ik overal met mijn laptop bij de bestanden op mijn server kan, als ik maar toegang tot het internet heb.

Verder maakt WHS ook automatisch een webpagina voor je aan dat je via het internet nog bij je bestanden kan komen kaaskopkoen.homeserver.com

En natuurlijk de back-ups. WHS levert een bootdisk mee waar je je back-ups via het netwerk terug kan plaatsen. Ik heb hier gelukkig nog nooit zelf gebruik van hoeven maken dus ik kan niet exact vertellen hoe het gaat.

Ohja, en het download mijn .nzb`s. Gewoon downloaden naar het mapje 'downloads' en sabnzbd doet de rest.

Ik raad je aan om versie van nieuwsgroepen oid af te slurpen om te kijken hoe het bevalt. Ik ben er zeer blij mee. Een keer alles goed instellen en je hebt er geen omkijken meer aan.

Door T.net user ozakigames, maandag 30 juni 2008 16:42

Ik heb nog en vraag: met de /mir optie worden de bestanden die er bij de source niet meer zijn dus ook bij de destination weggegooid. Dus als ik perongeluk iets weg gooi wat niet weg had gemoeten dan is het na 17.30 dus ook weg bij de backup?

Door T.net user Leftblank, maandag 30 juni 2008 19:10

Superpost, ik wist niet eens dat Robocopy bestond, laat staan dat 't ook prima op XP te installeren is; nu wel ;)

Door T.net user McMillen, maandag 30 juni 2008 20:40

Voor de starters ook altijd nog handig om te gebruiken.

(RoboCopyGUI.exe)

http://technet.microsoft....cc160891(TechNet.10).aspx

Door T.net user Dadona, maandag 30 juni 2008 20:51

Schitterend programma, maar alleen over lan... Ik gebruik het om een server en een backup-server synchroon te houden. Iedere minuut kijkt de backup-server of er iets is veranderd. Daarvoor loopt er dedicated lijn tussen de twee servers.
Voor backup over internet is het naar mijn idee niet echt bedoeld. Het protocol is daarvoor niet efficient genoeg.

Door T.net user SKiLLa, maandag 30 juni 2008 21:26

OMG, wie had nog gedacht dat robocopy.exe anno 2008 nog het nieuws zou halen ;)
En ff voor de zekerheid: de SysInternals tools ken je ook ?

Door T.net user Caseman, maandag 30 juni 2008 22:37

Vind zelf syncback altijd wel een aardige tool voor dit soort werk, menugestuurd met bakken vol met opties, inclusief scheduling, werkt ook via ftp, mogelijkheid voor testruns, uitgebreide rapportage en logfiles en nog gratis ook. Gebruik het zelfs om de foto's van mijn camera's naar harde schijf over te halen.

Door T.net user C-Gate, maandag 30 juni 2008 22:56

Mag ik je vragen waarom je _dagelijks_ wilt back-uppen?

Door T.net user AtleX, dinsdag 01 juli 2008 10:13

SKiLLa: Als je goed gelezen had had je gezien dat ik jaren terug (zo rond 2003-2004) ook al met Robocopy gewerkt heb. En ja, de SysInternals Suite is een onmisbare verzameling tools.

C-Gate: Waarom niet? Als ik een hele dag gewerkt heb wordt het mooi aan het einde van de dag gebackuped. Weet jij hoe klote het is als je een dag werk kwijt raakt?

Door T.net user engelbertus, dinsdag 01 juli 2008 12:23

syncback is ideaal idd. ik wilde er mijn pc en laptop mee laten syncen met de externe hardeschijf.

ik kwam er alleen achter dat het simpel "mijn documenten" van beide computers naar een mijn documenten map op de externe hardeschijf niet precies opleverde wat ik wilde hebben. ik heb nl NL en UK versies van windows en dan krijg je niet netjes alles in dezelfde mapjes, omdat de ene nederlandse namen hebben en de andere negelse. dat was wel jammer, want dan moet je voor elke subdir een regel aanmaken.

ik hen het echter zo ingesteld dat alles slechts van source naar destination wordt gesynced als het niewer is, en dat bestanden die niet meer bestaan, in destination blijven bestaan. het is tenslotte voor als er iets kwijtraakt, en dat kan ook door eigen stomiteiten zijn. je kunt wel makkelijk dubbele bestanden krijgen e.d, als je eens wat her-organiseert. maar om dat weer op te ruimen is niet zo moielijk met de daarvoor beschikbare tooltjes.

voor wat andere kopieerzaken is xxcopy ook erg handig.

Door T.net user Demoniac, dinsdag 01 juli 2008 13:25

ozakigames: is dat niet exact wat in deze blog verteld wordt?

Bij deze wil ik mijn dorpsgenoot AtleX even bedanken voor het onder de aandacht brengen van Robocopy, had er wel eens van gehoord maar nooit aandacht aan besteed. Maar het is precies wat je nodig hebt om periodieke backups te maken naar een externe harddisk, USB-stick of netwerkshare :D Gisteravond even zitten stoeien en binnen een kwartiertje een job gemaakt om elke nacht mijn foto's en muziek te kopiëren naar de externe HDD.

Door T.net user Brazza, dinsdag 08 juli 2008 19:22

We gebruiken dit ook om bv een mappen structuur aan te maken in de vorm van
map1
-bedrijfsbureau
* documenten
* blaat1
-engineering
* test
- docs

*etc

Ook kopieert alle rechten die elke groep heeft mee met de nieuwe mappen structuur. al met al scheelt het veel gezeur met rechten en juiste mappen maken voor nieuwe projecten.

Door T.net user Ruizzie, donderdag 10 juli 2008 22:49

Wij backuppen een SBS server eerst naar een lokale disk met Backup Exec, dat maakt snelle recoveries van per ongeluk door gebruikers verwijderde bestanden etc. lekker snel.

Hierna wordt de hele bups met robocopy naar een off-site ReadyNAS gekopieerd via een vlotte, maar niet 100% betrouwbare link (oa. door de ReadyNAS die de verbinding met Active Directory verliest of zo).

Dus.. wil ik een mailtje krijgen als het robocopyen niet gelukt is. Dit heb ik opgelost met twee 'old-school' batchfiles:

[nas-backup.bat]
robocopy O:\Backup \\amz-nas\Backup * /E /M /R:10 /W:10 /V /NP /LOG:O:\Backup\NAS-Backup.log

IF ERRORLEVEL 16 goto :blat
IF ERRORLEVEL 8 goto :blat
IF ERRORLEVEL 4 goto :blat

goto :einde

:blat
echo blat
blat.bat NAS-Backup.log

:einde
echo einde

[/nas-backup.bat]

en

[blat.bat]

blat.exe %1 -to mailto:ruizzie@robocopy.nl -subject "Error during robocopy backup" -server sbssrv -f "administrator@robocopy.nl"

[/blat.bat]

blat: http://www.blat.net/

Wie weet handig voor deze of gene

Door T.net user Ruizzie, donderdag 10 juli 2008 22:50

hmm.. er is automagisch mailto: in de blat commandline verschenen.. Dat is nie de bedoeling..

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)

Tiep de tekens in onderstaand anti-spam plaatje over: