Adam the Automator

Robocopy on yksi käytetyimmistä komentorivin apuohjelmista kopioida suuria tietomääriä Windowsissa. Se on niin suosittu työkalu, koska kuinka voimakas se on. Mutta kaiken sen voiman mukana tulee monimutkaisuus. Tässä oppaassa hajotamme kaiken tämän monimutkaisuuden ja tarjoamme täydellisen opetusohjelman tämän hyödyllisen työkalun käytöstä.

Robocopy on Windowsin komentorivityökalu, joka on ollut saatavilla Windows NT: stä lähtien. Se korvaa vähemmän monipuolisen xcopy-apuohjelman. Sen avulla voit määrittää aseman polku tai palvelimen polku kopioida / siirtää tiedostoja komentokehotteella.

robocopyn versio tätä kirjoitettaessa on enintään 10.0.18. Tämä on versio, jota testasin.

Robocopy tarjoaa liudan ominaisuuksia, joita voit hyödyntää tehokkaiden ja nopeiden tiedostojen kopioiden ja siirtojen suorittamiseen. Se voi:

  • Copy files over a network with resume capacities
  • Can skip NTFS junction points causing failure typically from infinite loops
  • Can copy file and directory attributes preserving timestamps
  • Can copy NTFS permissions, owners, and auditing info
  • Can copy directory timestamps
  • Can kopioi tiedostot varmuuskopiointitilassa varmistaaksesi, että tiedostot kopioidaan, vaikka ne oikeudet on evätty ylläpitäjältä
  • automaattiset uudelleentarkastelut
  • voi synkronoida kaksi kansiota
  • on tarpeeksi fiksu ohittamaan jo kopioituja tiedostoja
  • pystyy kopioimaan 256 merkin polkurajaa suurempia polkuja
  • suorittamaan asynkronisia kopioita monilukukykynsä avulla.
  • palauttaa standardoidut poistumiskoodit käytettäväksi skripteissä

kuten näette, kopioitavaa on paljon. Halusin kattaa kaiken, mitä sinun tarvitsee tietää tästä kätevästä työkalusta.

Sisällysluettelo

Common Robocopy Syntax Reference

miksi näin pitkä blogikirjoitus yhdestä apuohjelmasta? Lepuuttakaa silmiänne alla olevissa pöydissä. Sinulla on paljon vaihtoehtoja kopioida tai siirtää tiedostoja Robocopy! Voit enemmän vaihtoehtoja yksittäisissä osissa.

nämä taulukot on rakennettu robocopy /?: stä palautetusta help-syntaksista. Ne on jaettu mielekkäämpiin osiin, lisätty ajan myötä, ja puhdistettu antamaan enemmän hyödyllistä tietoa.

Lähdevalinnat

Kytkin selitys oletuskäyttäytyminen vastaava Kytkin huomautuksia
/s Kopioi alikansiot
/E Kopioi alikansiot mukaan lukien tyhjät alikansiot
/COPY: Copy options / COPY: DAT D=Data, A=attribuutit, T=aikaleimat S=Security=NTFS ACLs, O=Omistajatieto, U = aUditing info. Tiedoston tiedot (D) sisältävät aina tiedoston aikaleimat (T)
/sek Kopioi tiedostot suojauksella /kopioi: DATS
/DCOPY: T Kopioi hakemiston aikaleimat
/COPYALL Kopioi kaikki tiedostotiedot /kopioi: datsou tämä estää kuivatuksen offline-tiedostoissa ja kopioi sen sijaan tiedoston tunnisteen (ainakin emc VNX/Unity-järjestelmissä). Tätä ei ole virallisesti dokumentoitu! Jos nestehukka on mitä tarvitset (syy löysin tämän ongelman), et voi kopioida ACLs pitkin tiedostoja. Luotto: Monsieurx (Reddit)
/NOCOPY Copy NO file info hyödyllinen / puhdistus
/a kopioi vain tiedostot, joissa on arkisto-attribuuttijoukko
/M tykkää /A, mutta poista Arkistoattribuutti lähdetiedostoista
/LEV:n kopioi vain lähdepuun n ylimmät tasot
/enimmäisikä: n tiedoston enimmäisikä-ei sisällä N päivää/päiväystä vanhempia tiedostoja
/MINAGE: n tiedoston vähimmäisikä-ei sisällä N päivää/päiväystä uudempia tiedostoja Jos n < 1900, niin n = päivien lukumäärä, muu n = VVVVKKPP-päivämäärä
/FFT oleta FAT File Times 2-toinen päivämäärä / aika rakeisuus. Tämä korvaa NTFS-aikaleimat. Näyttää olevan luotettavampi siirrettäessä verkon yli.
/256 Sammuta hyvin pitkä polku (> 256 merkkiä) tuki

Kohdevalinnat

Kytkin selitys oletuskäyttäytyminen vastaava Kytkin huomautuksia
/A+: Set file attribuutit kohdetiedostoissa + lisää
/A-: Poista kohdetiedostojen tiedostoattribuutit
/FAT luo kohdetiedostot käyttäen 8.Vain 3 FAT-tiedostonimiä
/luo luo hakemistopuun rakenne + vain nollapituiset tiedostot
/DST kompensoi yhden tunnin DST-aikaeroja

Kopioi valinnat

