Adam de Automator

Robocopy is een van de meest gebruikte opdrachtregelprogramma ‘ s om grote hoeveelheden data te kopiëren in Windows. Het is zo ‘ n populaire tool vanwege hoe krachtig het is. Maar met al die kracht komt complexiteit. In deze gids, zullen we breken al die complexiteit en bieden een volledige tutorial over het gebruik van deze nuttige tool.

Robocopy is een opdrachtregelprogramma voor Windows dat beschikbaar is sinds Windows NT. Het is een vervanging voor de minder veelzijdige xcopy utility. Hiermee kunt u een stationspad of serverpad opgeven om bestanden te kopiëren/verplaatsen bij een opdrachtprompt.

de versie van Robocopy is tot 10.0.18. Dit is de versie waarop ik mijn testen heb uitgevoerd.

Robocopy biedt een reeks functies die u kunt gebruiken om efficiënt en snel bestanden te kopiëren en te verplaatsen. Het kan:

  • Kopiëren van bestanden over een netwerk met cv vermogens
  • Kan overslaan NTFS-knooppunt punten waardoor storing in het algemeen van oneindige lussen
  • Kunt een kopie van een bestand en directory-kenmerken behoud van tijdstempels
  • Kunt een kopie van een NTFS-machtigingen, eigenaren, en auditing info
  • Kan een map kopiëren tijdstempels
  • Kan bestanden kopiëren in de ‘back’ – modus om ervoor te zorgen bestanden zijn gekopieerd, zelfs die rechten hebben geweigerd naar de beheerder
  • Automatisch opnieuw proberen
  • synchroniseren van twee mappen
  • Is slim genoeg om te verspringen van bestanden hebt gekopieerd
  • kan paden kopiëren die groter zijn dan de limiet van 256 tekens
  • .
  • geeft gestandaardiseerde exit codes voor gebruik in scripts

zoals u kunt zien, is er veel te kopiëren. Ik wilde alles wat je moet weten over deze handige tool te dekken.

inhoudsopgave:

Common Robocopy syntaxis Reference

waarom zo ‘ n lange blogpost op een enkel hulpprogramma? Kijk naar de tafels hieronder. Je hebt veel opties om bestanden te kopiëren of te verplaatsen met robocopy! U vindt meer opties in de afzonderlijke secties.

deze tabellen zijn gebouwd op basis van de help-syntaxis van robocopy /?. Ze zijn opgesplitst in meer betekenisvolle secties, toegevoegd aan na verloop van tijd, en opgeschoond om meer nuttige informatie te bieden.

Bron Opties

Schakelaar Uitleg Standaard Gedrag Equivalent Schakelaar Opmerkingen
/S Kopiëren submappen
/E Kopiëren submappen, met inbegrip van lege submappen
/KOPIËREN: Kopiëren opties /KOPIËREN:D D=Data, A=Kenmerken T=tijd-stempels S=Veiligheid=NTFS-Acl ‘ s, O=info Eigenaar, U=aUditing info. De Data van een bestand (D) omvat altijd de Tijdstempels (T)
/SEC Kopieer bestanden met Beveiliging /KOPIE:DATS
/DCOPY:T map Kopiëren tijdstempels
/COPYALL ALLES Kopiëren bestand info /KOPIE:DATSOU Dit voorkomt uitdroging van off line bestanden en zal in plaats van het kopiëren van het bestand tag (emc VNX/Eenheid systemen in ieder geval). Dit is niet officieel gedocumenteerd! Als uitdroging is wat je nodig hebt (reden dat ik vond dit probleem), kunt u de ACLs niet kopiëren langs uw bestanden. CREDIT: Monsieurx (Reddit)
/NOCOPY Kopiëren NO file info handig met /PURGE
/EEN Kopieert bestanden waarvan het archiveringskenmerk is ingesteld
/M als /A, maar verwijder Archief kenmerk van de bron-bestanden
/LEV:n Alleen de bovenste n-Niveaus van de source tree
/MAXAGE:n Maximale bestandsleeftijd – bestanden die ouder zijn dan n dagen/datum
/MINAGE:n MINimum bestandsleeftijd – bestanden die nieuwer zijn dan n dagen/datum Als n < dan 1900 n = aantal dagen, anders n = JJJJMMDD datum
/FFT Stel VET Bestand Tijden 2-de tweede datum/tijd granulariteit. Dit vervangt NTFS-tijdstempels. Lijkt betrouwbaarder bij overdracht over een netwerk.
/256 Schakel zeer lange pad (> 256 tekens) ondersteuning

Bestemming Opties

Schakelaar Uitleg Standaard Gedrag Equivalent Schakelaar Opmerkingen
/A+: Stel bestandskenmerken(s) op de bestemming bestanden + toevoegen
/Een-: bestandsattribuut(en) op doelbestanden verwijderen
/FAT doelbestanden aanmaken met 8.3 VET bestandsnamen alleen
/MAKEN Create directory boom structuur + bestanden met lengte nul alleen
/DST Compenseren voor één uur ZOMERTIJD tijd verschillen

Kopie Opties

