Adam Automator

Robocopy er en af de mest anvendte kommandolinjeværktøjer til at kopiere store mængder data i vinduer. Det er sådan et populært værktøj på grund af hvor kraftigt det er. Men med al den magt kommer kompleksitet. I denne vejledning vil vi nedbryde al den kompleksitet og give en komplet tutorial om brug af dette nyttige værktøj.

Robocopy er et kommandolinjeværktøj til vinduer, der har været tilgængeligt siden vinduer NT. Det er en erstatning for det mindre alsidige kopieringsværktøj. Det giver dig mulighed for at angive en drevsti eller serversti for at kopiere/flytte filer ved en kommandoprompt.

versionen af Robocopy fra denne skrivning er op til 10.0.18. Dette er den version, jeg udførte min test på.

Robocopy giver en masse funktioner, du kan udnytte til at udføre effektive og hurtige filkopier og bevægelser. Det kan:

  • Kopier filer over et netværk med genoptagelsesfunktioner
  • kan springe over NTFS-knudepunkter, der forårsager fejl typisk fra uendelige sløjfer
  • kan kopiere fil-og katalogattributter, der bevarer tidsstempler
  • kan kopiere NTFS-tilladelser, ejere og revisionsinfo
  • kan kopiere katalogtidsstempler
  • kan kopiere katalogtidsstempler
  • kopier filer i ‘backup’ – tilstand for at sikre, at filer kopieres, selv disse rettigheder er blevet nægtet administratoren
  • automatiske forsøg
  • kan synkronisere to mapper
  • er smart nok til at springe over filer, der allerede er kopieret
  • kan kopiere stier, der er større end grænsen for 256 tegnsti
  • Udfør asynkrone kopier ved hjælp af dens multithreading-evne.
  • returnerer standardiserede udgangskoder til brug i scripts

som du kan se, er der meget at kopiere. Jeg ønskede at dække alt hvad du behøver at vide om dette praktiske værktøj.

Indholdsfortegnelse

fælles Robocopy syntaks Reference

hvorfor sådan en lang blogindlæg på en enkelt nytte? Bare fest dine øjne på tabellerne nedenfor. Du har mange muligheder for at kopiere eller flytte filer med robocopy! Du vil flere muligheder i de enkelte sektioner.

disse tabeller blev bygget fra hjælp syntaks returneres fra robocopy /?. De er blevet opdelt i mere meningsfulde sektioner, tilføjet til over tid og ryddet op for at give mere nyttig info.

Kildeindstillinger

Skift forklaring standard opførsel ækvivalent kontakt noter
/S Kopier undermapper
/E Kopier undermapper inklusive tomme undermapper
/kopi: Kopier indstillinger / kopi: DAT D=Data, A=attributter, T=tidsstempler S=sikkerhed=NTFS ACLs, O=ejer info, u=revision info. Fildata (D) omfatter altid fil tidsstempler (T)
/SEK Kopier filer med sikkerhed /kopi: DATS
/DCOPY: T Kopier mappe tidsstempler
/COPYALL Kopier alle filoplysninger /kopi: DATSOU dette forhindrer dehydrering af offlinefiler og kopierer i stedet filens tag (i det mindste på emc/Unity systems). Dette er ikke officielt dokumenteret! Hvis dehydrering er det, du har brug for (grund til at jeg fandt dette problem), kan du ikke kopiere ACL ‘ erne langs dine filer. Kredit: Monsieur (Reddit)
/NOCOPY Kopier ingen filinfo nyttigt med / udrensning
/a kopier kun filer med Arkivattributsættet
/M synes godt om / A, men fjern Arkivattribut fra kildefiler
/LEV:n kopier kun de øverste N niveauer af kildetræet
/maks.: n maksimal FILALDER-ekskluder filer, der er ældre end n dage / Dato
/MINAGE: n mindste FILALDER-ekskluder filer Nyere end n dage / Dato hvis n < 1900 så n = antal dage, ellers n = ÅÅÅÅMMDD dato
/FFT Antag FAT fil gange 2-anden dato/tid granularitet. Dette erstatter NTFS tidsstempler. Synes at være mere pålidelig, når du overfører over et netværk.
/256 Sluk for meget lang sti (> 256 tegn) support

Destinationsmuligheder

Skift forklaring standard opførsel ækvivalent kontakt noter
/A+: Indstil filattribut (er) på destinationsfiler + Tilføj
/A-: Fjern filattribut (er) på destinationsfiler
/FAT Opret destinationsfiler ved hjælp af 8.3 kun FAT-filnavne
/Opret Opret mappetræstruktur + kun null-længde filer
/DST kompensere for en times DST-tidsforskelle

Kopier indstillinger