Kytkin selitys oletuskäyttäytyminen vastaava Kytkin huomautuksia
/L luettelo vain tiedostoista älä kopioi, aikaleimaa tai poista tiedostoja
/MOV Siirrä tiedostoja Poista lähteestä kopioinnin jälkeen
/siirrä Siirrä tiedostoja ja kansioita Poista lähteestä kopioinnin jälkeen
/sl kopioi tiedoston symboliset linkit kohteen sijasta
/Z Kopioi tiedostot uudelleen käynnistettävässä tilassa selviydy verkostosta häiriö
/B kopioi tiedostoja varmuuskopiotilassa
/J Copy using unbuffered I / O suositellaan suurille tiedostoille
/Nooffload kopioi tiedostoja ilman Windows copy offload-mekanismia https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=v.11)
/ERVSRAW Kopioi salatut tiedostot EFS: n RAAKATILAA käyttäen
/TIMFIX Korjaa tiedostoajat kaikille tiedostoille, jopa ohitetuille tiedostoille
/XO poissulje vanhemmat jos kohdetiedosto on olemassa ja on sama päivämäärä tai uudempi kuin lähde – älä vaivaudu korvaamaan sitä.
/XC sulje pois muuttuneet tiedostot
/XN sulje pois uudemmat tiedostot
/XX ei sisällä kohteessa olevia tiedostoja, mutta ei lähdettä / XX
/XF-tiedosto … sulje pois annettuja nimiä/polkuja/jokerimerkkejä vastaavat tiedostot
/XD dirs … jätä pois annettuja nimiä/polkuja vastaavat hakemistot. /XF ja / XD voidaan käyttää yhdessä esim. ROBOCOPY c:\source d:\dest /XF *.dokumentti *.xls /XD c:\unwanted /S
/IA: sisältävät tiedostot, joilla on jokin annetuista attribuuteista
/XA: jätä pois tiedostot, joilla on jokin annetuista attribuuteista
/IM korvaa muokatut tiedostot. Tämä sisältää samat tiedostot eri aikoina.
/IS korvaa tiedostot, vaikka ne olisivat jo samat
/se Sisältää viritettyjä tiedostoja
/XJ pois liitoskohdat lähteestä / XJ
/XJD Sulje liitoskohdat pois lähdehakemistoista
/XJF pois liitoskohdat lähdekooditiedostot
/maksimi: n sulje pois n tavua suuremmat tiedostot
/MIN: n sulje pois n tavua pienemmät tiedostot
/MAXLAD: n sulje pois tiedostot, joita ei ole käytetty
/MINLAD:n ei sisällä n jälkeen käytettyjä tiedostoja Jos n < 1900, niin N = N päivää, muuten n = VVVVKKPP päivämäärä
/MIR peilaa hakemistopuu /puhdistus /E
/puhdistus Poista dest-tiedostot/kansiot, joita ei enää ole lähdekoodissa
/XL sulje pois lähdekoodissa mutta ei kohteessa olevat tiedostot
/SECFIX Robocopy / secfix korjaa tiedoston kaikkien tiedostojen turvallisuus, jopa ohitetut tiedostot. Määritä kopioitavien suojaustietojen tyyppi käyttämällä myös jotakin seuraavista vaihtoehdoista: / COPYALL /COPY: O /COPY: S /COPY:U / SEC
/ZB käytä uudelleenkäynnistystilaa; jos pääsy evätään, käytä Varmuuskopiointitilaa

seurantavaihtoehdot

Kytkin selitys oletuskäyttäytyminen vastaava Kytkin huomautuksia
/lä:n reputtaneiden kopioiden lukumäärä / R:1000000 yritä aina asettaa tämä vaihtoehto. Suosittelen tämän asettamista 10-20: een, jotta aikaa ei kuluisi uudelleen.
/W: n odotusaika uusintojen välillä / W:30 yritä aina asettaa tämä vaihtoehto pienempään numeroon, jotta voit yrittää uudelleen nopeammin. Ehdotan 5-10.
/REG Tallenna / R:n ja / W: n Windowsin rekisterissä oletusasetuksina
/RH:hhmm-hhmm ajat, jolloin uusia kopioita voidaan aloittaa
/TBD odota sharenimien määrittelyä yritä uudelleen virhe 67
/PF Tarkista ajotunnit tiedostoa kohti (ei läpäisyä kohti)
/MA: n Juokse uudestaan, kun enemmän kuin n muutoksia nähty
/MOT:m aja uudelleen m minuutissa, jos sitä muutetaan

Robocopyn käyttäytymisen ymmärtäminen

olen nyt räjäyttänyt tajuntasi täysin kaikilla mahdollisilla syntaksivaihtoehdoilla. Katsotaanpa nyt kaikkia erilaisia yhdistelmiä siitä, miten voimme käyttää tätä syntaksia.

voisin tarjota teille valtavan pitkän listan robocopy-komentoja, joissa on alati kasvava määrä kytkimiä. Mutta on parempi opettaa sinut kalastamaan. Käydään läpi, miten laittaa järkeä pois kaikista näistä vaihtoehdoista.

Robocopy kopioi vain kokonaisia kansioita

jokaisella robocopy-suorituksella on lähde-ja kohdehakemisto. Robocopy kopioi ja siirtää tiedostoja koko hakemiston mukaan. Ei ole mahdollista kopioida yksittäistä tiedostoa robocopylla. Käytä siihen copy tai PowerShellin Copy-Item.

voit kuitenkin robokopioida yhden tiedoston oikealla suodatuksella, josta opit alla. Jos haluat robocopia yhden tiedoston, määritä lähde-ja kohdehakemistot, joita seuraa välittömästi lähteen tiedostonimi.

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

syntaksi riippuu ympäristöstä

myös robocopylle annettavat vaihtoehdot riippuvat ympäristöstä. Sinun täytyy vastata muutamaan kysymykseen, kun yrität selvittää, mitä vaihtoehtoja käyttää.

  • kopioitko aina tyhjään hakemistoon?
  • onko mahdollista, että kohdehakemistossa on jo tiedostoja?
  • kopioitko datasta teratavua vai vain muutaman megatavun?
  • kopioitko tiedostoja verkossa vai paikallisesti?
  • … ja enemmän.