Schakelaar Uitleg Standaard Gedrag Equivalent Schakelaar Opmerkingen
/L Lijst alleen bestanden niet kopiëren, tijdstempel of verwijderen van bestanden
/MOV bestanden Verplaatsen Verwijderen van de bron na het kopiëren
/VERPLAATS Verplaatsen van bestanden en mappen Verwijderen van de bron na het kopiëren
/sl Kopieer het bestand symbolische links in plaats van het doel
/Z Kopieer bestanden in modus voor opnieuw starten het Overleven van een netwerk hotel
/B Kopieer bestanden in de back-up modus
/J Kopiëren met behulp van niet-gebufferde I/O Aanbevolen voor grote bestanden
/NOOFFLOAD Kopieer bestanden zonder gebruik van de Windows-kopie-offload mechanisme https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=ws.11)
/EFSRAW Kopieert geen versleutelde bestanden met EFS-RAW-modus
/TIMFIX bestandstijden op alle bestanden, zelfs overgeslagen bestanden
/XO Uitsluiten ouder als bestemming bestand bestaat en is op dezelfde datum of nieuwer is dan de bron – niet de moeite om te overschrijven.
/XC gewijzigde bestanden Uitsluiten
/XN nieuwere bestanden Uitsluiten
/XX Uitsluiten van bestanden aanwezig zijn in de bestemming, maar niet de bron /XX
/XF-bestand … bestanden Uitsluiten overeenkomende namen/paden/wildcards
/XD dirs … mappen Uitsluiten overeenkomende namen/paden. /XF en / XD kunnen worden gebruikt in combinatie bijv. ROBOCOPY c:\source d:\dest / XF*.dokter *.xls /XD c:\unwanted /S
/IA: bestanden Opnemen met een van de gegeven kenmerken
/XA: Uitsluiten van bestanden met de opgegeven kenmerken
/IM Overschrijven gewijzigde bestanden. Dit omvat dezelfde bestanden met verschillende tijden.
/IS Overschrijven van bestanden, zelfs als ze al dezelfde
/HET gewijzigde bestanden Opnemen
/XJ koppelingspunten Uitsluiten van de bron /XJ
/XJD koppelingspunten Uitsluiten van bron-mappen
/XJF Uitsluiten koppelingspunten bron-bestanden
/MAX:n Uitsluiten van bestanden groter dan n bytes
/MIN:n Uitsluiten van bestanden die kleiner zijn dan n bytes
/MAXLAD:n bestanden Uitsluiten van ongebruikte sinds n
/MINLAD:n bestanden Uitsluiten gebruikt sinds n Als n < 1900 n = n dagen, anders n = JJJJMMDD datum
/MIR Spiegel een directory boom /WISSEN /E
/WISSEN Verwijderen dest bestanden/mappen die niet meer bestaan in bron
/XL Uitsluiten van bestanden aanwezig zijn in de bron, maar geen bestemming
/SECFIX Robocopy /secfix correcties bestand beveiliging op alle bestanden, zelfs overgeslagen bestanden. Geef het type van beveiliging van informatie die u wilt kopiëren met behulp van één van de volgende opties: /COPYALL /KOPIËREN:O /KOPIËREN:S /KOPIËREN:U /SEC
/ZB modus voor opnieuw starten; als toegang is geweigerd gebruik van Back-up modus

Monitoring Opties

Schakelaar Uitleg Standaard Gedrag Equivalent Schakelaar Opmerkingen
/R:n aantal pogingen op mislukte kopieën / R:1000000 probeer altijd deze optie in te stellen. Ik raad aan om dit in te stellen op 10-20 om geen tijd te verspillen opnieuw proberen.
/W: N wachttijd tussen pogingen / W:30 probeer deze optie Altijd op een lager getal in te stellen om het sneller opnieuw te proberen. Ik stel 5-10 voor.
/REG opslaan /R:n en /W: n in het Windows-register als standaardinstellingen
/RH:hhmm-uumm keer wanneer er nieuwe kopieën kan worden gestart
/TBD Wachten voor sharenames worden gedefinieerd probeer het opnieuw fout 67
/PF Check uitvoeren uur per bestand (niet per controle)
/MA:n opnieuw Uitvoeren als er meer dan n veranderingen gezien
/APK:m opnieuw uitvoeren in m minuten, indien gewijzigd

inzicht in Robocopy-gedrag

ik heb je nu helemaal versteld met alle mogelijke syntaxisopties die voor je beschikbaar zijn. Laten we nu kijken naar alle verschillende combinaties van hoe we deze syntaxis kunnen gebruiken.

ik kan u een enorm lange lijst van Robocopy commando ‘ s geven met een steeds groeiend aantal switches. Maar ik denk dat het beter is om je te leren vissen. Laten we eens gaan over hoe je zin uit al deze opties te zetten.

Robocopy kopieert alleen volledige mappen

elke uitvoering van robocopy heeft een bron-en een doelmap. Robocopy kopieert en verplaatst bestanden per volledige map. Het is niet mogelijk om een enkel bestand expliciet te kopiëren met robocopy. Gebruik hiervoor copy of PowerShell ‘ s Copy-Item.

echter, u kunt Robocopy enkel bestand met de juiste filtering die u hieronder zult leren. Om robocopy een enkel bestand bestand, specificeer de bron en bestemming directory ‘ s onmiddellijk gevolgd door de bestandsnaam in de bron.

> robocopy c:\src d:\dst copythisfile.txt

syntaxis is afhankelijk van de omgeving

ook de opties die u aan robocopy geeft, zijn afhankelijk van de omgeving. Je moet een paar vragen te beantwoorden wanneer het proberen om erachter te komen welke opties te gebruiken.

  • zult u altijd naar een lege map kopiëren?
  • zijn er mogelijk al bestanden in de doelmap?
  • kopieert u terabytes aan gegevens of slechts enkele megabytes?
  • kopieert u bestanden over een netwerk of lokaal?
  • … en meer.

als er geen bestanden in de map van het doelbestand staan, moet u zich niet druk maken over opties die bestanden overschrijven. Als u geen bestanden over het netwerk kopieert, hoeft u zich geen zorgen te maken over deze opties. Definieer expliciet je huidige en potentiële toekomstige omstandigheden waarin je omgeving zich zal bevinden.

standaardopties herkennen