Skift forklaring standard opførsel ækvivalent kontakt noter
/L List files only du må ikke kopiere, tidsstempel eller slette filer
/MOV Flyt filer Slet fra kilde efter kopiering
/Flyt Flyt filer og mapper Slet fra kilde efter kopiering
/sl Kopier fil symbolske links i stedet for målet
/ Kopier filer i genstartbar tilstand overlev et netværk glitch
/B Kopier filer i backup-tilstand
/J kopi ved hjælp af unbuffered I / O anbefales til store filer
/NOOFFLOAD Kopier filer uden brug af vinduer copy offload mekanisme https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=v.11)
/EFSRA Kopier alle krypterede filer ved hjælp af EFS rå tilstand
/TIMRETTELSE ret filtider på alle filer, endda sprunget over filer
/ Ekskluder ældre hvis destinationsfilen findes og er den samme dato eller nyere end kilden – gider ikke at overskrive den.
/ Ekskluder ændrede filer
/ Ekskluder nyere filer
/ Ekskluder filer, der findes i destinationen, men ikke Kilde /
/ Ekskluder filer, der matcher fornavne / stier/jokertegn
/ Ekskluder mapper, der matcher fornavne/stier. /kan anvendes i kombination f. eks. ROBOCOPY c:\source d:\dest *.doc *.jysk /jysk c:\unwanted / S
/ia: Inkluder filer med nogen af de givne attributter
/ Ekskluder filer med nogen af de givne attributter
/IM Overskriv ændrede filer. Dette inkluderer de samme filer med forskellige tidspunkter.
/er Overskriv filer, selvom de allerede er de samme
/IT inkluderer sammenknebne filer
/ Ekskluder knudepunkter fra kilden /J
/ Ekskluder knudepunkter fra kildekataloger
/ Ekskluder knudepunkter fra kildefiler
/maks: n Ekskluder filer, der er større end n bytes
/MIN: n Ekskluder filer, der er mindre end n bytes
/MAKSLAD: n Ekskluder filer ubrugt siden n
/MINLAD:n Ekskluder filer brugt siden n hvis n < 1900 derefter n = n dage, ellers n = ÅÅÅÅMMDD dato
/Mir spejl et katalogtræ /PURGE / E
/PURGE Slet dest filer / mapper, der ikke længere findes i source
/ Ekskluder filer, der findes i kilde, men ikke destination
/rettelse Robocopy /rettelse af rettelsesfil sikkerhed på alle filer, selv sprunget filer. Angiv den type sikkerhedsoplysninger, du vil kopiere, ved også at bruge en af disse muligheder: / COPYALL /COPY: O / COPY: S / COPY: U / SEC
/4334> brug genstartbar tilstand; hvis Adgang nægtet brug Backup-tilstand

overvågning muligheder

Skift forklaring standard opførsel ækvivalent kontakt noter
/R:n antal forsøg på mislykkede kopier / R:1000000 prøv altid at indstille denne indstilling. Jeg anbefaler at indstille dette til 10-20 for ikke at spilde tid på at prøve igen.
/v: n ventetid mellem forsøg / V:30 prøv altid at indstille denne indstilling til et lavere tal for at prøve igen hurtigere. Jeg foreslår 5-10.
/REG Gem / R: n og / H:n i vinduet registreringsdatabasen som standardindstillinger
/RH:hhmm-hhmm tidspunkter, hvor nye kopier kan startes
/TBD vent til sharenames skal defineres prøv igen fejl 67
/PF kontroller køretimer pr. fil (ikke pr. pass)
/man: n Kør igen, når mere end n ændringer set
/MOT:m Kør igen i m minutter, hvis ændret

forståelse Robocopy adfærd

jeg har nu helt blæste dit sind med alle de potentielle syntaks muligheder til rådighed for dig. Lad os nu se alle de forskellige kombinationer af, hvordan vi kan bruge denne syntaks.

jeg kunne give dig en enorm lang liste med robocopy-kommandoer med et stadigt voksende antal kontakter. Men jeg synes, det er bedre at lære dig at fiske. Lad os gå over, hvordan man sætter mening ud af alle disse muligheder.

Robocopy kopierer kun hele mapper

hver robocopy-udførelse vil have en kilde og en destinationsmappe. Robocopy kopierer og flytter filer efter hele biblioteket. Det er ikke muligt eksplicit at kopiere en enkelt fil med robocopy. Brug copy eller Strømshell ‘ s Copy-Item til det.

du kan dog robocopy enkelt fil med den rigtige filtrering, som du vil lære om nedenfor. For at robocopy en enkelt filfil skal du angive kilde-og destinationsmapper straks efterfulgt af filnavnet i kilden.

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

syntaks afhænger af miljøet

de indstillinger, du giver til robocopy, afhænger også af miljøet. Du skal besvare et par spørgsmål, når du prøver at finde ud af, hvilke muligheder du skal bruge.

  • vil du altid kopiere til en tom mappe?
  • er det muligt, at filer allerede findes i destinationsmappen?
  • vil du kopiere terabyte data eller bare et par megabyte?
  • vil du kopiere filer over et netværk eller lokalt?
  • …og mere.

