Robocopy Er en av de mest brukte kommandolinjeverktøy for å kopiere store mengder data I Windows. Det er et populært verktøy på grunn av hvor kraftig det er. Men med all den kraften kommer kompleksitet. I denne veiledningen vil vi bryte ned all den kompleksiteten og gi en komplett opplæring om bruk av dette nyttige verktøyet.
Robocopy Er Et Windows-kommandolinjeverktøy som har vært tilgjengelig Siden Windows Nt. Det er en erstatning for det mindre allsidige xcopy-verktøyet. Den lar deg angi en stasjonsbane eller serverbane for å kopiere / flytte filer ved en ledetekst.
versjonen Av Robocopy i skrivende stund er opp til 10.0.18. Dette er den versjonen jeg utførte min testing på.
Robocopy gir massevis av funksjoner du kan utnytte til å utføre effektive og raske filkopier og trekk. Det kan:
- Kopier filer over et nettverk med gjenoppta evner
- kan hoppe OVER NTFS junction points forårsaker feil vanligvis fra uendelige looper
- kan kopiere fil-og katalogattributter bevare tidsstempler
- kan kopiere NTFS tillatelser, eiere og revisjon info
- kan kopiere katalog tidsstempler
- kan kopier filer i backup-modus for å sikre at filer kopieres, selv om rettighetene er nektet administratoren
- automatiske forsøk
- kan synkronisere to mapper
- er smart nok til å hoppe over filer som allerede er kopiert
- kan kopiere baner som er større enn banegrensen på 256 tegn
- Utføre asynkrone kopier ved hjelp av multithreading-evnen.
- Returnerer standardiserte avslutningskoder for bruk i skript
som du kan se, er det mye å kopiere. Jeg ønsket å dekke alt du trenger å vite om dette hendige verktøyet.
Innholdsfortegnelse
Felles Robocopy Syntaks Referanse
Hvorfor et så langt blogginnlegg på et enkelt verktøy? Bare fest øynene dine på bordene nedenfor. Du har mange alternativer for å kopiere eller flytte filer med robocopy! Du vil flere alternativer i de enkelte seksjonene.
disse tabellene ble bygget fra hjelpesyntaksen returnert fra robocopy /?
. De har blitt brutt opp i mer meningsfulle seksjoner, lagt til over tid, og ryddet opp for å gi mer nyttig info.
Kildealternativer
Bryter | Forklaring | Standard Oppførsel | Tilsvarende Bryter | Merknader |
/S | Kopier undermapper | |||
/E | Kopier undermapper inkludert tomme undermapper | |||
/KOPIER: | Kopieringsalternativer | / KOPIER: DAT | D = Data,A = Attributter, T = Tidsstempler S = Sikkerhet = NTFS Acl, O = Eier info, U = overvåking info. Fildata (D) inkluderer alltid filtidsstempler (T) | |
/SEC | Kopier filer Med Sikkerhet | /KOPIER: DATS | ||
/DCOPY: T | Kopier katalog tidsstempler | |||
/COPYALL | Kopier all filinformasjon | /COPY: DATSOU | dette vil hindre dehydrating offline filer og vil i stedet kopiere filens tag (på emc VNX / Unity systemer minst). Dette er ikke offisielt dokumentert! Hvis dehydrering er det du trenger (grunnen til at jeg fant dette problemet), kan du ikke kopiere Aclene langs filene dine. KREDITT: Monsieurx (Reddit) | |
/NOCOPY | Kopier ingen filinfo | nyttig med / PURGE | ||
/A | Kopier bare filer med Arkivattributtsettet | |||
/M | liker /A, men fjern Arkivattributt fra kildefiler | |||
/LEV:n | kopier bare de øverste N-Nivåene i kildetreet | |||
/MAXAGE: n | Maksimal FILALDER-ekskluder filer eldre enn n dager/dato | |||
/MINAGE: n | MINimum FILALDER-ekskluder filer nyere enn n dager/dato | Hvis n < 1900 da n = ingen dager, ellers n = ÅÅÅÅMMDD dato | ||
/FFT | Anta FAT Fil Ganger | 2-andre dato / tid granularitet. Dette erstatter NTFS tidsstempler. Synes å være mer pålitelig når du overfører over et nettverk. | ||
/256 | Slå av veldig lang bane (> 256 tegn) støtte |
Destinasjonsalternativer
Bryter | Forklaring | Standard Oppførsel | Tilsvarende Bryter | Merknader |
/A+: | Angi filattributt(er) på målfiler + legg til | |||
/A-: | Fjern filattributt(er) på målfiler | |||
/FAT | Opprett målfiler ved hjelp av 8.3 FAT filnavn bare | |||
/OPPRETT | Opprett katalogtrestruktur + bare filer med null lengde | |||
/SOMMERTID | Kompensere for forskjeller I SOMMERTID på en time |
Kopier Alternativer
Bryter | Forklaring | Standard Oppførsel | Tilsvarende Bryter | Merknader |
/L | Bare Liste filer | ikke kopier, tidsstempel eller slett filer | ||
/MOV | Flytt filer | Slett fra kilde etter kopiering | ||
/FLYTT | Flytt filer og kataloger | Slett fra kilde etter kopiering | ||
/sl | Kopier fil symbolske lenker i stedet for målet | |||
/Z | Kopier filer i restartable modus | Overlev et nettverk glitch | ||
/B | Kopier filer i backup-modus | |||
/J | Kopier med ubufret I / O | anbefales for store filer | ||
/NOOFFLOAD | Kopier filer uten Å bruke windows copy offload mekanisme | https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=ws.11) | ||
/EFSRAW | Kopier krypterte filer ved HJELP AV EFS RAW-modus | |||
/TIMFIX | Fix fil ganger på alle filer, selv hoppet over filer | |||
/XO | Ekskluder eldre | hvis målfilen eksisterer og er samme dato eller nyere enn kilden-ikke bry deg om å overskrive den. | ||
/XC | Ekskluder endrede filer | |||
/XN | Ekskluder nyere filer | |||
/XX | Utelat filer som finnes i mål, men ikke kilde | /XX | ||
/XF-fil … | Ekskluder filer som samsvarer med fornavn / baner/jokertegn | |||
/XD dirs … | Ekskluder kataloger som samsvarer med oppgitte navn / baner. | /XF og / XD kan brukes i kombinasjon f. EKS ROBOCOPY c:\source d:\dest / XF *.dokument *.xls / XD c:\unwanted /S | ||
/IA: | Inkluder filer med noen av de gitte attributter | |||
/XA: | Ekskluder filer med noen av de gitte attributtene | |||
/IM | Overskrive endrede filer. Dette inkluderer de samme filene med forskjellige tider. | |||
/Er | Overskrive filer selv om de allerede er de samme | |||
/DET | Inkluderer tweaked filer | |||
/XJ | Ekskluder koblingspunkter fra kilde | / XJ | ||
/XJD | Ekskluder koblingspunkter fra kildekataloger | |||
/XJF | Ekskluder koblingspunkter fra kildefiler | |||
/MAKS: n | Ekskluder filer større enn n byte | |||
/MIN: n | Ekskluder filer mindre enn n byte | |||
/MAXLAD: n | Ekskluder filer ubrukte siden n | |||
/MINLAD:n | Ekskluder filer brukt siden n | Hvis n < 1900 da n = n dager, ellers n = ÅÅÅÅMMDD dato | ||
/MIR | Speil et katalogtre | /PURGE / E | ||
/PURGE | Slett dest-filer / mapper som ikke lenger finnes i kilde | |||
/XL | Ekskluder filer som finnes i kilde, men ikke destinasjon | |||
/SECFIX | robocopy /secfix fikser fil sikkerhet på alle filer, selv hoppet over filer. | Angi hvilken type sikkerhetsinformasjon du vil kopiere ved å også bruke ett av disse alternativene: / COPYALL/COPY: O / COPY: S / COPY: U / SEC | ||
/ZB | Bruk restartable modus; hvis tilgang nektet bruk Backup modus |
Overvåkingsalternativer
Bryter | Forklaring | Standard Oppførsel | Tilsvarende Bryter | Merknader |
/R:n | antall forsøk på mislykkede kopier | / R:1000000 | prøv alltid å angi dette alternativet. Jeg anbefaler å sette dette til 10-20 for ikke å kaste bort tid på å prøve på nytt. | |
/W: n | Ventetid mellom forsøk | /W:30 | prøv alltid å sette dette alternativet til et lavere tall for å prøve på nytt raskere. Jeg foreslår 5-10. | |
/REG | Lagre / R: n og / W: n i windows-registeret som standardinnstillinger | |||
/RH:hhmm-hhmm | ganger når nye kopier kan startes | |||
/TBD | Vent på sharenames å bli definert | prøv feil på nytt 67 | ||
/PF | Sjekk kjøre timer på en per fil (ikke per pass) basis | |||
/MAN: n | Kjør igjen når mer enn n endringer sett | |||
/MOT:m | Kjør igjen i m minutter, hvis endret |
Forstå Robocopy Oppførsel
jeg har nå helt blåste tankene dine med alle de potensielle syntaksalternativene som er tilgjengelige for deg. La oss nå se alle de forskjellige kombinasjonene av hvordan vi kan bruke denne syntaksen.
jeg kunne gi deg en enormt lang liste over robocopy kommandoer med et stadig voksende antall brytere. Men jeg tror det er bedre å lære deg å fiske. La oss gå over hvordan å sette fornuft ut av alle disse alternativene.
Robocopy Kopierer Bare Hele Kataloger
hver robocopy kjøring vil ha en kilde og en målkatalog. Robocopy kopierer og flytter filer av hele katalogen. Det er ikke mulig å eksplisitt kopiere en enkelt fil med robocopy. Bruk copy
Eller PowerShell Copy-Item
for det.
du kan imidlertid robocopy enkeltfil med riktig filtrering som du vil lære om nedenfor. For å robocopy en enkelt fil fil, angi kilde – og målkataloger umiddelbart etterfulgt av filnavnet i kilden.
> robocopy c:\src d:\dst copythisfile.txt
Syntaksen Avhenger Av Miljøet
også alternativene du gir til robocopy vil avhenge av miljøet. Du må svare på noen spørsmål når du prøver å finne ut hvilke alternativer du skal bruke.
- vil du alltid kopiere til en tom katalog?
- er det mulig at filer allerede finnes i målkatalogen?
- vil du kopiere terabyte med data eller bare noen få megabyte?
- vil du kopiere filer over et nettverk eller lokalt?
- … og mer.
hvis det ikke er noen filer i målfilkatalogen, bør du ikke bry deg om alternativer som overskriver filer. Hvis du ikke vil kopiere filer over nettverket, ikke bekymre deg for disse alternativene. Eksplisitt definere din nåværende og potensielle fremtidige omstendigheter miljøet vil være i.
Gjenkjenn Standardalternativer
Robocopy bruker mange alternativer som standard. Du kan plukke dem ut ved å se på tabellene ovenfor. Det gir også en praktisk utgang til hver gang du kjører verktøyet.
du kan se nedenfor at når jeg kjørte robocopy med sine mest grunnleggende alternativer(kilde-og målmappen), brukte den automatisk noen alternativer. Forstå standard virkemåte er viktig.
Referanse alternativene du ser i utgangen med alternativforklaringene ovenfor, og du vil forstå nøyaktig hva robocopy gjør under dekslene.
Forstå Hva Robocopy Kommandoer Kan Gjøre
Hvis du har brukt copy
Eller PowerShell ‘ s Copy-Item
cmdlets, har du sannsynligvis angitt en kilde Og destinasjon og fortsatte om dagen din. Det er ikke mange alternativer du kan konfigurere der. Disse robocopy-kommandoene har en standard virkemåte.
men robocopy, derimot, forstår mye mer og gir deg fleksibiliteten til å justere oppførselen så mye du vil.
det er viktig å vite at robocopy ikke bare er klar over konseptet med en fil eller katalog. Det er mye mer til et filsystem enn det, og robocopy støtter omtrent alt.
en fil som sitter på et filsystem, er ikke bare et dumt objekt med et enkelt formål. Det er mange forskjellige attributter og ting som går med begrepet en fil. For eksempel har en fil attributter som:
- et tidsstempel (skrevet, endret og åpnet)
- NTFS ACL
- en eier
- NTFS overvåkingsinformasjon
- skjult flagg
- arkivert flagg
når du kopierer eller flytter en fil, du har muligheten til å ta med alle de tingene sammen med det, hvis du vil.
Forstå at når du kjører robocopy, kopierer du ikke bare en fil, du kopierer også potensielt all annen informasjon med den. Det er viktig å innse det og å redegjøre for det i alternativene du gir robocopy.
Det Grunnleggende: Utføre WhatIf Scenarier
Hvis du har en stor filserver et sted du vil migrere og ikke vil gjøre noe ennå, kan du bruke robocopy til å returnere hva det ville ha gjort.
ved hjelp av alternativet /L
kan du fortelle robocopy å nummerere alle filene og / eller mappene du angir, og returnere en liste over filer den ville ha kopiert / flyttet.
du kan bruke alternativet /L
med et annet alternativ. Dette er en fin måte å returnere alle alternativene robocopy ville ha brukt(standard eller ikke). Det vil gi deg en samlet oversikt over hva robocopy vil gjøre gitt alternativene du har gitt den.
Det Grunnleggende: Kopiere Filer
den mest grunnleggende bruken av robocopy bruker en kilde – og målkatalog uten alternativer.
> robocopy C:\src C:\dst
dette alternativet kopierer alle filer (unntatt undermapper) fra C:\src til C:\dst.
du kan også kopiere alt inkludert undermapper (tom eller ikke) og NTFS-tillatelser. Dette er, fra det jeg kan fortelle, metoden for å bokstavelig talt kopiere alt det handler om en katalog med filer til en annen katalog.
nedenfor kopierer jeg ALLE NTFS Acler, fileiere, undermapper (inkludert tomme) og alle filattributter. Alt dette er gjort mulig med bare alternativet /E
for å inkludere alle tomme undermapper og /COPYALL
for å fange resten.
> robocopy C:\src C:\dst /E /COPYALL
Grunnleggende: Flytte Filer
Flytte filer overfører filer fra en katalog til en annen akkurat som kopiering gjør. Den eneste forskjellen med en flytteoperasjon er at kildefilene fjernes etter kopien.
hvis du vil slette filer/kataloger fra kilden etter kopiering, bruker du alternativet /MOV
. Dette vil fjerne alle filer i den angitte katalogen (ingen undermapper).
> robocopy C:\src C:\dst /MOV
du kan også bruke /MOVE
til å flytte alle filer og undermapper.
> robocopy C:\src C:\dst /MOVE
Grunnleggende: Synkronisering Av Filer
Robocopy lar deg synkronisere to kataloger. Dette betyr enten å sikre at alle filer i målkatalogen er i kildekatalogen og ikke mer. /MIR
vil kopiere data kopiere alle filer i kilden ikke i målet og slette filer i målet ikke i kilden. Pass på!
> robocopy C:\src C:\dst /MIR
Kopiere Filer over Et Nettverk
hvis du kopierer filer over et nettverk, er det noen alternativer du bør vurdere.
Robocopy lar deg kopiere filer i ‘restartable mode’ ved hjelp av alternativet /Z
. Dette betyr at hvis en fil begynner å kopiere og mislykkes midtveis, kan kopien starte på nytt i stedet for å mislykkes helt. Alternativet /Z
er nyttig når strømmen blir kuttet over et nettverk.
Advarsel: noen har rapportert å bruke
/Z
reduserer ytelsen med 1/4. Gi meg beskjed om dine funn.
du kan også bruke alternativet /FFT
. Denne bryteren har vært kjent for å bevare filtidsstempler mer nøyaktig når du overfører over et nettverk. DETTE alternativet bruker TIDSSTEMPLER FOR FAT-filsystemet i STEDET FOR NTFS.
robocopy C:\src \SRV1\share /Z /FFT
Bruke /IPG Til Å Kontrollere Inter-Packet Gap
når du kopierer filer over et nettverk, kan du bruke bryteren /IPG
. Dette er også kjent som inter-packet gap-alternativet. Dette alternativet definerer (i millisekunder) frekvensen der robocopy vil vente mellom å sende nye pakker.
bruk ALLTID Unc-Baner ikke Stasjonsbokstaver
en leser på Reddit oppdaget den harde måten å ikke bruke kartlagte stasjoner som målkatalog. I stedet bruker alltid alltid bruk EN UNC-bane. Du kan støte på problemer med grensen på 256 tegn hvis du gjør det. Sjekk Ut Dette Microsoft doc for mer informasjon.
Robocopy Backup Mode (Robocopy /Z)
Robocopy har et alternativ (/B
) eller som en backup til restartable mode (/ZB
) som kopierer filer i backup-modus. Hva er «backup mode» uansett?
når du vanligvis kopierer en fil I Windows og treffer en fil som krever administratorrettigheter for å få tilgang, får du en feilmelding som angir at du ikke har tillatelse. Selv om Du kanskje kjører som lokal administrator, Vil Windows ikke la deg få tilgang til Den.
ADVARSEL: det har vært rapporter om ødelagte servervolumer når du kopierer data til En Windows Server 2016-server med de-duplisering slått på. Når du bruker bryteren
/ZB
, blir resultatet en dedup chunk-butikk som blir kastet i Systemvoluminformasjonen. De kopierte filene vil ikke være lesbare og vil generere feil når du prøver å manipulere dem. Serverfault lenke med mer info.
Backup-modus er en Måte å få tilgang til filer uten å bekymre seg om tillatelser.
Robocopy bruker backup-modus for å bruke SeBackupPrivilege for å lese filer og serestoreprivilege brukerrettighet til å få tilgang til alle filer den trenger. Dette ignorerer Eventuelle Ess som normalt vil hindre deg i å få tilgang til disse filene.
SeBackupPrivilege og SeRestorePrivilege brukerrettigheter er normalt tildelt brukere I Backup Operatører og Administratorer grupper, men noen ganger kan de bli fjernet. Backup modul eliminerer denne risikoen og midlertidig gir brukeren utfører robocopy disse rettighetene.
hvis du vil sjekke om brukerkontoen din har den retten, kan du kjøre whoami /priv
og begge rettighetene skal vises.
Filtrering Av Filer Og Mapper
det store flertallet av alternativene som er tilgjengelige for deg, er å ekskludere filer og kataloger på mange forskjellige måter. Jeg har brutt ned alle måtene du kan filtrere eller ekskludere filer og kataloger basert på ulike kriterier.
Etter Filnavn Eller Filtype
Filtrering av hvilke filer som kopieres / flyttes i et robocopy-anrop, gjøres ved hjelp av jokertegn. Du kan bruke et jokertegn til å filtrere etter filer som samsvarer med en bestemt filnavnstreng eller filtype.
hvis du for eksempel bare vil kopiere TXT-filer, kan du angi *.txt.
> robocopy C:\src C:\dst *.txt
hvis du vil begrense til bare filer som starter med a, kan du bruke a*.
> robocopy C:\src C:\dst a*
Y0u kan også gi flere sett med filnavn matcher ved å skille dem med et mellomrom som vist nedenfor.
> robocopy C:\src C:\dst a* b*
når du filtrerer etter filnavn, vil robocopy vise deg filteret i utgangen.
Ved Katalognavn
Robocopy lar deg filtrere elementer ikke bare etter fil, men etter katalognavn også. Med robocopy /xd
kan du ekskludere bestemte kataloger som samsvarer med et bestemt navn.
når du kopierer flere mapper, bruker du bryteren /XD
til å ekskludere mapper fra kjøringen.
> robocopy C:\src C:\dst /XD "c:\src\exclude"
Etter Fil/Katalog Tidsstempel
Nedenfor finner du alle robocopy alternativer som vil utelukke filer og mapper basert på ulike tidsstempelattributter.
Bryter | Forklaring |
/DCOPY: T | Kopier katalog tidsstempler |
/MAXAGE: n | Ekskluder filer eldre enn n dager / dato |
/MINAGE:n | Ekskluder filer nyere enn n dager / dato |
/XO | hvis målfilen finnes og har samme dato eller nyere enn kilden, må du ikke overskrive |
/XN | hvis målfilen finnes og har samme dato eller er eldre enn kilden, må du ikke overskrive |
det er to populære alternativer å velge når du filtrerer på ting som tidsstempel; /XO
og /MAXAGE
.
/XO
lar deg ekskludere filer fra kopi bare hvis de er nyere enn kilden. Ved hjelp av alternativet /XO
kan du robocopy bare nye filer etter tilgangsdato.
> robocopy C:\src C:\dsc /XO
hvis du vet at de maksimale aldersfilene vil være, kan du også bruke alternativet /MAXAGE
. Dette lar deg spesifisere i ÅÅÅMMDD format eldre dato en fil kan ha før den kopieres.
> robocopy c:\src c:\dst /S /MAXAGE:20191001
Robocopy Jobs
du har sett at dusinvis av alternativer er tilgjengelige for deg. Det er lett for disse alternativene å snart bli uhåndterlig. Heldigvis har du et bedre alternativ enn å huske og sikre at alle disse alternativene er spot på hver gang.
Robocopy jobbfiler er tekstfiler som inneholder ett alternativ per linje. Du bruker vanligvis robocopy til å opprette disse jobbfilene. Når du er opprettet, kan du enten bruke robocopy til å endre dem eller en enkel tekstredigerer.
du har ulike robocopy kommandoer som fungerer med jobber.
Bryter | Forklaring | Standard Oppførsel | Tilsvarende Bryter | Merknader |
/JOBB: jobbnavn | Ta parametere fra den navngitte jobbfilen | |||
/LAGRE:jobbnavn | Lagre parametere i den navngitte jobbfilen | |||
/AVSLUTT | Avslutt etter behandling av kommandolinjen | Nyttig for visning parametere | ||
/NOSD | ingen kildekatalog er angitt | |||
/NODD | ingen målkatalog er angitt | |||
/Hvis | Inkluderer følgende filer |
en typisk jobbfil opprettet med robocopy har EN rcj-utvidelse og ser ut som den nedenfor. Denne jobbfilen ble opprettet ved å kjøre robocopy C:\src D:\dst /save:myjob
. Du kan se at du kan gi kommentarer i jobbfilen ved hjelp av ::
som er det meste av hva denne filen har.
uten kommentarer vil filen bare inneholde ett alternativ per linje.
:::: 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 :::
Lagre Jobbfiler
Lagre en jobbfil er like enkelt som å legge til /SAVE:<jobname>
– alternativet til slutten av syntaksen. Erstatt <jobname>
med navnet på jobben. Alternativet /SAVE
vil opprette en fil som heter < jobname>.rcj i katalogen der du kjørte robocopy.
> robocopy C:\src C:\dst /SAVE:myjob
du må angi /SAVE
som siste alternativ. Eventuelle alternativer som er angitt etter /SAVE
, blir ikke lagt til i jobbfilen. Vær også oppmerksom på at selv om en eksisterende jobbfil allerede eksisterer, vil robocopy alltid overskrive den eksisterende. Backup eller versjon kontrollere jobbfiler!
Merk: hvis du prøver å bruke alternativet
/MT
når du lagrer til en jobbfil, vil den ikke være i jobbfilen. Gi meg beskjed hvis du kunne få dette til å bli inkludert.
Bruke Jobbfiler
når en jobb er lagret i en jobbfil, kan du deretter bruke alternativet /JOB:<jobname>
til å angi jobbfilen du vil lese fra. Robocopy leser alle parametrene inne i jobbfilen. Den utfører da akkurat som om du oppgav alternativene direkte på kommandolinjen.
> robocopy /JOB:myjob
Opprette En Jobbfil Uten Å Kjøre En Jobb Med /QUIT
formålet med alternativet /QUIT
er ikke åpenbart. På overflaten kan du tenke /QUIT
tvinger en løp for å avslutte. I stedet fungerer /QUIT
mer som et alternativ for å forhindre at en jobb kjører i utgangspunktet.
Offisielt, /QUIT
alternativet «tvinger robocopy til å avslutte behandlingen av kommandolinjen». Det ville imidlertid bli bedre forklart som å skape en jobbfil uten å kjøre en jobb.
hvis du bruker alternativet /SAVE
, vil det også kjøre jobben automatisk. Det er ingen måte å opprette en jobbfil uten først å kjøre jobben. Du kan opprette rcj-jobbfilen med en tekstredigerer, eller du kan bruke robocopy do it ved å legge til /QUIT
til slutten.
> robocopy C:\src C:\dst /SAVE:myjob /QUIT
Redigere En Jobbfil
siden jobbfiler bare er tekstfiler, kan du redigere dem med din favoritt tekstredigerer, eller du kan få robocopy til å gjøre det for deg.
du kan redigere jobbfiler ved hjelp av en kombinasjon av /JOB
, /SAVE
og /QUIT
.
kanskje du for eksempel vil ekskludere ALLE EXE-filer fra robocopy-jobben som er lagret i en jobbfil som heter backupfiles.rcj. Du har allerede opprettet jobbfilen og vil ikke overskrive hele greia. Du kan legge til det nye alternativet som nedenfor:
> robocopy /JOB:backupfiles /XF *.EXE /SAVE:backupfiles /QUIT
Ved Hjelp Av Flere Jobbfiler
du kan også kombinere bruk av jobbfiler også. Når du angir flere jobbfiler i samme kjør, kombineres alle alternativene som brukes i den kjøringen sammen.
for eksempel, kanskje du har en stor liste over filer å ekskludere fra backupfiles kopiere jobb. Åpne en tekstredigerer, og legg til følgende for å lage en ekskluder.rcj-fil.
/XF a.exe b.txt c.cer
du kan da ekskludere disse filene fra backupfiles-jobben slik:
> robocopy /JOB:backupfiles /JOB:exclude
siden den opprinnelige backupfiles-jobbfilen allerede ekskluderte ALLE EXE-filer, ville kjørets syntaks se ut /XF *.exe a.exe b.txt c.cer
. Robocopy kombinerer alle alternativene i ett.
Robocopy Maler Og Bruke Alternativene /NOSD Og / NODD
hvis du arbeider med mange jobbfiler, kan du bygge jobbfiler for å godta parametere. Robocopy lar deg passere verdier fra kommandolinjen til jobber når de kjøres. En parameter er ikke en robocopy term, men det passer godt i dette scenariet.
du kan bygge robocopy-jobber for å godta parametere ved ikke å angi en kilde-eller målkatalog enten eksplisitt ved hjelp av alternativene /NOSD
og /NODD
eller bare ikke å inkludere en kilde-og målkatalog i det hele tatt.
for et enkelt eksempel, opprett en jobbfil uten kilde eller mål ved hjelp av syntaksen nedenfor. Denne jobben intensjon er å kopiere alle TXT og EXE filer fra en kilde til en målkatalog.
> robocopy *.txt *.exe /SAVE:backupfiles /QUIT
på egen hånd vil denne jobben aldri fungere fordi det ikke er angitt noen kilde eller målkatalog.
når du oppretter en jobb uten kilde-og målmappe, opprettes jobbfilen automatisk ved hjelp av alternativene /NOSD
og /NODD
.
/NOSD /NODD/IF *.txt *.exe/DCOPY:DA/COPY:DAT/R:1000000/W:30
alternativene /NOSD
forteller robocopy at du ikke inkluderte en kildekatalog, mens /NODD
indikerer at du ikke inkluderte en målkatalog. Denne jobbfilen er en » mal » for andre jobber.
men du kan sende «parametere» til denne jobbfilen for å gi kilde-og målkatalogene.
for å bruke jobbfilen som nettopp er opprettet for å kopiere filer fra C:\src til C:\dst, du kan sende disse katalogene direkte på kommandolinjen som deretter sendes til jobben.
> robocopy /JOB:backupfiles C:\src C:\dst
Asynkron Kopiering (Robocopy /MT)
som standard behandler robocopy bare en fil om gangen. Du kan imidlertid tvinge robocopy til å kopiere flere filer enn samtidig ved å bruke alternativet /MT
.
alternativet /MT
lar deg angi antall tråder robocopy vil bruke til å kopiere filer. Maksimum er 128.
du kan bruke /MT
som så:
> robocopy C:\src C:\dst /MT:32
jeg har valgt 32 i dette tilfellet som en grunnlinje. Jeg foreslår at du starter på 32 for å se hvordan datamaskinen og nettverket håndterer ting og justerer trådene tilsvarende.
Merk at hvis du bruker
/MT
, vil du ikke kunne bruke/IPG
eller/EFSRAW
. For bedre ytelse må du ikke sende loggen til konsollen. Bruk i stedet/LOG
.
Planlegging Robocopy
Robocopy har noen måter du kan planlegge når det kjører.
Ved hjelp av /RH
ved hjelp av /RH
kan du fortelle robocopy å bare kjøre i løpet av en bestemt tid. Dette er flott hvis du har et vedlikeholdsvindu eller en tid da alle har gått hjem for dagen.
du kan angi starttidspunkt og sluttidspunkt i formatet HHMM-HHMM. For eksempel, for å påkalle robocopy, men bare la den kjøre mellom klokken 5PM OG 9AM som definert av systemklokken, kjør:
> robocopy C:\src C:\dst /RH:1700-0900
Du vil se at hvis du påberoper robocopy utenom disse timene, vil den fortelle deg gjeldende tid og vente på starttidspunktet for å kjøre.
du må sørge for at begge ganger er i et 24-timers format og er nøyaktig fire sifre lange. Vinduet må være større enn to minutter.
som standard vil bruk av /RH
se etter starttidspunktet før hele kjøringen. Men hvis du har mange filer og tror at prosessen kan gå lenger enn det, kan du bruke alternativet /PF
. /PF
vil tvinge robocopy å sjekke vinduet før hver fil.
Ved Hjelp Av Oppgaveplanleggeren
Output Log
Robocopy vil alltid returnere en output log. Om at loggen vises via stdout på konsollen og / eller omdirigert til en loggfil er opp til deg.
Du har mange alternativer når du viser robocopy-utgang.
Bryter | Forklaring | Standard Oppførsel | Tilsvarende Bryter | Merknader |
/NP | ingen fremgang. Undertrykker visning av fremdriftsinformasjon. Dette kan være nyttig når utdata blir omdirigert til en fil. | |||
/unicode | Vis statusutgangen som unicode-tekst | |||
/LOGG: fil | Utdatastatus til loggfil og overskriving | |||
/UNILOG: fil | Utdatastatus til unicode loggfil og overskrive | |||
/LOGG+:fil | Utdatastatus til loggfil og legge til eksisterende loggfil | |||
/UNILOG+: fil | Utdatastatus til unicode-loggfilen og legg til eksisterende loggfil | |||
/TS | Viser filtidsstemplene for hver fil som behandles. | |||
/FP | Erstatter enkle filnavn med fulle filbanenavn i utdataene. | |||
/NS | viser ikke filstørrelser. | |||
/NC | Skjuler utgang filen klassen «Tekst Tags» (Gå her for mer informasjon: https://www.uvm.edu/~gcd/2015/04/robocopy-file-classes/) | |||
/NFL | Skjuler filnavn. Feil er fortsatt logget skjønt. Eventuelle filer filer slettet eller vil bli slettet hvis / L ble utelatt, logges alltid | |||
/NDL | Skjuler utdata av katalogoppføringen. Full fil banenavn er utgang til lettere å spore opp problematiske filer. | |||
/TEE | Utdata til konsollvinduet, samt loggfilen | |||
/NJH | ingen jobboverskrift | |||
/NJS | ingen jobbsammendrag | |||
/BYTE | Skriv ut størrelser som byte | |||
/X | Rapporter alle filer ,ikke bare de som er valgt & kopiert | |||
/V | Produser detaljert utgangslogg, som viser hoppede filer | |||
/ETA | Vis beregnet ankomsttid for kopierte filer. Se starttidspunktet for hver filkopi og estimert fullføringstid basert på observert gjennomstrømning av tidligere kopier. Tider vises etter filnavnet i formatet HH: MM – > HH: MM (start- > finish). | |||
/FEILSØKING | Vis informasjon om feilsøkingsvolum |
Begrensning Av Loggelementer med /NJS og / NJH
som standard returnerer robocopy to elementer i utdataene, en jobboverskrift og et jobbsammendrag.
jobboverskriften er den enkle ROBOCOPY-overskriften øverst.
jobbsammendraget viser en sammendragsstatus for alle filer/ mapper, hvor mye data som ble overført og tiden kjøringen avsluttet.
du kan skjule hvert av disse elementene ved hjelp av alternativet /NJH
for å skjule jobboverskriften og alternativet /NJS
for å skjule jobbsammendraget. Du kan inkludere en av disse alternativene eller begge sammen.
Omdirigere Utgangsloggen Til En Fil
hvis du trenger å lagre utgangsloggen, kan du omdirigere Den til en tekstfil og / eller vise den på konsollen. Du kan gjøre det ved hjelp av tradisjonelle utgangs redirectors som >
, >>
, PowerShell eller /LOG
alternativet.
hvis du vil omdirigere utdataloggen til en fil ved hjelp av alternativet /LOG
overskrive en eksisterende loggfil, bruker du syntaksen /LOG:<filepath>
som nedenfor. Den eneste utgangen du vil motta på konsollen er banen til loggfilen.
> robocopy C:\src C:\dst /LOG:c:\file.log Log File : c:\file.log
hvis du vil beholde innholdet i en eksisterende loggfil og legge til resultater i en fil, kan du bruke operatøren +
som vist nedenfor.
> robocopy C:\src C:\dst /LOG+:c:\file.log Log File : c:\file.log
Omdirigere Utgangsloggen til En Fil Og Vise På Konsollen
hvis du vil lagre utgangsloggen til en fil, men også se den på konsollen, kan du bruke alternativet /TEE
. Dette alternativet fører til at robocopy skriver utdataene til loggfilen samtidig som standardvirkemåten for retur av utdata til konsollen opprettholdes.
robocopy C:\src C:\dst /LOG+:c:\file.log /TEE
Avslutningskoder
som alle andre kommandolinjeverktøy returnerer robocopy avslutningskoder avhengig av resultatene av utførelsen. Vi ønsker alle at robocopy alltid skal gå ut med en 0
, men det skjer ikke alltid.
Nedenfor finner du all avgangskoden som robocopy returnerer og deres forklaring. Enhver utgangskode som er større enn syv, indikerer minst en feil under kjøring.
Avslutningskode | Forklaring |
0 | ingen handling utført. Kilde og destinasjon er synkronisert. |
1 | Minst en fil ble kopiert vellykket. |
2 | Ekstra filer eller kataloger ble oppdaget. Undersøk loggen. |
3 | Avslutningskoder 2 og 1 kombinert. |
4 | Feilaktige filer eller kataloger funnet. Undersøk loggen. |
5 | Utgangskoder 4 og 1 kombinert. |
6 | Utgangskoder 4 og 2 kombinert. |
7 | Utgangskoder 4, 1 og 2 kombinert. |
8 | Minst en fil eller katalog kunne ikke kopieres. Prøv grensen overskredet. Undersøk loggen. |
16 | Kopi mislyktes katastrofalt. |
Merk at hvis du kjører robocopy i et tredjepartsverktøy, kan det hende at verktøyet tror at en ikke-null utgangskode er en feil. For å forhindre dette kan du endre utgangskoden til 0 hvis den returnerer 1.
robocopy «ekstra» filutgangskode er en vanlig returkode som betyr at en «ekstra» fil er i målmappen, men ikke kildemappen. Denne koden utelukker tillegg som forhindrer eventuelle slettinger fra destinasjonen.
Endre Avslutningskoden I En Batchfil
hvis du kjører robocopy med en batchfil, kan du finne verdien av %ERRORLEVEL%
variabelen. Hvis den returnerer 1, bruker du exit
– søkeordet for å avslutte skriptet med 0.
> (robocopy <options>) ^& IF %ERRORLEVEL% LEQ 1 exit 0
Endre Avslutningskoden i Et powershell-skript
hvis du kjører robocopy i Et PowerShell-skript, kan du starte robocopy med Start-Process
ved å bruke PassThru
for å returnere prosessen opprettet og Wait
for å vente på at robocopy skal fullføres. Du kan deretter sjekke egenskapen ExitCode
for en verdi på 1. Hvis utgangskoden er 1, avslutter Du PowerShell-skriptet med en 0 ved hjelp av $host.SetShouldExit()
.
$exitCode = (Start-Process -FilePath 'robocopy' -ArgumentList '<option>' -PassThru -Wait).ExitCodeif ($exitCode -eq 1) { $host.SetShouldExit(0)}
Vanlige Feil
hvis du arbeider med tusenvis av filer, er du nødt til å kjøre over noen problemer. Her er en oversikt over vanlige feil jeg har kommet over
Feil Ugyldig Parameter
når du ser en feil som angir feil ugyldig parameter, betyr dette normalt at du har prøvd å sende alternativer til robocopy ut av sekvens på en eller annen måte. Robocopy invalid parameter 3-feilen er den vanligste, virker det.
en vanlig grunn til at du får denne feilen, er når du angir en kilde – eller målkatalog med mellomrom og glemmer å omgjøre den med anførselstegn.
Robocopy Eksempler
du kan bygge dine egne strenger av robocopy eller du kan ta hva andre har lært og bruke dem! I denne delen vil jeg dekke brukstilfeller om hvordan du bruker robocopy til å oppnå forskjellige ting.
Finn katalogstørrelsen for en nettverksmappe
Bidragsyter: northendtroooper (Reddit)
> robocopy "\MACHINE\fileshare" c:\dummy /l /xj /e /nfl /ndl /njh /r:0 /mt:64
Slett Raskt mappeinnhold (ignorerer tillatelser på undermapper)
Bidragsyter: pizzasteveo (Reddit)
> robocopy c:\dummy c:\foldertodelete /MIR
Utføre store filoverføringer
Bidragsyter: @ MySnozzberries (Twitter)
målet med denne kodebiten er å tvinge eierskap på alle filer tilbake Til Administratorer. Vi legger deretter til et eksplisitt ESS For Administratorgruppen for full kontroll på hvert objekt rekursivt, selv om vi også setter arv.
Til Slutt gjør vi en full robocopy kopi Med Dacler til destinasjonen med logg. Logg kan da bli anmeldt for flere tillatelsesproblemer eller bare filen låser og en annen delta sync kan utfø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 eier av alle filer og kataloger. Det kan være måter rundt dette, men dette er den mest tunge håndede tilnærmingen og vanligvis den raskeste.
> takeown /F .\test /R /A /D Y
Når vi er eieren, kan vi nå tvinge et NYTT ESS inn I DACL for hvert objekt. Dette gir Administratorer full kontroll med arv aktivert og rekursivt gjennom banen.
Å Sette dette på roten med arv vil dekke miljøet, men når en aksje har SKAPEREN EIER Med Full Kontroll (som dessverre Er Microsofts anbefaling for ting som file user profile stores), kan brukeren deaktivere arv eller fjerne Ess etter eget skjønn. Så en tung hånd er vanligvis den raskeste løsningen.
> icacls .\test /grant "Administrators":(OI)(CI)F /T
når Vi har endret Daclene på de fleste filene, prøver vi å kopiere filene til et nytt sted, vanlig for ting som fildelingsoverføringer. For dette kopierer vi elementene rekursivt og bruker /SEC
bryteren til også å kopiere Data/Attributter/Tidsstempler / Dacler.
så logger vi operasjonen med fulle baner og for alle objekter (/V
verbose switch) til en logg, slik at vi kan rette opp < 5% av feilene som vanligvis er banelengde eller fillås relatert og få mer granulær.
> robocopy .\test .\test2 /E /SEC /FP /V /LOG:.\temp.log
Dette er et enkelt rammeverk for å administrere en fildelingsoverføring med minimal innvirkning på brukeropplevelsen. Det forbedrer også kontrollen den holder over dataene. Hvis en kunde har en sterk datastyringspraksis der eierskap håndteres riktig på et barnemappenivå, blir dette en mer komplisert diskusjon, men de fleste kunder vi finner er heldige som bare bruker arv og gruppebaserte Ess, så dette er den vanligste situasjonen og løsningen vi starter på.
Robocopy Alternativer
Robocopy Er et fantastisk verktøy, Men Det er så mange andre verktøy som ligner på det som kan være av interesse.
- xxcopy-et lignende kommandolinjeverktøy med tonnevis av alternativer.
- Kopier-Element PowerShell cmdlet-Ikke på langt nær så kjennetegnet, men mye enklere.
- TreeSize-GUI og prosedyre verktøy for å finne mappeinformasjon.
Sammendrag
Robocopy er et utmerket verktøy for å kopiere store sett med filer. Enten du gjør en dataoverføring, holder mapper synkronisert eller bare trenger en rask måte å nøyaktig kopiere filer på, er robocopy et godt valg.