Robocopy gebruikt standaard veel opties. U kunt ze uitkiezen door te kijken naar de tabellen hierboven. Het biedt ook een handige uitgang aan elke keer dat u het hulpprogramma uitvoert.

u kunt hieronder zien dat toen ik Robocopy met zijn meest elementaire opties (de bron-en doelmap) uitvoerde, het automatisch een aantal opties gebruikte. Het begrijpen van het standaardgedrag is belangrijk.

refereer naar de opties die u ziet in de uitvoer met de optieuitleg hierboven en u zult precies begrijpen wat robocopy doet onder de covers.

standaard Robocopy-opties
standaard Robocopy-opties

Als u copy of PowerShell ‘ s Copy-Itemcmdlets hebt gebruikt, hebt u waarschijnlijk een bron en bestemming opgegeven en bent u verder gegaan met uw dag. Er is niet veel opties die u daar kunt configureren. Deze Robocopy commando ‘ s hebben een standaard gedrag.

maar robocopy, aan de andere kant, begrijpt veel meer en geeft je de flexibiliteit om het gedrag zo veel als je wilt aan te passen.

het is belangrijk om te weten dat robocopy zich niet alleen bewust is van het concept van een bestand of map. Er zit veel meer in een bestandssysteem dan dat en robocopy ondersteunt zowat alles.

een bestand op een bestandssysteem is niet zomaar een dom object met een enkel doel. Er zijn veel verschillende attributen en dingen die bij het concept van een bestand passen. Een bestand heeft bijvoorbeeld attributen zoals:

  • een tijdstempel (geschreven, gewijzigd en geopend)
  • NTFS ACL
  • een eigenaar
  • NTFS controle informatie
  • verborgen vlag
  • gearchiveerde vlag

wanneer u een bestand kopieert of verplaatst, hebt u de optie om al die dingen mee te nemen, als u dat wilt.

begrijp dat wanneer u robocopy uitvoert, u niet alleen een bestand kopieert, maar mogelijk ook alle andere informatie ermee kopieert. Het is belangrijk om dat te beseffen en om daar rekening mee te houden in de opties die u Robocopy biedt.

De Basis: WhatIf-scenario ‘ s

als u ergens een enorme bestandsserver hebt die u wilt migreren en nog geen actie wilt ondernemen, kunt u robocopy gebruiken om terug te geven wat het gedaan zou hebben.

met de /L optie kunt u Robocopy vertellen om alle bestanden en/of mappen die u opgeeft op te sommen en een lijst met bestanden te retourneren die het zou hebben gekopieerd/verplaatst.

u kunt de optie /L met elke andere optie gebruiken. Dit is een geweldige manier om alle opties die robocopy zou hebben gebruikt (standaard of niet) terug te geven. Het geeft u een overzicht van wat robocopy zal doen gezien de opties die u hebt opgegeven.

gebruik /L
gebruik /L

de basis: Bestanden kopiëren

het meest basale gebruik van robocopy is het gebruik van een bron-en doelmap zonder opties.

> robocopy C:\src C:\dst

deze optie zal alle bestanden (exclusief submappen) kopiëren van C:\src aan C:\dst.

u kunt ook alles kopiëren, inclusief submappen (leeg of niet) en NTFS-machtigingen. Dit is, voor zover ik kan zien, de methode om letterlijk alles wat er over een directory met bestanden naar een andere directory te kopiëren.

hieronder kopieer ik alle NTFS-ACL ‘ s, bestandsbezitters, submappen (inclusief lege) en alle bestandskenmerken. Dit alles is mogelijk gemaakt met alleen de optie /E om alle lege submappen op te nemen en /COPYALL om de rest op te vangen.

> robocopy C:\src C:\dst /E /COPYALL

de basis: Bestanden verplaatsen

bestanden verplaatsen brengt bestanden over van de ene map naar de andere, net als kopiëren. Het enige verschil met een beweging operatie is dat de bronbestanden worden verwijderd na de kopie.

om bestanden/mappen na het kopiëren uit de bron te verwijderen, gebruikt u de optie /MOV. Dit zal alle bestanden in de opgegeven map verwijderen (geen submappen).

> robocopy C:\src C:\dst /MOV

u kunt /MOVE ook gebruiken om alle bestanden en submappen te verplaatsen.

> robocopy C:\src C:\dst /MOVE

de basis: Bestanden synchroniseren

met Robocopy kunt u twee mappen synchroniseren. Dit betekent ofwel ervoor zorgen dat alle bestanden in de doelmap zijn in de bronmap en niet meer. /MIR repliceert gegevens die alle bestanden in de bron niet in de bestemming kopiëren en verwijdert bestanden in de bestemming niet in de bron. Pas op!

> robocopy C:\src C:\dst /MIR

bestanden over een netwerk kopiëren

als u bestanden over een netwerk kopieert, zijn er een paar opties die u moet overwegen.

met Robocopy kunt u bestanden kopiëren in ‘herstartbare modus’ met de /Z optie. Dit betekent dat als een bestand begint te kopiëren en halverwege mislukt, de kopie opnieuw kan beginnen in plaats van volledig te mislukken. De optie /Z is handig als de stream over een netwerk wordt gesneden.

waarschuwing: sommigen hebben gemeld dat /Z de prestaties met 1/4 vermindert. Laat me je bevindingen weten.

u kunt ook de optie /FFT gebruiken. Het is bekend dat deze switch bestandstijdstempels nauwkeuriger bewaart bij het overbrengen over een netwerk. Deze optie gebruikt FAT-bestandssysteem tijdstempels in plaats van NTFS.

robocopy C:\src \SRV1\share /Z /FFT

gebruik /IPG om Inter-Packet Gap