hvis der ikke er nogen filer i destinationsfilmappen, skal du ikke bekymre dig om indstillinger, der overskriver filer. Hvis du ikke kopierer filer over netværket, skal du ikke bekymre dig om disse muligheder. Definer eksplicit dine nuværende og potentielle fremtidige omstændigheder, som dit miljø vil være i.

Genkend standardindstillinger

Robocopy bruger som standard mange indstillinger. Du kan vælge dem ved at se på tabellerne ovenfor. Det giver også en praktisk output til hver gang du kører værktøjet.

du kan se nedenfor, at da jeg kørte robocopy med sine mest basale muligheder (kilde-og destinationsmappen), brugte den automatisk nogle muligheder. Forståelse af standardadfærd er vigtig.

henvis til de indstillinger, du ser i output, med valgforklaringerne ovenfor, og du vil forstå nøjagtigt, hvad robocopy laver under omslagene.

standard robocopy-indstillinger
standard robocopy-indstillinger

forstå, hvad Robocopy-kommandoer kan gøre

hvis du har brugt copy eller cmdlets Copy-Item, har du sandsynligvis angivet en kilde og destination og fortsatte med din dag. Der er ikke mange muligheder, du kan konfigurere der. Disse robocopy-kommandoer har en standardadfærd.

men robocopy forstår derimod meget mere og giver dig fleksibiliteten til at tilpasse adfærden så meget som du vil.

det er vigtigt at vide, at robocopy ikke kun er opmærksom på begrebet en fil eller mappe. Der er meget mere til et filsystem end det, og robocopy understøtter næsten alt.

en fil, der sidder på et filsystem, er ikke kun et dumt objekt med et enkelt formål. Der er mange forskellige attributter og ting, der går med begrebet en fil. For eksempel har en fil attributter som:

  • et tidsstempel (skrevet, ændret og adgang til)
  • NTFS ACL
  • en ejer
  • NTFS revisionsinformation
  • skjult flag
  • arkiveret flag

når du kopierer eller flytter en fil, du har mulighed for at bringe alle de ting sammen med det, hvis du vil.

forstå, at når du kører robocopy, kopierer du ikke bare en fil, du kopierer også potentielt alle de andre oplysninger med den. Det er vigtigt at indse det og redegøre for det i de muligheder, du giver robocopy.

Det Grundlæggende: Udfører hvadhvis scenarier

hvis du har en enorm filserver et sted, du gerne vil migrere og ikke ønsker at tage nogen handling endnu, kan du bruge robocopy til at returnere, hvad det ville have gjort.

ved hjælp af /L kan du bede robocopy om at opregne alle de filer og/eller mapper, du angiver, og returnere en liste over filer, den ville have kopieret/flyttet.

du kan bruge /L indstillingen med enhver anden mulighed. Dette er en fantastisk måde at returnere alle de muligheder, robocopy ville have brugt (standard eller ej). Det giver dig et samlet overblik over, hvad robocopy vil gøre i betragtning af de muligheder, du har givet det.

brug af / L
brug af /L

grundlæggende: kopiering af filer

den mest basale brug af robocopy bruger en kilde-og destinationsmappe uden muligheder.

> robocopy C:\src C:\dst

denne indstilling kopierer alle filer (ekskl. undermapper) fra C:\src til C:\dst.

du kan også kopiere alt inklusive undermapper (tom eller ej) og NTFS-tilladelser. Dette er, fra hvad jeg kan fortælle, metoden til bogstaveligt talt at kopiere alt, hvad der handler om en mappe med filer til en anden mappe.

nedenfor kopierer jeg alle NTFS ACL ‘ er, filejere, undermapper (inklusive tomme) og alle filattributter. Alt dette er gjort muligt med kun /E mulighed for at inkludere alle tomme undermapper og /COPYALL for at fange resten.

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

det grundlæggende: flytning af filer

flytning af filer overfører filer fra en mappe til en anden ligesom kopiering gør. Den eneste forskel med en flytning er, at kildefilerne fjernes efter kopien.

hvis du vil slette filer/mapper fra kilden efter kopiering, skal du bruge indstillingen /MOV. Dette fjerner alle filer i den angivne mappe (Ingen undermapper).

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

du kan også bruge /MOVE til at flytte alle filer og undermapper.

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

grundlæggende: synkronisering af filer

Robocopy giver dig mulighed for at synkronisere to mapper. Dette betyder enten at sikre, at alle filer i destinationsmappen er i kildekataloget og ikke mere. /MIR replikerer data, der kopierer alle filer i kilden, der ikke er i destinationen, og sletter filer i destinationen, der ikke er i kilden. Pas på!

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

kopiering af filer over et netværk