jos kohdetiedostohakemistossa ei ole tiedostoja, sinun ei pitäisi välittää valinnoista, jotka korvaavat tiedostot. Jos et kopioi tiedostoja verkon yli, älä huoli näistä vaihtoehdoista. Määrittele selkeästi nykyiset ja mahdolliset tulevaisuuden olosuhteet, joissa ympäristösi tulee olemaan.

tunnista oletusasetukset

Robocopy käyttää oletusarvoisesti paljon vaihtoehtoja. Voit valita ne katsomalla yllä olevia taulukoita. Se tarjoaa myös kätevän ulostulon aina, kun käytät apuohjelmaa.

näet alta, että kun ajoin robocopyn sen perusasetuksilla (lähde-ja kohdekansio), se käytti automaattisesti joitain vaihtoehtoja. Oletusarvon ymmärtäminen on tärkeää.

jos viittaat tulosteessa oleviin vaihtoehtoihin yllä olevilla optio-selityksillä, ymmärrät, mitä Robocopy tekee peiton alla.

Robokopian oletusasetukset
Robokopian oletusasetukset

ymmärtäminen mitä Robocopy komennot voivat tehdä

jos olet käyttänyt copy tai PowerShellin Copy-Item cmdlets, olet luultavasti määrittänyt lähteen ja määränpään ja jatkanut päivääsi. Ei ole paljon vaihtoehtoja voit määrittää siellä. Näillä robocopy-komennoilla on oletuskäyttäytyminen.

mutta robocopy toisaalta ymmärtää paljon enemmän ja antaa joustavuutta muokata käyttäytymistä niin paljon kuin haluaa.

on tärkeää tietää, ettei robocopy ole vain tietoinen tiedoston tai hakemiston käsitteestä. Tiedostojärjestelmässä on paljon muutakin ja robocopy tukee lähes kaikkea.

tiedostojärjestelmän päällä istuva tiedosto ei ole vain tyhmä objekti, jolla on vain yksi tarkoitus. On olemassa monia erilaisia ominaisuuksia ja asioita, jotka menevät käsitteen tiedoston. Tiedostolla on esimerkiksi attribuutteja, kuten:

  • aikaleima (kirjoitettu, muutettu ja käytetty)
  • NTFS ACL
  • omistaja
  • NTFS: n tarkastustiedot
  • piilolippu
  • arkistoitu lippu

kun kopioit tai siirrät tiedosto, sinulla on mahdollisuus tuoda kaikki tavarat sen mukana, jos haluat.

ymmärrä, että kun suoritat robocopya, et vain kopioi tiedostoa, vaan mahdollisesti kopioit myös kaiken muun tiedon sillä. On tärkeää ymmärtää, että ja huomioon se vaihtoehtoja annat robocopy.

Perusasiat: Suoritetaan mitä skenaarioita

jos sinulla on valtava tiedostopalvelin jossain, jonka haluat siirtää etkä halua tehdä vielä mitään, voit palauttaa robocopyn avulla sen, mitä se olisi tehnyt.

käyttämällä /L – asetusta voit käskeä robocopya luetteloimaan kaikki määrittämäsi tiedostot ja/tai kansiot ja palauttamaan luettelon tiedostoista, jotka se olisi kopioinut / siirtänyt.

voit käyttää /L – vaihtoehtoa minkä tahansa muun vaihtoehdon kanssa. Tämä on loistava tapa palauttaa kaikki vaihtoehdot, joita robocopy olisi käyttänyt (oletus tai ei). Se antaa sinulle kokonaiskuvan siitä, mitä robocopy tekee, kun otetaan huomioon antamasi vaihtoehdot.

käyttö / L
käyttö /L

perusasiat: tiedostojen kopiointi

robocopyn peruskäyttö on lähde-ja kohdehakemiston käyttäminen ilman vaihtoehtoja.

> robocopy C:\src C:\dst

Tämä vaihtoehto on kopioida kaikki tiedostot (ilman alikansioita) alkaen C:\src voit C:\dst.

voit myös kopioida kaiken, mukaan lukien alikansiot (tyhjä tai ei) ja NTFS-oikeudet. Tämä on, mitä voin kertoa, menetelmä kirjaimellisesti kopioida kaikki on noin hakemiston tiedostoja toiseen hakemistoon.

alla kopioin kaikki NTFS-ACL: t, tiedostojen omistajat, alikansiot (mukaan lukien tyhjät) ja kaikki tiedoston attribuutit. Kaikki tämä on mahdollista pelkällä /E – valinnalla sisällyttää kaikki tyhjät alikansiot ja /COPYALL loput.

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

perusasiat: Tiedostojen siirtäminen

Tiedostojen siirtäminen siirtää tiedostoja kansiosta toiseen aivan kuten kopiointi. Ainoa ero move-operaatiossa on, että lähdetiedostot poistetaan kopion jälkeen.

voit poistaa tiedostoja / kansioita lähteestä kopioinnin jälkeen valitsemalla /MOV. Tämä poistaa kaikki tiedostot määritetystä hakemistosta (ei alikansioita).

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

voit myös käyttää /MOVE: ää kaikkien tiedostojen ja alikansioiden siirtämiseen.

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

perusasiat: synkronoimalla tiedostoja

Robocopy mahdollistaa kahden kansion synkronoinnin. Tämä tarkoittaa joko sen varmistamista, että kaikki kohdehakemiston tiedostot ovat lähdehakemistossa eikä enää. /MIR kopioidaan tiedot kopioimalla kaikki tiedostot lähteestä, joka ei ole kohteessa, ja poistetaan tiedostot kohteesta, joka ei ole kohteessa. Varo!

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

tiedostojen kopiointi verkon kautta

jos kopioit tiedostoja verkon kautta, on muutamia vaihtoehtoja, joita kannattaa harkita.