te beheren wanneer u bestanden over een netwerk kopieert, kunt u de /IPG switch gebruiken. Dit is ook bekend als de inter-packet gap optie. Deze optie definieert (in milliseconden) de frequentie waarin robocopy wacht tussen het verzenden van nieuwe pakketten.

Gebruik altijd UNC-paden en geen stationsletters

een lezer op Reddit ontdekte de harde manier om toegewezen stations niet als doelmap te gebruiken. In plaats daarvan, Gebruik altijd Gebruik altijd een UNC pad. Je zou kunnen tegenkomen problemen met de 256-teken limiet als je dat doet. Bekijk deze Microsoft doc voor meer informatie.

Robocopy back-upmodus (Robocopy /Z)

Robocopy heeft een optie (/B) of als back-up naar herstartbare modus (/ZB) die bestanden kopieert in back-upmodus. Wat is “backup mode” eigenlijk?

wanneer u gewoonlijk een bestand kopieert in Windows en een bestand raakt dat beheerdersrechten vereist om toegang te krijgen, krijgt u een fout die aangeeft dat u geen rechten hebt. Ook al wordt u misschien uitgevoerd als de lokale beheerder, Windows laat u geen toegang tot het.

waarschuwing: Er zijn meldingen van beschadigde servervolumes bij het kopiëren van gegevens naar een Windows Server 2016-server met de-duplicatie ingeschakeld. Wanneer u de /ZB schakelaar gebruikt, zal het resultaat een dedup chunk-opslag zijn die in de systeemvolume-informatie wordt weggegooid. De gekopieerde bestanden zullen niet leesbaar zijn en zullen fouten genereren wanneer ze proberen te manipuleren. Serverfault link met meer info.

back-upmodus is een manier om toegang te krijgen tot bestanden zonder zich zorgen te maken over machtigingen.

Robocopy gebruikt de back-upmodus om het SeBackupPrivilege te gebruiken voor het lezen van bestanden en het serestoreprivilege gebruikersrecht om toegang te krijgen tot alle bestanden die het nodig heeft. Dit negeert alle azen die normaal zou voorkomen dat u toegang tot deze bestanden.

de SeBackupPrivilege-en SeRestorePrivilege-gebruikersrechten worden gewoonlijk toegewezen aan gebruikers in de groepen Back-upoperators en Administrators, maar soms kunnen ze worden verwijderd. Back-upmodule elimineert dat risico en verleent de gebruiker die robocopy uitvoert Tijdelijk deze rechten.

als u wilt controleren of uw gebruikersaccount dat recht heeft, kunt u whoami /priv uitvoeren en beide rechten moeten worden weergegeven.

bestanden en mappen filteren

de grote meerderheid van de beschikbare opties is om bestanden en mappen op verschillende manieren uit te sluiten. Ik heb alle manieren opgesplitst waarop u bestanden en mappen kunt filteren of uitsluiten op basis van verschillende criteria.

op bestandsnaam of bestandsextensie

filteren welke bestanden gekopieerd/verplaatst worden in een Robocopy-aanroep wordt gedaan met jokertekens. U kunt een jokerteken gebruiken om te filteren op bestanden die overeenkomen met een specifieke bestandsnaamstring of extensie.

om bijvoorbeeld alleen TXT-bestanden te kopiëren, kunt u *opgeven.txt.

> robocopy C:\src C:\dst *.txt

als u alleen bestanden wilt beperken die beginnen met een, kunt u een*gebruiken.

> robocopy C:\src C:\dst a*

Y0u kan ook meerdere sets bestandsnaamvergelijkingen leveren door ze te scheiden met een spatie zoals hieronder getoond.

> robocopy C:\src C:\dst a* b*

wanneer u filtert op bestandsnaam, zal robocopy u het filter in de uitvoer tonen.

filteren van bestanden uitvoer
filteren van bestanden uitvoer

met Robocopy kunt u items niet alleen filteren op Bestand, maar ook op mapnaam. Met robocopy /xd kunt u bepaalde mappen die overeenkomen met een specifieke naam uitsluiten.

als u meerdere mappen kopieert, gebruikt u de schakelaar /XD om mappen uit te sluiten.

> robocopy C:\src C:\dst /XD "c:\src\exclude"

by File/Directory Timestamp

hieronder vindt u alle robocopy-opties die bestanden en mappen uitsluiten op basis van verschillende timestamp attributen.

schakelaar uitleg
/DCOPY: T tijdstempels van map kopiëren
/MAXAGE: n bestanden ouder dan n dagen/datum uitsluiten
/MINAGE:n bestanden uitsluiten die nieuwer zijn dan n dagen / datum
/XO als het doelbestand bestaat en dezelfde datum of nieuwer is dan de broncode, niet overschrijven
/XN als het doelbestand bestaat en dezelfde datum of ouder is dan de broncode, niet overschrijven

er zijn twee populaire opties om te kiezen bij het filteren op zaken als timestamp; /XO en /MAXAGE.Met

/XO kunt u bestanden alleen uitsluiten van kopiëren als ze nieuwer zijn dan de broncode. Met de optie /XO kunt u alleen nieuwe bestanden op toegangsdatum kopiëren.

> robocopy C:\src C:\dsc /XO

als u weet dat de maximale leeftijd van bestanden zal zijn, kunt u ook de optie /MAXAGE gebruiken. Hiermee kunt u in YYYMMDD-formaat de oudere datum opgeven die een bestand kan hebben voordat het wordt gekopieerd.

> robocopy c:\src c:\dst /S /MAXAGE:20191001

Robocopy-taken

u hebt gezien dat tientallen opties voor u beschikbaar zijn. Het is gemakkelijk voor deze opties om snel log te worden. Gelukkig, je hebt een betere optie dan het onthouden en ervoor te zorgen dat al deze opties zijn plek op elke keer.