hvis du kopierer filer over et netværk, er der et par muligheder, du bør overveje.

Robocopy giver dig mulighed for at kopiere filer i ‘genstartbar tilstand’ ved hjælp af /Z valgmulighed. Dette betyder, at hvis en fil begynder at kopiere og mislykkes midtvejs, kan kopien starte igen i stedet for at fejle helt. Indstillingen /Z er nyttig, når strømmen bliver skåret over et netværk.

advarsel: Nogle har rapporteret at bruge /Z reducerer ydeevnen med 1/4. Lad mig vide dine resultater.

du kan også bruge /FFT indstillingen. Denne kontakt har været kendt for mere præcist at bevare fil tidsstempler ved overførsel over et netværk. Denne indstilling bruger FAT filsystem tidsstempler i stedet for NTFS.

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

brug af /IPG til at styre Inter-Packet Gap

når du kopierer filer over et netværk, kan du bruge kontakten /IPG. Dette er også kendt som inter-packet gap mulighed. Denne indstilling definerer (i millisekunder) den frekvens, hvor robocopy venter mellem afsendelse af nye pakker.

Brug altid UNC-stier, der ikke kører bogstaver

en læser på Reddit opdagede den hårde måde at ikke bruge kortlagte drev som destinationsmappe. Brug i stedet altid Brug altid en UNC-sti. Du kan løbe ind i problemer med grænsen på 256 tegn, hvis du gør det. Tjek denne Microsoft doc for mere information.

Robocopy Backup Mode (Robocopy /å)

Robocopy har en mulighed (/B) eller som backup til genstartbar tilstand (/ZB), som kopierer filer i backup mode. Hvad er” backup mode ” alligevel?

når du normalt kopierer en fil i vinduer og rammer en fil, der kræver administratorrettigheder for at få adgang, får du en fejl, der angiver, at du ikke har tilladelse. Selvom du kan køre som den lokale administrator, vil vinduer ikke lade dig få adgang til det.

advarsel: der har været rapporter om beskadigede servervolumener, når du kopierer data til en Server 2016-server med de-duplikering slået til. Når du bruger /ZB – kontakten, bliver resultatet en dedup chunk-butik, der bliver affald i Systemvolumenoplysningerne. De kopierede filer kan ikke læses og genererer fejl, når de prøver at manipulere dem. Serverfault link med mere info.

Backup-tilstand er en måde at få adgang til filer uden at bekymre sig om tilladelser.

Robocopy bruger backup-tilstand til at bruge SeBackupPrivilege til læsning af filer og serestoreprivilege-brugerens ret til at få adgang til alle filer, den har brug for. Dette ignorerer eventuelle esser, der normalt ville forhindre dig i at få adgang til disse filer.

SeBackupPrivilege-og SeRestorePrivilege-brugerrettighederne tildeles normalt brugere i Sikkerhedskopieringsoperatørerne og Administratorgrupperne, men nogle gange kan de fjernes. Backup modul eliminerer denne risiko og giver midlertidigt brugeren udfører robocopy disse rettigheder.

hvis du vil kontrollere, om din brugerkonto har denne ret, kan du køre whoami /priv, og begge rettigheder skal vises.

filtrering af filer og mapper

det store flertal af de muligheder, du har til rådighed, er at ekskludere filer og mapper på mange forskellige måder. Jeg har opdelt alle de måder, du kan filtrere eller ekskludere filer og mapper baseret på forskellige kriterier.

ved filnavn eller filtypenavn

filtrering hvilke filer bliver kopieret/flyttet i en robocopy opkald sker ved hjælp af jokertegn. Du kan bruge et jokertegn til at filtrere på filer, der matcher en bestemt filnavnstreng eller-udvidelse.

hvis du f.eks. kun vil kopiere tekstfiler, kan du angive*.TST.

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

hvis du vil begrænse til kun filer, der starter med a, kan du bruge A*.

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

Y0u kan også levere flere sæt filnavnematcher ved at adskille dem med et mellemrum som vist nedenfor.

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

når du filtrerer efter filnavn, viser robocopy dig filteret i output.

filtrering af filer output
filtrering af filer output

efter mappenavn

Robocopy giver dig mulighed for at filtrere elementer ikke kun efter fil, men også efter mappenavn. Ved hjælp af robocopy /xd kan du ekskludere bestemte mapper, der matcher et bestemt navn.

når du kopierer flere mapper, skal du bruge kontakten /XD til at ekskludere mapper fra kørslen.

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

ved Fil/mappe tidsstempel

nedenfor finder du alle de robocopy muligheder, der vil udelukke filer og mapper baseret på forskellige tidsstempel attributter.

Skift forklaring
/DCOPY: T Kopier mappe tidsstempler
/maks.: n Ekskluder filer, der er ældre end n dage / Dato
/MINAGE:n Ekskluder filer Nyere end n dage / Dato
/ hvis destinationsfilen findes og er den samme dato eller nyere end kilden, skal du ikke overskrive
/hvis destinationsfilen findes og er den samme dato eller ældre end kilden, skal du ikke overskrive