Robocopy mahdollistaa tiedostojen kopioinnin’ uudelleen käynnistettävässä tilassa ’ käyttäen /Z – asetusta. Tämä tarkoittaa, että jos tiedosto alkaa kopioida ja epäonnistuu puolivälissä, kopio voi käynnistyä uudelleen sen sijaan, että se epäonnistuisi kokonaan. Valitsin /Z on hyödyllinen, kun virta katkeaa verkon yli.

Varoitus:jotkut ovat ilmoittaneet käyttävänsä /Z heikentävänsä suorituskykyä 1/4. Kertokaa löydöistänne.

voit käyttää myös /FFT – vaihtoehtoa. Tämä kytkin on tiedetty tarkemmin säilyttää tiedoston aikaleimat siirrettäessä verkon yli. Tämä asetus käyttää FAT-tiedostojärjestelmän aikaleimoja NTFS: n sijaan.

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

käyttämällä /IPG: tä pakettien välisen aukon hallintaan

kun tiedostoja kopioidaan verkossa, voit käyttää /IPG-kytkintä. Tämä tunnetaan myös pakettivälivaihtoehtona. Tämä asetus määrittää (millisekunneissa)taajuuden, jolla robocopy odottaa uusien pakettien lähettämistä.

käytä aina UNC-polkuja, jotka eivät ole asemakirjaimia

eräs Redditin lukija keksi kantapään tavan olla käyttämättä kartoitettuja asemia kohdehakemistona. Sen sijaan käytä aina käytä UNC-polkua. Saatat törmätä ongelmiin 256 merkin rajan kanssa, jos teet niin. Tutustu Microsoft doc lisätietoja.

Robocopy Backup Mode (Robocopy /Z)

Robocopyssa on vaihtoehto (/B) tai varmuuskopiona restartable mode (/ZB), joka kopioi tiedostoja varmuuskopiotilassa. Mikä on ”varmuuskopiotila” muutenkaan?

kun yleensä kopioit tiedoston Windowsissa ja osut tiedostoon, jonka käyttö vaatii hallinnollisia oikeuksia, saat virheen, joka osoittaa, ettei sinulla ole oikeuksia. Vaikka saatat olla käynnissä paikallisena ylläpitäjänä, Windows ei anna sinun käyttää sitä.

varoitus: on raportoitu vioittuneista palvelinmääristä, kun tietoja kopioidaan Windows Server 2016-palvelimelle, jossa kaksoiskappaleen poisto on päällä. Kun käytät /ZB – kytkintä, tuloksena on dedup chunk-kauppa, joka romutetaan järjestelmän Äänenvoimakkuustiedoissa. Kopioidut tiedostot eivät ole luettavissa ja tuottavat virheitä, kun niitä yritetään manipuloida. Serverfault linkki lisätietoja.

Varmuuskopiotila on tapa käyttää tiedostoja ilman huolta käyttöoikeuksista.

Robocopy käyttää varmuuskopiointitilaa sebackupprivilege tiedostojen lukemiseen ja SeRestorePrivilege-Käyttäjän oikeutta käyttää tarvitsemiaan tiedostoja. Tämä jättää huomiotta kaikki Ässät, jotka normaalisti estäisivät sinua käyttämästä näitä tiedostoja.

SeBackupPrivilege-ja SeRestorePrivilege-käyttäjäoikeudet on yleensä jaettu Varmuuskopiointioperaattoreiden ja järjestelmänvalvojat-ryhmien käyttäjille, mutta joskus ne voidaan poistaa. Varmuuskopiomoduuli poistaa tämän riskin ja antaa robokopiaa suorittavalle käyttäjälle väliaikaisesti oikeudet.

jos haluat tarkistaa, onko käyttäjätililläsi kyseinen oikeus, voit ajaa whoami /priv ja molemmat oikeudet tulee näyttää.

tiedostojen ja kansioiden suodatus

suurin osa käytettävissä olevista vaihtoehdoista on tiedostojen ja hakemistojen poissulkeminen monella eri tavalla. Olen jakanut kaikki tavat, joilla voit suodattaa tai sulkea tiedostoja ja hakemistoja eri kriteerien perusteella.

tiedostonimellä tai Tiedostotunnisteella

suodatus, mitä tiedostoja kopioidaan/siirretään robocopy-puhelussa, tehdään yleismerkkien avulla. Voit käyttää yleismerkkiä suodattaaksesi tiedostoja, jotka vastaavat tiettyä tiedostonimen merkkijonoa tai päätettä.

esimerkiksi vain txt-tiedostojen kopioimiseksi voit määrittää *.txt.

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

jos haluat rajoittaa vain A: lla alkaviin tiedostoihin, voit käyttää*.

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

Y0u voi myös tarjota useita tiedostonimen osumia erottamalla ne välilyönnillä kuten alla.

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

kun suodatat tiedostonimen mukaan, Robocopy näyttää suodattimen tulosteessa.

tiedostojen suodatus ulostulo
tiedostojen suodatus ulostulo

Hakemistonimen

Robocopy avulla voit suodattaa kohteita paitsi tiedoston, myös hakemistonimen mukaan. Käyttämällä robocopy /xd voit jättää pois tietyt tiettyä nimeä vastaavat hakemistot.

kun kopioit useita kansioita ,käytä /XD – valitsinta poistaaksesi kansiot ajosta.

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

by File/Directory Timestamp

alta löydät kaikki Robocopy-asetukset, jotka eivät sisällä tiedostoja ja kansioita eri aikaleiman attribuuttien perusteella.

Kytkin selitys
/DCOPY: T Kopioi hakemiston aikaleimat
/enimmäisarvo: n ei sisällä N päivää/päiväystä vanhempia tiedostoja
/MINAGE:n ei sisällä N päivää/päiväystä uudempia tiedostoja
/XO jos kohdetiedosto on olemassa ja se on sama päivämäärä tai uudempi kuin lähde, älä korvaa
/XN jos kohdetiedosto on olemassa ja se on sama päivämäärä tai vanhempi kuin lähde, älä korvaa