Robocopy-taakbestanden zijn tekstbestanden met één optie per regel. Meestal gebruikt u robocopy om deze taakbestanden aan te maken. Eenmaal gemaakt, kunt u vervolgens robocopy gebruiken om ze te wijzigen of een eenvoudige teksteditor.

u hebt verschillende Robocopy-opdrachten die werken met taken.

Switch verklaring standaardgedrag equivalente Switch opmerkingen
/taak: taaknaam neem parameters uit het benoemde taakbestand
/opslaan:jobname Opslaan parameters taakbestand
/QUIT Sluit na het verwerken van commando-regel Handig voor het bekijken van parameters
/NOSD Geen bron-directory is opgegeven
/NODD Geen doelmap wordt opgegeven
/ALS de volgende bestanden Opnemen

een typisch taakbestand gemaakt met robocopy heeft een RCJ extensie en ziet eruit als het onderstaande fragment. Dit taakbestand is aangemaakt door robocopy C:\src D:\dst /save:myjobuit te voeren. U kunt zien dat u opmerkingen kunt geven in het taakbestand met ::, wat het grootste deel is van wat dit bestand bevat.

zonder commentaar zou het bestand slechts één optie per regel bevatten.

:::: Robocopy Job C:\MYJOB.RCJ:::: Created by Administrator on Sunday, August 18, XXXX at 8:53:24 AM:::::: Source Directory ::: /SD:C:\SRC\ :: Source Directory.:::: Destination Directory ::: /DD:C:\SRC\ :: Destination Directory.:::: Include These Files ::: /IF :: Include Files matching these names:: *.* :: Include all names (currently - Command Line may override):::: Exclude These Directories ::: /XD :: eXclude Directories matching these names:: :: eXclude no names (currently - Command Line may override):::: Exclude These Files ::: /XF :: eXclude Files matching these names:: :: eXclude no names (currently - Command Line may override):::: Copy options ::: /DCOPY:DA :: what to COPY for directories (default is /DCOPY:DA). /COPY:DAT :: what to COPY for files (default is /COPY:DAT).:::: Retry Options ::: /R:1000000 :: number of Retries on failed copies: default 1 million. /W:30 :: Wait time between retries: default is 30 seconds.:::: Logging Options :::

Taakbestanden opslaan

een taakbestand opslaan is net zo eenvoudig als de /SAVE:<jobname> optie Toevoegen aan het einde van uw syntaxis. Vervang <jobname> door de naam van de taak. De optie /SAVE maakt een bestand aan met de naam < jobname>.rcj in de directory waar je robocopy draaide.

> robocopy C:\src C:\dst /SAVE:myjob

u moet /SAVE als laatste optie opgeven. Alle opties die na /SAVE zijn opgegeven, worden niet aan het taakbestand toegevoegd. Merk ook op dat zelfs als een bestaand taakbestand al bestaat, robocopy altijd het bestaande zal overschrijven. Back-up of versiebeheer uw taakbestanden!

Opmerking: Als u probeert de optie /MT te gebruiken bij het opslaan naar een taakbestand, zal deze niet in het taakbestand staan. Laat het me weten als je in staat was om dit erbij te krijgen.

met behulp van Taakbestanden

zodra een taak in een taakbestand is opgeslagen, kunt u de optie /JOB:<jobname> gebruiken om het taakbestand op te geven waaruit moet worden gelezen. Robocopy leest alle parameters in het taakbestand. Het voert vervolgens uit alsof u de opties direct op de opdrachtregel hebt opgegeven.

> robocopy /JOB:myjob

een Taakbestand aanmaken zonder een taak uit te voeren met /QUIT

het doel van de optie /QUIT is niet duidelijk. Aan de oppervlakte kunt u denken dat /QUIT een running dwingt om af te sluiten. In plaats daarvan werkt /QUIT meer als een optie om te voorkomen dat een taak wordt uitgevoerd.

officieel, de /QUIT optie “forces robocopy to beeindigen processing the command line”. Het zou echter beter worden uitgelegd als het maken van een taakbestand zonder een taak uit te voeren.

als u de optie /SAVE gebruikt, wordt de taak ook automatisch uitgevoerd. Er is geen manier om een taakbestand aan te maken zonder eerst de taak uit te voeren. U kunt het RCJ-taakbestand aanmaken met een teksteditor of u kunt robocopy gebruiken doe het door /QUIT aan het einde toe te voegen.

> robocopy C:\src C:\dst /SAVE:myjob /QUIT

een Taakbestand bewerken

omdat taakbestanden slechts tekstbestanden zijn, kunt u ze bewerken met uw favoriete teksteditor of u kunt robocopy het voor u laten doen.

u kunt taakbestanden bewerken met een combinatie van /JOB, /SAVE en /QUIT.

bijvoorbeeld, misschien wilt u ALLE EXE-bestanden uitsluiten van uw Robocopy-taak die is opgeslagen in een taakbestand met de naam backupfiles.rcj. U hebt het taakbestand al gemaakt en wilt niet het hele ding overschrijven. U kunt de nieuwe optie toevoegen zoals hieronder:

> robocopy /JOB:backupfiles /XF *.EXE /SAVE:backupfiles /QUIT

Als u meerdere Taakbestanden

gebruikt, kunt u ook het gebruik van taakbestanden combineren. Wanneer u meerdere taakbestanden in dezelfde run opgeeft, worden alle opties die in die run worden gebruikt, gecombineerd.

bijvoorbeeld, misschien heeft u een grote lijst met bestanden die u moet uitsluiten van uw backupfiles-kopieertaak. Open een teksteditor en voeg het volgende toe om een exclude te maken.rcj dossier.