der er to populære muligheder at vælge, når du filtrerer på ting som tidsstempel; /XO og /MAXAGE.

/XO giver dig mulighed for kun at ekskludere filer fra kopi, hvis de er nyere end kilden. Ved hjælp af indstillingen /XO kan du kun robocopy nye filer efter adgangsdato.

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

hvis du ved, at de maksimale aldersfiler vil være, kan du også bruge indstillingen /MAXAGE. Dette giver dig mulighed for at angive i YYYMMDD-format den ældre dato, en fil kan have, før den kopieres.

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

Robocopy Jobs

du har set, at snesevis af muligheder er tilgængelige for dig. Det er nemt for disse muligheder at snart blive uhåndterlige. Heldigvis har du en bedre mulighed end at huske og sikre, at alle disse muligheder er spot on hver gang.

Robocopy jobfiler er tekstfiler, der indeholder en mulighed pr.linje. Du bruger typisk robocopy til at oprette disse jobfiler. Når du er oprettet, kan du enten bruge robocopy til at ændre dem eller en simpel teksteditor.

du har forskellige robocopy kommandoer, der arbejder med job.

Skift forklaring standard opførsel ækvivalent kontakt noter
/JOB: jobname Tag parametre fra den navngivne jobfil
/Gem:jobname Gem parametre til den navngivne jobfil
/Afslut Afslut efter behandling kommandolinje nyttig til visning af parametre
/NOSD ingen kildekatalog er specificeret
/NODD ingen destinationsmappe er angivet
/hvis Medtag følgende filer

en typisk jobfil oprettet med robocopy har en RCJ-udvidelse og ligner nedenstående uddrag. Denne jobfil blev oprettet ved at køre robocopy C:\src D:\dst /save:myjob. Du kan se, at du kan give kommentarer i jobfilen ved hjælp af ::, hvilket er det meste af, hvad denne fil har.

uden kommentarer vil filen kun indeholde en mulighed pr.

:::: 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 :::

lagring af Jobfiler

lagring af en jobfil er lige så simpelt som at tilføje indstillingen /SAVE:<jobname> til slutningen af din syntaks. Erstat <jobname> med navnet på jobbet. Indstillingen /SAVEopretter en fil kaldet <jobname>.rcj i den mappe, hvor du kørte robocopy.

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

du skal angive /SAVE som den sidste mulighed. Eventuelle indstillinger, der er angivet efter /SAVE, føjes ikke til jobfilen. Bemærk også, at selvom en eksisterende jobfil allerede findes, vil robocopy altid overskrive den eksisterende. Backup eller version styre dine jobfiler!

Bemærk: Hvis du forsøger at bruge /MT, når du gemmer i en jobfil, vil den ikke være i jobfilen. Lad mig vide, hvis du var i stand til at få dette til at blive inkluderet.

brug af Jobfiler

når et job er gemt i en jobfil, kan du derefter bruge indstillingen /JOB:<jobname> til at angive den jobfil, der skal læses fra. Robocopy læser alle parametrene inde i jobfilen. Derefter udføres det som om du har angivet indstillingerne direkte på kommandolinjen.

> robocopy /JOB:myjob

oprettelse af en Jobfil uden at køre et Job ved hjælp af /Afslut

formålet med indstillingen /QUIT er ikke indlysende. På overfladen tror du måske /QUIT tvinger en løb til at afslutte. I stedet virker /QUIT mere som en mulighed for at forhindre, at et job kører i første omgang.

officielt er /QUIT indstillingen “tvinger robocopy til at afslutte behandlingen af kommandolinjen”. Det ville dog være bedre forklaret som at oprette en jobfil uden at køre et job.

hvis du bruger indstillingen /SAVE, kører den også jobbet automatisk. Der er ingen måde at oprette en jobfil uden først at køre jobbet. Du kan oprette RCJ-jobfilen med en teksteditor, eller du kan bruge robocopy do it ved at tilføje /QUIT til slutningen.

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

redigering af en Jobfil

da jobfiler kun er tekstfiler, kan du redigere dem med din foretrukne teksteditor, eller du kan få robocopy til at gøre det for dig.

du kan redigere jobfiler ved hjælp af en kombination af /JOB, /SAVEog /QUIT.

for eksempel vil du måske gerne ekskludere alle eks-filer fra dit robocopy-job, der er gemt i en jobfil kaldet backupfiles.rcj. Du har allerede oprettet jobfilen og vil ikke overskrive hele sagen. Du kan tilføje den nye mulighed som nedenfor:

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

brug af flere Jobfiler

du kan endda kombinere brugen af jobfiler også. Når du angiver flere jobfiler i samme løb, kombineres alle de indstillinger, der bruges i det løb.