suodatettaessa on kaksi suosittua vaihtoehtoa, kuten aikaleima; /XO ja /MAXAGE.

/XO voit jättää tiedostoja kopioinnista pois vain, jos ne ovat lähdettä uudempia. Valitsemalla /XO voit kopioida vain uusia tiedostoja käyttöpäivämäärän mukaan.

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

jos tiedät, että enimmäisikä on, voit käyttää myös /MAXAGE – vaihtoehtoa. Tämän avulla voit määrittää YYVAPPD-muodossa, minkä vanhemman päivämäärän tiedosto voi olla ennen sen kopioimista.

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

Robocopy Jobs

olet nähnyt, että tarjolla on kymmeniä vaihtoehtoja. On helppoa, että näistä vaihtoehdoista tulee pian kömpelöitä. Onneksi, sinulla on parempi vaihtoehto kuin ulkoa ja varmistaa kaikki nämä vaihtoehdot ovat paikalla joka kerta.

Robocopy job-tiedostot ovat tekstitiedostoja, joissa on yksi vaihtoehto riviä kohti. Käytät robocopya tyypillisesti näiden työtiedostojen luomiseen. Kun olet luonut ne, voit käyttää joko robocopya muokkaamaan niitä tai yksinkertaista tekstieditoria.

sinulla on erilaisia robocopy-komentoja, jotka toimivat Jobsin kanssa.

Kytkin selitys oletuskäyttäytyminen vastaava Kytkin huomautuksia
/JOB: jobname ota parametrit nimetystä job-tiedostosta
/Tallenna:työnimi Tallenna parametrit nimettyyn työtiedostoon
/lopeta lopeta komentorivin käsittelyn jälkeen hyödyllinen parametrien katseluun
/NOSD lähdehakemistoa ei ole määritelty
/NODD kohdehakemistoa ei ole määritelty
/jos sisältävät seuraavat tiedostot

tyypillisessä robocopylla luodussa job-tiedostossa on RCJ-laajennus ja se näyttää alla olevalta katkelmalta. Tämä työtiedosto luotiin ajamalla robocopy C:\src D:\dst /save:myjob. Näet, että voit antaa kommentteja job-tiedostossa käyttämällä ::, joka on suurin osa tästä tiedostosta.

ilman kommentteja tiedostossa olisi vain yksi vaihtoehto per rivi.

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

työtiedostojen tallentaminen

työtiedoston tallentaminen on yhtä yksinkertaista kuin /SAVE:<jobname> – vaihtoehdon lisääminen syntaksin loppuun. Korvaa <jobname> työn nimellä. Valitsin /SAVE luo tiedoston nimeltä <jobname>.rcj hakemistossa, jossa tutkit robocopya.

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

sinun täytyy määrittää /SAVE viimeiseksi vaihtoehdoksi. /SAVE jälkeen määriteltyjä vaihtoehtoja ei lisätä työtiedostoon. Huomaa myös, että vaikka olemassa oleva työtiedosto olisi jo olemassa, robocopy korvaa aina olemassa olevan työtiedoston. Varmuuskopiointi-tai versiohallinta työtiedostoihin!

Huomaa: Jos yrität käyttää /MT – asetusta tallennettaessa työtiedostoon, se ei ole työtiedostossa. Kertokaa, jos saitte tämän mukaan.

käyttämällä Job Files

kun työ on tallennettu jobitiedostoon, voit käyttää /JOB:<jobname> – asetusta määritelläksesi luettavan työtiedoston. Robocopy lukee kaikki työtiedoston parametrit. Se suorittaa sitten aivan kuin jos annoit asetukset suoraan komentoriviltä.

> robocopy /JOB:myjob

Job-tiedoston luominen ajamatta työtä käyttäen /QUIT

/QUIT – valinnan tarkoitus ei ole ilmeinen. Päällisin puolin voi ajatella, että /QUIT pakottaa juoksun poistumaan. Sen sijaan /QUIT toimii enemmänkin mahdollisuutena estää keikan läpimeno.

virallisesti /QUIT – valinta ”pakottaa robocopyn lopettamaan komentorivin käsittelyn”. Se olisi kuitenkin parempi selittää siten, että luodaan työtiedosto ilman työn suorittamista.

jos käytät /SAVE – asetusta, se suorittaa työn myös automaattisesti. Työtiedostoa ei voi luoda ajamatta ensin työtä. Voit luoda RCJ job-tiedoston tekstieditorilla tai voit käyttää robocopya do it liittämällä /QUIT loppuun.

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

Job-tiedoston muokkaaminen

koska job-tiedostot ovat vain tekstitiedostoja, voit muokata niitä suosikkitekstieditorillasi tai voit pyytää robocopya tekemään sen puolestasi.

voit muokata job-tiedostoja yhdistelmällä /JOB, /SAVE ja /QUIT.

esimerkiksi haluat ehkä sulkea kaikki EXE-tiedostot pois Robocopy-työstäsi, joka on tallennettu backupfiles-nimiseen työtiedostoon.rcj. Olet jo luonut työtiedoston etkä halua korvata koko juttua. Voit lisätä uuden vaihtoehdon kuten alla:

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

käyttämällä useita Job-tiedostoja

voit jopa yhdistää job-tiedostojen käytön. Kun määrität useita työtiedostoja samalla ajolla, kaikki kyseisessä ajossa käytetyt vaihtoehdot yhdistetään.

esimerkiksi, ehkä sinulla on suuri luettelo tiedostoista, jotka voit sulkea pois backupfiles-kopiointityöstäsi. Avaa tekstieditori ja lisää seuraava luoden poissulkemisen.rcj-tiedosto.

/XF a.exe b.txt c.cer