/XF a.exe b.txt c.cer

u kunt deze bestanden dan uitsluiten van de backupfiles-taak zoals dit:

> robocopy /JOB:backupfiles /JOB:exclude

omdat het oorspronkelijke backupfiles-taakbestand al alle EXE-bestanden uitsluit, zou de syntaxis van de bovenstaande run /XF *.exe a.exe b.txt c.cerlijken. Robocopy combineert alle opties in één.

Robocopy-sjablonen en met behulp van de opties /NOSD en /NODD

Als u met veel taakbestanden werkt, kunt u taakbestanden maken om parameters te accepteren. Met Robocopy kunt u waarden vanaf de opdrachtregel doorgeven aan taken wanneer deze worden uitgevoerd. Een parameter is geen Robocopy term, maar het past goed in dit scenario.

u kunt Robocopy-taken maken om parameters te accepteren door geen bron-of doelmap op te geven, hetzij expliciet gebruikmakend van de opties /NOSD en /NODD, hetzij helemaal geen bron-en doelmap.

een eenvoudig voorbeeld: Maak een taakbestand aan zonder bron of bestemming met behulp van onderstaande syntaxis. De bedoeling van deze taak is om alle TXT-en EXE-bestanden van een bron naar een doelmap te kopiëren.

> robocopy *.txt *.exe /SAVE:backupfiles /QUIT

op zichzelf zal deze taak nooit werken omdat er geen bron-of doelmap is opgegeven.

wanneer u een taak zonder bron-en doelmap maakt, wordt het taakbestand automatisch aangemaakt met de opties /NOSD en /NODD.

/NOSD /NODD/IF *.txt *.exe/DCOPY:DA/COPY:DAT/R:1000000/W:30

de /NOSD opties vertellen robocopy dat u geen bronmap hebt opgenomen, terwijl /NODD aangeeft dat u geen doelmap hebt opgenomen. Dit taakbestand is een “sjabloon” voor andere taken.

maar u kunt “parameters” doorgeven aan dit taakbestand om de bron-en doelmappen te leveren.

om het zojuist aangemaakte taakbestand te gebruiken om bestanden te kopiëren van C:\src tot C:\dst, kunt u deze mappen direct doorgeven op de opdrachtregel die dan zal worden doorgegeven aan de taak.

> robocopy /JOB:backupfiles C:\src C:\dst

asynchroon kopiëren (Robocopy /MT)

standaard verwerkt robocopy slechts één bestand tegelijk. U kunt robocopy echter dwingen meer bestanden te kopiëren dan in één keer met de optie /MT.

met de optie /MT kunt u het aantal threads opgeven dat robocopy zal gebruiken om bestanden te kopiëren. Het maximum is 128.

u kunt /MT zo gebruiken:

> robocopy C:\src C:\dst /MT:32

ik heb 32 gekozen in dit geval als basislijn. Ik stel voor om te beginnen bij 32 om te zien hoe uw computer en netwerk omgaan met dingen en de threads dienovereenkomstig aan te passen.

Als u /MT gebruikt, kunt u /IPG of /EFSRAWniet gebruiken. Voor betere prestaties, niet uitvoeren van de log naar de console. Gebruik in plaats daarvan /LOG.

Planning Robocopy

Robocopy heeft een aantal manieren waarop u kunt plannen wanneer het wordt uitgevoerd.

met behulp van /RH

met behulp van de /RH optie, kunt u Robocopy vertellen om alleen te draaien gedurende een bepaalde tijd. Dit is geweldig als u een onderhoud venster of een tijd dat iedereen naar huis is gegaan voor de dag.

u kunt een begin-en eindtijd opgeven in het formaat HHMM-HHMM. Bijvoorbeeld, om robocopy aan te roepen maar alleen toe te staan om te draaien tussen de uren van 17: 00 en 9: 00 Zoals gedefinieerd door de systeemklok, uitvoeren:

> robocopy C:\src C:\dst /RH:1700-0900

u zult zien dat als u robocopy buiten die uren aanroept, het u de huidige tijd zal vertellen en wacht tot de starttijd wordt uitgevoerd.

Robocopy vertelt u hoe laat het start als het gepland is
Robocopy vertelt u hoe laat het start als het gepland is

u moet ervoor zorgen dat beide tijden zijn in een 24-uurs formaat en zijn precies vier cijfers lang. Het raam moet langer zijn dan twee minuten.

standaard wordt /RH gebruikt om de starttijd voor de gehele run te controleren. Echter, als je veel bestanden hebt en gelooft dat het proces langer kan duren dan dat, kun je de /PF optie gebruiken. /PF zal Robocopy dwingen het venster voor elk bestand te controleren.

met behulp van de Taakplanner

het Uitvoerlog

Robocopy retourneert altijd een uitvoerlog. Of dat logboek wordt weergegeven via stdout op de console en / of doorgestuurd naar een logbestand is aan jou.

u hebt veel opties bij het weergeven van Robocopy-uitvoer.