for eksempel har du måske en stor liste over filer, der skal udelukkes fra dit backupfiles kopijob. Åbn en teksteditor, og tilføj følgende for at oprette en ekskludering.RCJ-fil.

/XF a.exe b.txt c.cer

du kan derefter ekskludere disse filer fra backupfiles-jobbet som sådan:

> robocopy /JOB:backupfiles /JOB:exclude

da den oprindelige backupfiles-jobfil allerede ekskluderede alle eks-filer, ville ovenstående runs syntaks se ud /XF *.exe a.exe b.txt c.cer. Robocopy kombinerer alle muligheder i en.

Robocopy-skabeloner og brug af indstillingerne /NOSD og /NODD

hvis du arbejder med mange jobfiler, kan du oprette jobfiler for at acceptere parametre. Robocopy giver dig mulighed for at videregive værdier fra kommandolinjen til job, når de køres. En parameter er ikke et robocopy-udtryk, men det passer godt i dette scenario.

du kan oprette robocopy-job for at acceptere parametre ved ikke at angive en kilde-eller destinationsmappe, enten eksplicit ved hjælp af indstillingerne /NOSD og /NODD eller bare ikke at medtage en kilde-og destinationsmappe overhovedet.

for et simpelt eksempel skal du oprette en jobfil uden kilde eller destination ved hjælp af syntaksen nedenfor. Dette job har til hensigt at kopiere alle tekst-og eks-filer fra en kilde til en destinationsmappe.

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

i sig selv fungerer dette job aldrig, fordi der ikke er angivet nogen kilde-eller destinationsmappe.

når du opretter et job uden kilde-og destinationsmappe, oprettes jobfilen automatisk ved hjælp af indstillingerne /NOSD og /NODD.

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

indstillingerne /NOSD fortæller robocopy, at du ikke inkluderede en kildemappe, mens /NODD angiver, at du ikke inkluderede en destinationsmappe. Denne jobfil er en “skabelon” til andre job.

men du kan videregive “parametre” til denne jobfil for at give kilde-og destinationsmapper.

for at bruge den jobfil, der netop er oprettet til at kopiere filer fra C:\src til C:\dst, du kan videregive disse mapper direkte på kommandolinjen, som derefter sendes til jobbet.

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

asynkron kopiering (Robocopy /MT)

som standard behandler robocopy kun en fil ad gangen. Du kan dog tvinge robocopy til at kopiere flere filer end på en gang ved at bruge indstillingen /MT.

indstillingen /MT giver dig mulighed for at angive antallet af tråde, som robocopy vil bruge til at kopiere filer. Maksimum er 128.

du kan bruge /MT ligesom så:

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

jeg har valgt 32 i dette tilfælde som en baseline. Jeg foreslår at starte ved 32 for at se, hvordan din computer og netværk håndterer ting og justerer trådene i overensstemmelse hermed.

Bemærk, at hvis du bruger /MT, kan du ikke bruge /IPGeller /EFSRAW. For bedre ydeevne skal du ikke sende loggen til konsollen. Brug i stedet /LOG.

planlægning Robocopy

Robocopy har et par måder, du kan planlægge, når det kører.

brug af /RH

brug af /RH mulighed, kan du fortælle robocopy at kun køre i løbet af en bestemt tid. Dette er fantastisk, hvis du har et vedligeholdelsesvindue eller et tidspunkt, hvor alle er gået hjem for dagen.

du kan angive et starttidspunkt og et sluttidspunkt i formatet HHMM-HHMM. For eksempel at påberåbe sig robocopy, men kun tillade det at køre mellem timerne 5PM og 9AM som defineret af systemuret, Kør:

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

du vil se, at hvis du påberåber robocopy uden for disse timer, vil det fortælle dig den aktuelle tid og vente på starttidspunktet at køre.

Robocopy fortæller dig, hvad tid det vil starte, hvis planlagt
Robocopy fortæller dig, hvad tid det vil starte, hvis planlagt

du skal sikre dig, at begge tider er i et 24-timers format og er nøjagtigt fire cifre lange. Vinduet skal være større end to minutter.

som standard vil brug af /RH kontrollere starttidspunktet før hele kørslen. Men hvis du har mange filer og tror, at processen kan gå længere end det, kan du bruge /PF indstillingen. /PF vil tvinge robocopy til at kontrollere vinduet før hver fil.

brug af opgaveplanlæggeren

Outputloggen

Robocopy returnerer altid en outputlog. Om denne log vises via stdout på konsollen og/eller omdirigeres til en logfil er op til dig.

du har masser af muligheder, når du viser robocopy output.