voit sitten sulkea nämä tiedostot pois backupfiles-työstä näin:

> robocopy /JOB:backupfiles /JOB:exclude

koska alkuperäinen backupfiles-työtiedosto oli jo poissuljettu kaikista EXE-tiedostoista, ylläolevan ajon syntaksi näyttäisi olevan /XF *.exe a.exe b.txt c.cer. Robocopy yhdistää kaikki vaihtoehdot yhdeksi.

Robocopy-mallit ja käyttämällä /NOSD-ja /NODD-asetuksia

jos käytät paljon job-tiedostoja, voit rakentaa job-tiedostoja hyväksyäksesi parametrit. Robocopyn avulla voit siirtää arvoja komentoriviltä työpaikoille, kun niitä suoritetaan. Parametri ei ole robocopy termi, mutta se sopii hyvin tähän skenaarioon.

voit luoda Robocopy-työt parametrien hyväksymiseksi jättämällä määrittelemättä lähde-tai kohdehakemiston joko eksplisiittisesti käyttämällä /NOSD ja /NODD – asetuksia tai yksinkertaisesti sisällyttämättä lähde-ja kohdehakemistoa lainkaan.

jos haluat yksinkertaisen esimerkin, luo työtiedosto ilman lähdettä tai kohdetta alla olevan syntaksin avulla. Tämän työn tarkoituksena on kopioida kaikki TXT-ja EXE-tiedostot lähteestä kohdehakemistoon.

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

yksinään tämä työ ei koskaan toimi, koska lähde-tai kohdehakemistoa ei ole määritelty.

kun luot työn ilman lähde-ja kohdehakemistoa, työtiedosto luodaan automaattisesti käyttämällä valitsimia /NOSD ja /NODD.

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

/NOSD valitsimet kertovat robocopylle, että et sisällyttänyt lähdehakemistoa, kun taas /NODD osoittaa, ettet sisällyttänyt kohdehakemistoa. Tämä työtiedosto on muiden töiden” mallipohja”.

, mutta voit antaa” parametrit ” tähän työtiedostoon lähde-ja kohdehakemistojen tarjoamiseksi.

voit käyttää juuri luotua työtiedostoa tiedostojen kopioimiseen C:\src C: hen:\dst, voit siirtää nämä hakemistot suoraan komentoriviltä, joka sitten siirretään työhön.

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

asynkroninen kopiointi (Robocopy /MT)

oletuksena robocopy käsittelee vain yhden tiedoston kerrallaan. Voit kuitenkin pakottaa robocopyn kopioimaan enemmän tiedostoja kuin kerralla käyttämällä valitsinta /MT.

valitsimella /MT voit määrittää, kuinka monta säiettä Robocopy käyttää tiedostojen kopioimiseen. Maksimi on 128.

voit käyttää /MT näin:

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

olen valinnut 32 tässä tapauksessa lähtötasoksi. Ehdotan alkaa 32 nähdä, miten tietokoneen ja verkon käsitellä asioita ja säätää kierteet vastaavasti.

huomaa, että jos käytät /MT, et voi käyttää /IPG tai /EFSRAW. Paremman suorituskyvyn, älä tulostaa loki konsoliin. Käytä sen sijaan /LOG.

Robocopyn aikataulutus

Robocopyssa on muutamia tapoja ajoittaa, kun se toimii.

käytettäessä / Rh

käyttämällä /RH – valintaa voit määrätä robocopyn toimimaan vain tietyn ajan. Tämä on hienoa, jos on huoltoikkuna tai aika, jolloin kaikki ovat lähteneet kotiin päiväksi.

voit määrittää alkamisajan ja päättymisajan muodossa hhmm-HHMM. Jos haluat esimerkiksi vedota robocopyyn, mutta antaa sen toimia vain järjestelmän kellon määrittelemien tuntien 5PM ja 9AM välillä, suorita:

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

näet, että jos vedät Robocopy ulkopuolella noiden tuntien, se kertoo sinulle nykyisen kellonajan ja odottaa alkamisaikaa ajaa.

Robocopy kertoo, mihin aikaan se alkaa, jos se on ajoitettu
Robocopy kertoo, mihin aikaan se alkaa, jos se on ajoitettu

sinun täytyy varmistaa, että molemmat ajat ovat 24 tunnin muodossa ja ovat täsmälleen neljä numeroa pitkä. Ikkunan on oltava suurempi kuin kaksi minuuttia.

oletusarvoisesti käyttämällä /RH tarkistetaan alkamisaika ennen koko suoritusta. Kuitenkin, jos sinulla on paljon tiedostoja ja uskot prosessi voi mennä kauemmin, voit käyttää /PF vaihtoehto. /PF pakottaa robocopyn tarkistamaan ikkunan ennen jokaista tiedostoa.

Tehtävien ajoituksen avulla

Tulostusloki

Robocopy palauttaa aina tulostuslokin. Voit itse päättää, näytetäänkö kyseinen loki konsolissa stdoutin kautta ja/tai ohjataanko se lokitiedostoon.

sinulla on paljon vaihtoehtoja Robocopy-tulosteen näyttämisessä.