Switch verklaring standaardgedrag equivalente Switch opmerkingen
/NP geen vooruitgang. Onderdrukt de weergave van voortgangsinformatie. Dit kan handig zijn wanneer de uitvoer wordt omgeleid naar een bestand.
/unicode Display de status van de uitgang als unicode-tekst
/LOG:bestand status in log-bestand en overschrijf
/UNILOG:bestand status in de unicode-log-bestand en overschrijf
/LOG+:bestand Uitvoerstatus naar logbestand en toevoegen aan bestaand logbestand
/UNILOG+: bestand Uitvoerstatus naar unicode-logbestand en toevoegen aan bestaand logbestand
/TS geeft de tijdstempels van elk verwerkt bestand weer.
/FP vervangt eenvoudige bestandsnamen door volledige bestandspadnamen in de uitvoer.
/NS toont geen bestandsgroottes.
/NC verbergt de uitvoer van de bestandsklasse “tekst Tags” (ga hier voor meer informatie: https://www.uvm.edu/~gcd/2015/04/robocopy-file-classes/)
/NFL verbergt bestandsnamen. Mislukkingen zijn nog steeds geregistreerd. Alle bestanden bestanden verwijderd of zou worden verwijderd als / L werd weggelaten worden altijd gelogd
/NDL verbergt de uitvoer van de mappenlijst. Volledige bestandspadnamen worden uitgevoerd om gemakkelijker problematische bestanden op te sporen.
/TEE Uitvoer naar de console venster, evenals de log bestand
/NJH Geen baan kop
/NJS Geen baan samenvatting
/BYTES Print maten bytes
/X Verslag van alle bestanden, met niet alleen de geselecteerde & gekopieerd
/V uitgebreide uitvoerlog produceren, overgeslagen bestanden tonen
/ETA laat de geschatte aankomsttijd van gekopieerde bestanden zien. Zie de begintijd van elke bestandskopie en de geschatte voltooiingstijd op basis van de waargenomen doorvoer van vorige kopieën. De tijden worden na de bestandsnaam weergegeven in het formaat HH: MM – > HH: MM (begin – > finish).
/DEBUG debugvolume-informatie tonen

Log-elementen beperken met /NJS en /NJH

standaard retourneert robocopy twee elementen in zijn uitvoer, een taakkop en een taakoverzicht.

de taakkop is de eenvoudige Robocopy-kop bovenaan.

Robocopy-taakheader
Robocopy-taakheader

de taakoverzicht toont een samenvatting van de status van alle bestanden/mappen, hoeveel gegevens zijn overgedragen en hoe laat het uitvoeren is beëindigd.

samenvatting van de Robocopy-taak
samenvatting van de Robocopy-taak

u kunt elk van deze elementen verbergen met de optie /NJH om de taakkop te verbergen en de optie /NJS om het taakoverzicht te verbergen. U kunt een van deze opties of beide samen.

de taakkop en taakoverzicht verbergen
de taakkop en taakoverzicht verbergen

omleiden van het Uitvoerlogboek naar een bestand

Als u het uitvoerlogboek wilt opslaan, kunt u het doorsturen naar een tekstbestand en/of Weergeven op de console. U kunt dit doen met behulp van traditionele uitvoer redirectors zoals >, >>, PowerShell of de optie /LOG.

om het uitvoerlogboek om te leiden naar een bestand met de optie /LOG overschrijven van een bestaand logbestand gebruik de syntaxis /LOG:<filepath> zoals hieronder. De enige uitvoer die je op de console ontvangt is het pad naar het logbestand.

> robocopy C:\src C:\dst /LOG:c:\file.log Log File : c:\file.log

Als u de inhoud van een bestaand logbestand wilt behouden en resultaten aan een bestand wilt toevoegen, kunt u de operator + gebruiken zoals hieronder weergegeven.

> robocopy C:\src C:\dst /LOG+:c:\file.log Log File : c:\file.log

omleiden van het Uitvoerlogboek naar een bestand en weergeven op de Console

Als u het uitvoerlogboek wilt opslaan in een bestand maar het ook op de console wilt zien, kunt u de optie /TEE gebruiken. Deze optie zorgt ervoor dat robocopy de uitvoer naar het logbestand schrijft, terwijl het standaardgedrag van het retourneren van de uitvoer naar de console behouden blijft.

robocopy C:\src C:\dst /LOG+:c:\file.log /TEE

Exit Codes

net als alle andere opdrachtregelprogramma ‘ s retourneert robocopy exit codes afhankelijk van de resultaten van de uitvoering. We willen allemaal dat robocopy altijd succesvol afsluit met een 0, maar dat gebeurt niet altijd.

hieronder vindt u alle exit code die robocopy retourneert en hun uitleg. Elke exitcode groter dan zeven geeft aan dat er ten minste één fout is opgetreden tijdens de uitvoering.

Exit Code uitleg
0 geen actie uitgevoerd. Bron en bestemming worden gesynchroniseerd.
1 ten minste één bestand is met succes gekopieerd.
2 Extra bestanden of mappen werden gedetecteerd. Onderzoek het logboek.
3 Exit codes 2 en 1 gecombineerd.
4 niet-overeenkomende bestanden of mappen gevonden. Onderzoek het logboek.
5 Exit codes 4 en 1 gecombineerd.
6 Exit codes 4 en 2 gecombineerd.
7 Exit codes 4, 1 en 2 gecombineerd.
8 ten minste één bestand of map kon niet gekopieerd worden. Limiet overschreden. Onderzoek het logboek.
16 kopiëren is catastrofaal mislukt.

merk op dat als u robocopy uitvoert in een hulpprogramma van derden, dat hulpprogramma kan denken dat elke niet-nul exit code is een mislukking. Om dit te voorkomen, kunt u de exit code wijzigen in 0 als het 1 retourneert.

de Robocopy” extra “file exit code is een veelgebruikte return code wat betekent dat een “extra” bestand zich in de doelmap bevindt, maar niet in de bronmap. Deze code sluit Extra ‘ s die eventuele verwijderingen van de bestemming zal voorkomen.

het wijzigen van de afsluitcode in een batchbestand

Als u robocopy uitvoert met een batchbestand, kunt u de waarde van de variabele %ERRORLEVEL% vinden. Als het 1 retourneert, gebruik dan het exit sleutelwoord om het script te verlaten met 0.

> (robocopy <options>) ^& IF %ERRORLEVEL% LEQ 1 exit 0

het wijzigen van de afsluitcode in een PowerShell-script

Als u robocopy uitvoert in een PowerShell-script, kunt u robocopy aanroepen met Start-Process met PassThru om het gemaakte proces te retourneren en Wait om te wachten tot robocopy is voltooid. U kunt dan de eigenschap ExitCode controleren op een waarde van 1. Als de exit code 1 is, verlaat dan het PowerShell script met een 0 met $host.SetShouldExit().

$exitCode = (Start-Process -FilePath 'robocopy' -ArgumentList '<option>' -PassThru -Wait).ExitCodeif ($exitCode -eq 1) { $host.SetShouldExit(0)}

veelvoorkomende fouten

als u met duizenden bestanden te maken hebt, zult u bepaalde problemen tegenkomen. Hier is een overzicht van veelvoorkomende fouten die ik ben tegengekomen

fout Ongeldige Parameter

wanneer u een fout ziet die fout Ongeldige parameter aangeeft, betekent dit normaal gesproken dat u hebt geprobeerd om opties door te geven aan robocopy uit de volgorde of andere manier. De Robocopy ongeldige parameter 3 fout is de meest voorkomende, lijkt het.

een veel voorkomende reden dat u deze fout ontvangt is wanneer u een bron-of doelmap met spaties opgeeft en vergeet deze te omringen met aanhalingstekens.

Robocopy voorbeelden

u kunt uw eigen strings van robocopy bouwen of u kunt nemen wat anderen hebben geleerd en ze gebruiken! In deze sectie, Ik zal betrekking hebben op use cases over het gebruik van robocopy om verschillende dingen te bereiken.

zoek de mapgrootte van een netwerkmap

Contributor: northendtroooper (Reddit))

