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.
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.
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.
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 /SAVE
opretter 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
, /SAVE
og /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/IPG
eller/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.
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.
joboversigten viser en oversigtsstatus for alle filer/mapper, hvor meget data der blev overført, og det tidspunkt, hvor løbet sluttede.
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.
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 (/V
verbose-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.