Kytkin selitys oletuskäyttäytyminen vastaava Kytkin huomautuksia
/NP ei edistystä. Estää edistymistietojen näyttämisen. Tästä voi olla hyötyä, kun tuloste ohjataan tiedostoon.
/unicode Näytä tilalähtö unicode-tekstinä
/loki: tiedosto Tulostustila lokitiedostoon ja ylikirjoitukseen
/UNILOG: tiedosto Tulostustila unicode – lokitiedostoon ja korvaa
/LOG+:tiedosto tulosteen tila lokitiedostoon ja lisää olemassa olevaan lokitiedostoon
/UNILOG+: tiedosto Tulostustila unicode-lokitiedostoon ja lisää olemassa olevaan lokitiedostoon
/TS näyttää jokaisen käsiteltävän tiedoston aikaleimat.
/FP korvaa tulosteessa yksinkertaiset tiedostonimet täydellisillä tiedostopolkunimillä.
/NS ei näytä tiedostokokoja.
/NC piilottaa tulosteen tiedostoluokkaan ”Text Tags” (Lue lisää täältä: https://www.uvm.edu/~gcd/2015/04/robocopy-file-classes/)
/NFL kätkee tiedostonimet. Epäonnistumiset ovat silti kirjattuja. Kaikki tiedostot tiedostot poistetaan tai poistettaisiin, jos / L jätettiin pois ovat aina kirjautuneet
/NDL piilottaa hakemistoluettelon tuotoksen. Koko tiedoston polkunimet ovat lähtö helpommin jäljittää ongelmallisia tiedostoja.
/TEE tuloste konsoli-ikkunaan sekä lokitiedosto
/NJH ei työn otsikkoa
/NJS ei työn yhteenvetoa
/tavua tulostuskoot tavuina
/X Ilmoita kaikki tiedostot, ei vain valitut & kopioitu
/V luo monisanainen tulostusloki, joka näyttää ohitettavat tiedostot
/ETA Näytä kopioitujen tiedostojen arvioitu saapumisaika. Katso kunkin tiedoston kopioinnin alkamisaika ja arvioitu valmistumisaika, joka perustuu aiempien kopioiden havaittuun läpimenoon. Kellonajat näytetään tiedostonimen jälkeen muodossa HH: MM – > HH: MM (alku – > viimeistely).
/vianetsintä Näytä vianetsinnän taltiotiedot

rajoittamalla Lokielementtejä / NJS ja / NJH

oletusarvoisesti robocopy palauttaa tulosteeseen kaksi elementtiä, työn otsikon ja työn yhteenvedon.

työn otsikko on yksinkertainen Robocopy-otsikko yläosassa.

Robocopy job header
Robocopy job header

työn yhteenveto näyttää kaikkien tiedostojen/kansioiden yhteenvedon tilan, kuinka paljon dataa siirrettiin ja ajan päättymisajan.

Robocopy job summary
Robocopy job summary

voit piilottaa jokaisen näistä elementeistä käyttämällä /NJH – asetusta työn otsikon piilottamiseen ja /NJS – asetusta työn yhteenvedon piilottamiseen. Voit sisällyttää joko näistä vaihtoehdoista tai molemmat yhdessä.

työn otsikon ja työn yhteenvedon piilottaminen
työn otsikon ja työn yhteenvedon piilottaminen

jos haluat tallentaa tulostuslokin, voit ohjata sen tekstitiedostoon ja/tai näyttää sen konsolissa. Voit tehdä sen käyttämällä perinteisiä tuotoksen uudelleenohjaajia, kuten >, >>, PowerShell tai /LOG – vaihtoehto.

jos haluat ohjata tulostuslokin tiedostoon käyttämällä /LOG – vaihtoehtoa olemassa olevan lokitiedoston korvaamiseksi, käytä syntaksia /LOG:<filepath> kuten alla. Ainoa tuloste, jonka saat konsolille, on polku lokitiedostoon.

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

jos haluat säilyttää olemassa olevan lokitiedoston sisällön ja liittää tulokset tiedostoon, voit käyttää + – operaattoria alla olevalla tavalla.

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

Tulostuslokin uudelleenohjaaminen tiedostoon ja näyttäminen konsolissa

jos haluat tallentaa tulostuslokin tiedostoon mutta nähdä sen myös konsolissa, voit käyttää /TEE – vaihtoehtoa. Tämä asetus saa robocopyn kirjoittamaan tulosteen lokitiedostoon säilyttäen silti tulosteen palautuksen oletuskäyttäytymisen konsoliin.

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

Poistumiskoodit

kuten kaikki muutkin komentorivin apuohjelmat, robocopy palauttaa poistumiskoodit suorituksen tuloksista riippuen. Me kaikki toivomme, että robocopy poistuisi aina onnistuneesti 0: llä, mutta niin ei aina tapahdu.

alta löydät kaikki robocopyn palauttamat poistumiskoodit ja niiden selityksen. Jos poistumiskoodi on suurempi kuin seitsemän, se tarkoittaa vähintään yhtä epäonnistumista suorituksen aikana.

Poistumiskoodi selitys
0 ei toimenpiteitä. Lähde ja kohde synkronoidaan.
1 ainakin yksi tiedosto kopioitiin onnistuneesti.
2 ylimääräisiä tiedostoja tai kansioita havaittiin. Tutki loki.
3 Poistumiskoodit 2 ja 1 yhdistetty.
4 ristiriitaiset tiedostot tai hakemistot löydetty. Tutki loki.
5 Poistumiskoodit 4 ja 1 yhdistetty.
6 Poistumiskoodit 4 ja 2 yhdistetty.
7 Poistumiskoodit 4, 1 ja 2 yhteensä.
8 ainakin yhtä tiedostoa tai hakemistoa ei voitu kopioida. Uusintaraja ylitetty. Tutki loki.
16 kopio epäonnistui katastrofaalisesti.

huomaa, että jos suoritat robocopy kolmannen osapuolen apuohjelma, että apuohjelma voi ajatella mitään ei-nolla exit koodi on vika. Tämän estämiseksi voit muuttaa poistumiskoodin arvoon 0, jos se palauttaa arvon 1.

Robocopyn ”extra” – tiedoston poistumiskoodi on yleinen palautuskoodi eli ”extra” – tiedosto on kohdekansiossa, mutta ei lähdekansiossa. Tämä koodi ei sisällä ekstroja, jotka estävät poistot määräpaikasta.

Exit Code in a Batch File

jos suoritat robocopya erätiedostolla, voit löytää %ERRORLEVEL% muuttujan arvon. Jos se palauttaa 1, Käytä exit – avainsanaa poistuaksesi skriptistä 0: lla.

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

Exit-koodin muuttaminen PowerShell-skriptissä

jos suoritat robocopya PowerShell-skriptissä, voit kutsua robocopyn Start-Process avulla PassThru palauttaaksesi luodun prosessin ja Wait odottaaksesi robocopyn valmistumista. Tämän jälkeen voit tarkistaa ExitCode ominaisuuden arvoksi 1. Jos lopetuskoodi on 1, poistu PowerShell-skriptistä numerolla 0 käyttäen $host.SetShouldExit().

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

yleiset virheet

jos olet tekemisissä tuhansien tiedostojen kanssa, törmäät väistämättä joihinkin ongelmiin. Tässä on jaottelu yleisiä virheitä olen törmännyt

virhe Virheellinen parametri

kun näet virheen, jossa virhe Virheellinen parametri, tämä yleensä tarkoittaa, että olet yrittänyt siirtää vaihtoehtoja Robocopy out of sequence jotenkin. Robocopy virheellinen parametri 3 virhe on yleisin, näyttää siltä.

yleinen syy tämän virheen saamiselle on, kun määrittää lähde-tai kohdehakemiston välilyönteineen ja unohtaa ympäröidä sen lainausmerkeillä.

Robocopy Examples

Robocopysta voi rakentaa omia jousia tai sitten voi ottaa mitä muut ovat oppineet ja käyttää niitä! Tässä osiossa, minä kattaa käyttötapauksia siitä, miten käyttää robocopy saavuttaa erilaisia asioita.

Etsi verkkokansion kansiokoko

tekijä: northendtroooper (Reddit)

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

Poista kansion sisältö nopeasti (alikansioiden käyttöoikeuksien sivuuttaminen)

avustaja: pizzasteveo (Reddit)

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

suurten tiedostojen siirtojen suorittaminen

Contributor: @MySnozzberries (Twitter)

tämän pätkän tavoitteena on pakottaa kaikkien tiedostojen omistus Takaisin ylläpitäjille. Tämän jälkeen lisäämme Järjestelmänvalvojat-ryhmään eksplisiittisen ässän, jolla voit hallita jokaista objektia rekursiivisesti, vaikka asetamme myös periytymisen.

lopuksi tehdään täysi robocopy-kopio Dacl: llä kohteeseen lokilla. Loki voidaan sitten tarkistaa muita käyttöoikeusongelmia tai vain tiedostojen lukitus ja toinen Delta sync voidaan suorittaa myöhemmin.

> 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

pakota rekursiivisesti järjestelmänvalvojat-ryhmä kaikkien tiedostojen ja hakemistojen omistajaksi. On olemassa tapoja kiertää tämä, mutta tämä on kaikkein raskain lähestymistapa ja yleensä nopein.

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

kun olemme omistaja, voimme nyt pakottaa uuden ässän DACL: ään jokaiselle esineelle. Tämä antaa järjestelmänvalvojille täyden kontrollin, kun perintö on käytössä ja rekursiivisesti polun läpi.

tämän asettaminen juureen perinnöllä kattaisi ympäristön, mutta kun osakkeella on luoja-omistaja, jolla on täysi kontrolli (mikä valitettavasti on jopa Microsoftin suositus asioista, kuten tiedostojen käyttäjäprofiilivarastoista), käyttäjä voi poistaa perinnön tai poistaa Ässät harkintansa mukaan. Raskas käsi on siis yleensä nopein korjaus.

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

kun olemme muuttaneet Dacl: ää suurimmassa osassa tiedostoista, yritämme kopioida tiedostot uuteen paikkaan, mikä on yleistä esimerkiksi tiedostojenjaon migraatioille. Tätä varten kopioimme kohteet rekursiivisesti ja käytämme /SEC – kytkintä kopioidaksemme myös tiedot/attribuutit/aikaleimat / DACLs.

sitten kirjaamme toiminnon täysien polkujen ja kaikkien objektien (/V monisanainen kytkin)osalta lokiin, jotta voimme korjata <5% virheistä, jotka ovat yleisesti polun pituuteen tai tiedostolukkoon liittyviä ja saada rakeisempia.

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

tämä on yksinkertainen kehys tiedostonjako-migraation hallitsemiseksi mahdollisimman vähäisellä vaikutuksella käyttäjäkokemukseen. Se myös parantaa kontrollia, joka sillä on tietoihin. Jos asiakkaalla on vahva tiedonhallintakäytäntö, jossa omistajuutta hallitaan oikein lapsikansiotasolla, tästä tulee monimutkaisempi keskustelu, mutta useimmat asiakkaat, joita löydämme, ovat onnekkaita, että käyttävät vain perintö-ja ryhmäpohjaisia Ässiä, joten tämä on yleisin tilanne ja korjaus, josta aloitamme.

Robocopy Alternatives

Robocopy on mahtava työkalu, mutta on olemassa niin monia muita sen kaltaisia työkaluja, jotka saattavat kiinnostaa.

  • xxcopy-samanlainen komentorivityökalu, jossa on tonneittain vaihtoehtoja.
  • Copy-Item PowerShell cmdlet – ei läheskään yhtä monipuolinen, mutta paljon yksinkertaisempi.
  • TreeSize – GUI ja skriptattava apuohjelma kansiotietojen etsimiseen.

Yhteenveto

Robocopy on erinomainen työkalu suurten tiedostosarjojen kopioimiseen. Olitpa tekemässä tiedonsiirtoa, pitämällä kansioita synkronoituna tai yksinkertaisesti täytyy nopea tapa tarkasti kopioida tiedostoja, robocopy on loistava valinta.

Vastaa

Sähköpostiosoitettasi ei julkaista.