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.
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.
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.
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.
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.
työn yhteenveto näyttää kaikkien tiedostojen/kansioiden yhteenvedon tilan, kuinka paljon dataa siirrettiin ja ajan päättymisajan.
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ä.
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.