> robocopy "\MACHINE\fileshare" c:\dummy /l /xj /e /nfl /ndl /njh /r:0 /mt:64

snel mapinhoud verwijderen (Machtigingen voor submappen worden genegeerd)

Contributor: pizzasteveo (Reddit)

> robocopy c:\dummy c:\foldertodelete /MIR

het uitvoeren van migraties van grote bestanden

Contributor: @MySnozzberries (Twitter)

het doel van dit fragment is om alle bestanden terug te sturen naar beheerders. We voegen dan een expliciete ACE toe voor de groep Administrators voor volledige controle op elk object recursief, hoewel we ook overerving instellen.

ten slotte doen we een volledige Robocopy kopie met DACL ‘ s naar de bestemming met log. Log kan vervolgens worden beoordeeld op extra machtigingen problemen of gewoon bestand sloten en een andere delta sync kan later worden uitgevoerd.

> takeown /F .\test /R /A /D Y> icacls .\test /grant "Administrators":(OI)(CI)F /T> robocopy .\test .\test2 /E /SEC /FP /V /LOG:.\temp.log

recursief forceer de groep Administrators als de eigenaar van alle bestanden en mappen. Er kunnen manieren zijn om dit te omzeilen, maar dit is de meest zwaarhandige aanpak en meestal de snelste.

> takeown /F .\test /R /A /D Y

zodra we de eigenaar zijn, kunnen we nu een nieuwe ACE forceren in de DACL voor elk object. Dit geeft beheerders volledige controle met overerving ingeschakeld en recursief via het pad.

het instellen van dit bij de root met overerving zou de omgeving dekken, maar als een share eigenaar van de maker heeft met volledige controle (wat helaas zelfs Microsoft ‘ s aanbeveling is voor zaken als file user profile stores), kan de gebruiker overerving uitschakelen of azen verwijderen naar eigen goeddunken. Dus een zware hand is meestal de snelste oplossing.

> icacls .\test /grant "Administrators":(OI)(CI)F /T

zodra we de DACL ‘ s op de meeste bestanden hebben gewijzigd, proberen we de bestanden naar een nieuwe locatie te kopiëren, wat gebruikelijk is voor zaken als bestandsdelemigratie. Hiervoor kopiëren we de items recursief en gebruiken we de /SEC switch om ook de Data/attributen/Timestamps/DACLs te kopiëren.

dan loggen we de bewerking met volledige paden en voor alle objecten (/V verbose switch) in een log, zodat we de <5% van de fouten die gewoonlijk padlengte of bestandsslot gerelateerd zijn, kunnen herstellen en meer korrelig kunnen worden.

> robocopy .\test .\test2 /E /SEC /FP /V /LOG:.\temp.log

dit is een eenvoudig raamwerk voor het beheren van een bestandsdelenmigratie met minimale impact op de gebruikerservaring. Het verbetert ook de controle het houdt over de gegevens. Als een klant een sterke data governance praktijk waar eigendom goed wordt beheerd op een kind folder niveau, dit wordt een meer gecompliceerde discussie, maar de meeste klanten die we vinden zijn gelukkig te gebruiken overerving en groep-based Azen alleen, dus dit is de meest voorkomende situatie en fix we beginnen bij.

Robocopy alternatieven

Robocopy is een geweldige tool, maar er zijn zoveel andere tools vergelijkbaar met het die van belang kunnen zijn.

  • xxcopy-een soortgelijk commandoregelprogramma met tal van opties.
  • Copy-Item PowerShell cmdlet-lang niet zo featured, maar veel eenvoudiger.
  • TreeSize-GUI en scriptable utility om mapinformatie te vinden.

samenvatting

Robocopy is een uitstekend hulpmiddel om grote sets bestanden te kopiëren. Of u nu een gegevensmigratie uitvoert, mappen synchroon houdt of gewoon een snelle manier nodig hebt om bestanden nauwkeurig te kopiëren, robocopy is een geweldige keuze.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.