Skift forklaring standard opførsel ækvivalent kontakt noter
/NP ingen fremskridt. Undertrykker visning af fremskridt information. Dette kan være nyttigt, når output omdirigeres til en fil.
/unicode Vis statusudgangen som unicode-tekst
/LOG: fil Outputstatus til logfil og overskrive
/UNILOG: fil Output status til unicode logfil og overskrive
/LOG+:fil Outputstatus til logfil og tilføj til eksisterende logfil
/UNILOG+: fil Outputstatus til unicode-logfil og tilføj til eksisterende logfil
/TS viser filens tidsstempler for hver fil, der behandles.
/FP erstatter simple filnavne med fuld fil stinavne i output.
/NS viser ikke filstørrelser.
/NC skjuler output filen klasse ” tekst Tags “(gå her for mere information: https://www.uvm.edu/~gcd/2015/04/robocopy-file-classes/)
/NFL skjuler filnavne. Fejl er dog stadig logget. Eventuelle filer filer slettet eller ville blive slettet, hvis / L blev udeladt er altid logget
/NDL skjuler output fra kataloglisten. Fuld fil pathnames er output til lettere opspore problematiske filer.
/TEE Output til konsol vindue, samt logfilen
/NJH ingen job header
/NJS ingen joboversigt
/BYTES udskriftsstørrelser som bytes
/ rapporter alle filer, ikke kun de valgte & kopieret
/V producere verbose output log, viser sprunget filer
/Eta Vis forventet ankomsttidspunkt for kopierede filer. Se starttidspunktet for hver filkopi og det estimerede færdiggørelsestidspunkt baseret på den observerede gennemstrømning af tidligere kopier. Tiderne vises efter filnavnet i formatet HH:MM – > HH:MM (start – > finish).
/DEBUG Vis debug volume information

begrænsning af Logelementer med /NJS og / NJH

som standard returnerer robocopy to elementer i output, en joboverskrift og en joboversigt.

joboverskriften er den enkle ROBOCOPY-overskrift øverst.

Robocopy job header
Robocopy job header

joboversigten viser en oversigtsstatus for alle filer/mapper, hvor meget data der blev overført, og det tidspunkt, hvor løbet sluttede.

Robocopy joboversigt
Robocopy joboversigt

du kan skjule hvert af disse elementer ved hjælp af /NJH for at skjule joboverskriften og /NJS for at skjule joboversigten. Du kan inkludere en af disse muligheder eller begge sammen.

Skjul joboverskrift og joboversigt
Skjul joboverskrift og joboversigt

omdirigering af Outputlog til en fil

hvis du har brug for at gemme outputloggen, kan du omdirigere den til en tekstfil og/eller vise den på konsollen. Du kan gøre det ved hjælp af traditionelle output omdirigeringer som >, >>, Strømshell eller /LOG mulighed.

for at omdirigere outputloggen til en fil ved hjælp af indstillingen /LOG overskrivning af en eksisterende logfil skal du bruge syntaksen /LOG:<filepath> som nedenfor. Den eneste udgang, du modtager på konsollen, er stien til logfilen.

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

hvis du vil beholde indholdet af en eksisterende logfil og føje resultater til en fil, kan du bruge + operatoren som vist nedenfor.

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

omdirigering af Outputlog til en fil og visning på konsollen

hvis du vil gemme outputloggen i en fil, men også se den på konsollen, kan du bruge /TEE indstillingen. Denne indstilling får robocopy til at skrive output til logfilen, mens den stadig opretholder standardadfærden ved at returnere output til konsollen.

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

Afslutningskoder

som alle andre kommandolinjeværktøjer returnerer robocopy afslutningskoder afhængigt af resultaterne af udførelsen. Vi ønsker alle, at robocopy altid afslutter med en 0, men det sker ikke altid.

nedenfor finder du al den udgangskode, som robocopy returnerer, og deres forklaring. Enhver udgangskode større end syv angiver mindst en fejl under udførelsen.

Udgangskode forklaring
0 ingen handling udført. Kilde og destination er synkroniseret.
1 mindst en fil blev kopieret med succes.
2 ekstra filer eller mapper blev fundet. Undersøg log.
3 afslutningskode 2 og 1 kombineret.
4 uoverensstemmende filer eller mapper fundet. Undersøg log.
5 afslutningskode 4 og 1 kombineret.
6 afslutningskode 4 og 2 kombineret.
7 Udgangsnummer 4, 1 og 2 kombineret.
8 mindst en fil eller mappe kunne ikke kopieres. Prøv igen grænse overskredet. Undersøg log.
16 kopi mislykkedes katastrofalt.

Bemærk, at hvis du udfører robocopy i et tredjepartsværktøj, kan dette værktøj måske tro, at enhver ikke-nul udgangskode er en fejl. For at forhindre dette kan du ændre udgangskoden til 0, hvis den returnerer 1.

Robocopy “ekstra” filudgangskode er en almindelig returkode, hvilket betyder, at en “ekstra” fil er i destinationsmappen, men ikke kildemappen. Denne kode udelukker ekstramateriale, der forhindrer sletninger fra destinationen.

ændring af Udgangskoden i en batchfil

hvis du udfører robocopy med en batchfil, kan du finde værdien af variablen %ERRORLEVEL%. Hvis det returnerer 1, skal du bruge nøgleordet exit til at afslutte scriptet med 0.

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

ændring af Afslutningskoden i et Strømshell-script

hvis du udfører robocopy i et Strømshell-script, kan du påkalde robocopy med Start-Process ved hjælp af PassThru for at returnere den oprettede proces og Wait for at vente på, at robocopy er færdig. Du kan derefter kontrollere egenskaben ExitCode for en værdi på 1. Hvis afslutningskoden er 1, skal du afslutte Strømshell-scriptet med en 0 ved hjælp af $host.SetShouldExit().

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

almindelige fejl

hvis du har at gøre med tusindvis af filer, er du bundet til at køre på tværs af nogle problemer. Her er en oversigt over almindelige fejl, jeg er stødt på

fejl Ugyldig Parameter

når du ser en fejl, der angiver fejl Ugyldig parameter, betyder det normalt, at du har forsøgt at videregive indstillinger til robocopy ude af rækkefølge på en eller anden måde. Robocopy Ugyldig parameter 3 fejl er den mest almindelige, ser det ud til.

en almindelig årsag til, at du får denne fejl, er, når du angiver en kilde eller destinationsmappe med mellemrum og glemmer at omgive den med anførselstegn.

Robocopy eksempler

du kan bygge dine egne strenge af robocopy eller du kan tage, hvad andre har lært og bruge dem! I dette afsnit vil jeg dække brugssager om, hvordan man bruger robocopy til at udføre forskellige ting.

Find mappestørrelsen på en netværksmappe

bidragyder: northendtroooper (Reddit)

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

slet hurtigt Mappeindhold (ignorerer tilladelser på undermapper)

bidragyder: )

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

udførelse af store filvandringer

bidragyder: 5789 >

målet med dette uddrag er at tvinge ejerskab på alle filer tilbage til administratorer. Vi tilføjer derefter et eksplicit ess til gruppen Administratorer for fuld kontrol på hvert objekt rekursivt, selvom vi også indstiller arv.

endelig gør vi en fuld robocopy kopi med DACLs til destinationen med log. Log kan derefter gennemgås for yderligere tilladelsesproblemer eller bare fillåse, og en anden delta-synkronisering kan udføres senere.

> 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

rekursivt tvinge Administratorer gruppe som ejer af alle filer og mapper. Der kan være måder omkring dette, men dette er den mest tunge håndede tilgang og normalt den hurtigste.

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

når vi er ejer, kan vi nu tvinge et nyt ESS ind i DACL for hvert objekt. Dette giver administratorer fuld kontrol med arv aktiveret og rekursivt gennem stien.

Indstilling af dette ved roden med arv ville dække miljøet, men når en aktie har SKABEREJER med fuld kontrol (hvilket desværre endda er Microsofts anbefaling til ting som filbrugerprofilbutikker), kan brugeren deaktivere arv eller fjerne Esser efter eget skøn. Så en tung hånd er normalt den hurtigste løsning.

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

når vi har ændret Dacl ‘ erne på de fleste filer, prøver vi at kopiere filerne til en ny placering, der er fælles for ting som fildelingsvandringer. Til dette kopierer vi emnerne rekursivt og bruger /SEC – kontakten til også at kopiere Data/attributter/tidsstempler/DACLs.

derefter logger vi handlingen med fulde stier og for alle objekter (/Vverbose-omskifter) til en log, så vi kan afhjælpe < 5% af fejl, der ofte er stilængde eller fillås relateret og bliver mere granulære.

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

dette er en simpel ramme for styring af en fildeling migration med minimal indvirkning på brugeroplevelsen. Det forbedrer også den kontrol, den har over dataene. Hvis en kunde har en stærk datastyringspraksis, hvor ejerskab styres korrekt på et underordnede mappeniveau, bliver dette en mere kompliceret diskussion, men de fleste kunder, vi finder, er heldige at kun bruge arv og gruppebaserede Esser, så dette er den mest almindelige situation og løsning, vi starter ved.

Robocopy alternativer

Robocopy er et fantastisk værktøj, men der er så mange andre værktøjer, der ligner det, der kan være af interesse.

  • kopi – et lignende kommandolinjeværktøj med masser af muligheder.
  • Copy-Item magtskal cmdlet – ikke nær så featured, men meget enklere.
  • træstørrelse – GUI og scriptable værktøj til at finde mappeoplysninger.

Resume

Robocopy er et fremragende værktøj til at kopiere store sæt filer. Uanset om du laver en Datamigrering, holder mapper synkroniseret eller blot har brug for en hurtig måde at kopiere filer nøjagtigt på, er robocopy et godt valg.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.