Adam Automator

Robocopy je jedním z nejpoužívanějších nástrojů příkazového řádku pro kopírování velkých objemů dat v systému Windows. Je to tak populární nástroj, protože jak silný je. Ale se vší silou přichází složitost. V této příručce rozebereme veškerou složitost a poskytneme kompletní návod k použití tohoto užitečného nástroje.

Robocopy je nástroj příkazového řádku systému Windows, který je k dispozici od Windows NT. Je to náhrada za méně univerzální nástroj xcopy. Umožňuje určit cestu jednotky nebo cestu serveru pro kopírování / přesun souborů na příkazovém řádku.

verze Robocopy od tohoto psaní je až 10.0.18. Toto je verze, na které jsem provedl testování.

Robocopy poskytuje spoustu funkcí, které můžete využít k provádění efektivních a rychlých kopií a přesunů souborů. To může:

  • kopírovat soubory přes síť s možností obnovení
  • může přeskočit spojovací body NTFS způsobující selhání obvykle z nekonečných smyček
  • může kopírovat atributy souborů a adresářů zachovávající časová razítka
  • může kopírovat oprávnění NTFS, vlastníky a informace o auditu
  • může kopírovat časová razítka adresáře
  • může kopírovat soubory v režimu „zálohování“, aby se zajistilo kopírování souborů i tato práva byla administrátorovi odepřena
  • automatické opakování
  • může synchronizovat dvě složky
  • je dostatečně chytrý, aby přeskočil soubory již Zkopírované
  • může kopírovat cesty větší než limit 256 znaků
  • provádět asynchronní kopie pomocí své schopnosti multithreading.
  • vrací standardizované výstupní kódy pro použití ve skriptech

jak můžete vidět, je tu hodně kopírovat. Chtěl jsem pokrýt vše, co potřebujete vědět o tomto praktickém nástroji.

obsah

společný odkaz na syntaxi Robocopy

proč takový dlouhý blogový příspěvek na jediném nástroji? Jen si dejte pozor na níže uvedené tabulky. Máte spoustu možností kopírovat nebo přesouvat soubory s robocopy! Budete více možností v jednotlivých sekcích.

tyto tabulky byly vytvořeny ze syntaxe nápovědy vrácené z robocopy /?. Byly rozděleny do smysluplnějších sekcí, přidány v průběhu času a vyčištěny, aby poskytly užitečnější informace.

možnosti zdroje

přepínač vysvětlení výchozí chování ekvivalentní přepínač poznámky
/s kopírovat podsložky
/E kopírovat podsložky včetně prázdných podsložek
/COPY: Možnosti kopírování / COPY: DAT D=Data,a = atributy, T=časová razítka S=Security=NTFS ACLs, O=informace o vlastníkovi, U=informace o auditu. Data souboru (D) vždy obsahují časová razítka souboru (T)
/SEC kopírování souborů s bezpečností /kopie: DATS
/DCOPY: t kopírovat časová razítka adresáře
/COPYALL kopírovat všechny informace o souboru /kopie: DATSOU tím se zabrání dehydrataci souborů offline a místo toho se zkopíruje značka souboru (alespoň v systémech emc VNX/Unity). To není oficiálně zdokumentováno! Pokud dehydratace je to, co potřebujete (důvod, proč jsem našel tento problém), nemůžete kopírovat ACL podél souborů. Kredit: Monsieurx (Reddit)
/NOCOPY kopírovat žádné informace o souboru užitečné s / očistit
/a kopírovat pouze soubory se sadou atributů archiv
/M like / a, ale odstranit atribut archivu ze zdrojových souborů
/LEV:n zkopírujte pouze horní N úrovně zdrojového stromu
/MAXAGE: n maximální věk souboru-vyloučit soubory starší než n dny / Datum
/MINAGE: n minimální věk souboru-vyloučit soubory novější než n dny / Datum pokud n < 1900 pak n = počet dní, jinak n = RRRRMMDD Datum
/FFT Předpokládejme časy souborů FAT 2-druhé datum / čas zrnitost. Tím se nahradí časová razítka NTFS. Zdá se, že je spolehlivější při přenosu přes síť.
/256 vypněte velmi dlouhou cestu (> 256 znaků) podpora

Možnosti cíle

přepínač vysvětlení výchozí chování ekvivalentní přepínač poznámky
/A+: nastavení atributů souborů v cílových souborech + přidat
/v-: Odebrat atributy souborů v cílových souborech
/FAT Vytvořte cílové soubory pomocí 8.3 pouze názvy souborů FAT
/vytvořit vytvořit adresářovou stromovou strukturu + pouze soubory s nulovou délkou
/DST kompenzujte hodinové DST časové rozdíly

Možnosti kopírování

přepínač vysvětlení výchozí chování ekvivalentní přepínač poznámky
/L seznam souborů pouze nekopírujte, časové razítko ani neodstraňujte žádné soubory
/MOV přesunout soubory odstranit ze zdroje po kopírování
/přesunout přesunout soubory a adresáře odstranit ze zdroje po kopírování
/sl zkopírujte symbolické odkazy souboru místo cíle
/z kopírování souborů v restartovatelném režimu přežít síť závada
/B kopírování souborů v režimu zálohování
/J kopírovat pomocí unbuffered I / O doporučeno pro velké soubory
/Nooffload kopírování souborů bez použití mechanismu stahování kopií systému Windows https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=ws.11)
/EFSRAW zkopírujte všechny šifrované soubory pomocí režimu EFS RAW
/TIMFIX opravte časy souborů na všech souborech, dokonce i přeskočené soubory
/XO vyloučit starší pokud cílový soubor existuje a má stejné datum nebo novější než zdroj-neobtěžujte se jej přepsat.
/XC vyloučit změněné soubory
/XN vyloučit novější soubory
/XX vyloučit soubory přítomné v cíli, ale ne zdroj / XX
/XF soubor … vyloučit soubory odpovídající daným jménům / cestám/zástupným znakům
/XD dirs … vyloučit adresáře odpovídající daným jménům / cestám. /XF a / XD lze použít v kombinaci např. c:\source d:\dest /XF *.doc *.xls /XD c:\unwanted /S
/IA: zahrnout soubory s některým z daných atributů
/XA: vyloučit soubory s některým z daných atributů
/IM přepsat upravené soubory. To zahrnuje stejné soubory s různými časy.
/je přepsat soubory, i když jsou již stejné
/to obsahovat vylepšené soubory
/XJ vyloučit spojovací body ze zdroje / XJ
/XJD vyloučit spojovací body ze zdrojových adresářů
/XJF vyloučit spojovací body z zdrojové soubory
/MAX: n vyloučit soubory větší než n bajtů
/MIN: n vyloučit soubory menší než n bajtů
/MAXLAD: n vyloučit soubory nepoužívané od n
/MINLAD:n vyloučit soubory používané od n pokud n < 1900 pak n = n dny, jinak n = RRRRMMDD Datum
/MIR zrcadlit Strom adresářů /očista / E
/vymazat odstranit dest soubory/složky, které již ve zdroji neexistují
/XL vyloučit soubory přítomné ve zdroji, ale nikoli v cíli
/SECFIX Robocopy / secfix opravuje soubor zabezpečení všech souborů, dokonce i přeskočených souborů. zadejte typ bezpečnostních informací, které chcete zkopírovat, také pomocí jedné z těchto možností: / COPYALL / COPY: O / COPY: S / COPY: U / SEC
/ZB použijte režim restartu; pokud je Přístup odepřen, použijte režim zálohování

možnosti monitorování

přepínač vysvětlení výchozí chování ekvivalentní přepínač poznámky
/v:n počet opakování na neúspěšných kopiích / R:1000000 vždy se pokuste tuto možnost nastavit. Doporučuji nastavit to na 10-20, abyste neztráceli čas opakováním.
/W: n čekací doba mezi pokusy / W:30 vždy se pokuste nastavit tuto možnost na nižší číslo, abyste to zkusili rychleji. Navrhuji 5-10.
/REG Uložit /R: n A / W: n v registru systému Windows jako výchozí nastavení
/RH:hhmm-hhmm časy, kdy lze spustit nové kopie
/TBD počkejte na definování sdílených jmen opakovat chybu 67
/PF Zkontrolujte provozní hodiny podle souboru (nikoli podle průchodu)
/po: n spustit znovu, když je vidět více než n změn
/MOT:m spusťte znovu v m minutách, pokud se změní

pochopení chování Robocopy

nyní jsem úplně vyhodil vaši mysl se všemi možnými možnostmi syntaxe, které máte k dispozici. Podívejme se nyní na všechny různé kombinace toho, jak můžeme použít tuto syntaxi.

mohl bych vám poskytnout nesmírně dlouhý seznam příkazů robocopy se stále rostoucím počtem přepínačů. Ale myslím, že je lepší tě naučit rybařit. Pojďme si projít, jak dát smysl ze všech těchto možností.

Robocopy pouze kopíruje celé adresáře

každé provedení robocopy bude mít zdrojový a cílový adresář. Robocopy kopíruje a přesouvá soubory podle celého adresáře. Není možné explicitně zkopírovat jeden soubor s robocopy. K tomu použijte copy nebo PowerShell Copy-Item.

můžete však robocopy jeden soubor se správným filtrováním, o kterém se dozvíte níže. Chcete-li robocopy jeden soubor souboru, zadejte zdrojové a cílové adresáře bezprostředně následované názvem souboru ve zdroji.

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

syntaxe závisí na prostředí

také možnosti, které robocopy poskytnete, budou záviset na prostředí. Při pokusu zjistit, které možnosti použít, budete muset odpovědět na několik otázek.

  • budete vždy kopírovat do prázdného adresáře?
  • je možné, že soubory již existují v cílovém adresáři?
  • budete kopírovat terabajty dat nebo jen několik megabajtů?
  • budete kopírovat soubory přes síť nebo lokálně?
  • … a další.

pokud v adresáři cílových souborů nejsou žádné soubory, neměli byste se starat o možnosti, které přepisují soubory. Pokud nebudete kopírovat soubory v síti, nedělejte si starosti s těmito možnostmi. Explicitně definujte své současné a potenciální budoucí okolnosti, ve kterých bude vaše prostředí.

rozpoznat výchozí volby

Robocopy používá ve výchozím nastavení mnoho možností. Můžete si je vybrat při pohledu na výše uvedené tabulky. Poskytuje také praktický výstup při každém spuštění nástroje.

níže vidíte, že když jsem spustil robocopy s nejzákladnějšími možnostmi (zdrojová a cílová složka), automaticky použil některé možnosti. Pochopení výchozího chování je důležité.

odkazujte na možnosti, které vidíte na výstupu, s výše uvedenými vysvětleními možností a přesně pochopíte, co robocopy dělá pod kryty.

výchozí možnosti robocopy
výchozí možnosti robocopy

pochopení toho, co Robocopy příkazy mohou dělat

pokud jste použili copy nebo PowerShell je Copy-Item rutiny, pravděpodobně jste zadali zdroj a cíl a pokračoval o svůj den. Není tam mnoho možností, které můžete nakonfigurovat. Tyto příkazy robocopy mají výchozí chování.

ale robocopy, na druhé straně, chápe mnohem více a dává vám flexibilitu vyladit chování tolik, kolik chcete.

je důležité vědět, že robocopy si není vědom pouze konceptu souboru nebo adresáře. Souborový systém má mnohem víc a robocopy podporuje téměř všechno.

soubor sedící na souborovém systému není jen hloupý objekt s jediným účelem. Existuje mnoho různých atributů a věcí, které jdou s konceptem souboru. Například soubor má atributy jako:

  • časové razítko (zapsané, upravené a přístupné)
  • NTFS ACL
  • vlastník
  • informace o auditu NTFS
  • skrytý příznak
  • archivovaný příznak

když zkopírujete nebo přesunete soubor, máte možnost přinést všechny tyto věci spolu s ním, pokud chcete.

pochopte, že když spustíte robocopy, nekopírujete pouze soubor, ale také potenciálně kopírujete všechny ostatní informace s ním. Je důležité si to uvědomit a zohlednit to v možnostech, které poskytujete robocopy.

Základy: Provedení scénářů WhatIf

pokud máte někde obrovský souborový server, který chcete migrovat a nechcete ještě podniknout žádné kroky, můžete pomocí robocopy vrátit to, co by udělal.

pomocí volby /L můžete říct robocopy, aby vyjmenoval všechny soubory a/nebo složky, které zadáte, a vrátil seznam souborů, které by zkopíroval / přesunul.

volbu /L můžete použít s jakoukoli jinou možností. To je skvělý způsob, jak vrátit všechny možnosti, které by robocopy použil (výchozí nebo ne). To vám poskytne celkový pohled na to, co robocopy udělá vzhledem k možnostem, které jste mu poskytli.

použití / L
použití /L

základy: kopírování souborů

nejzákladnějším použitím robocopy je použití zdrojového a cílového adresáře bez možností.

> robocopy C:\src C:\dst

tato volba zkopíruje všechny soubory (kromě podsložek) z C:\src k C:\dst.

můžete také zkopírovat vše, včetně podsložek (prázdné nebo ne) a oprávnění NTFS. To je, z toho, co mohu říct, metoda doslova zkopírovat vše, co je o adresáři souborů do jiného adresáře.

níže kopíruji všechny ACL NTFS, vlastníky souborů, podsložky (včetně prázdných) a všechny atributy souborů. To vše je možné pouze pomocí možnosti /E zahrnout všechny prázdné podsložky a /COPYALL zachytit zbytek.

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

základy: přesouvání souborů

přesouvání souborů přenáší soubory z jednoho adresáře do druhého, stejně jako kopírování. Jediným rozdílem s operací přesunu je to, že zdrojové soubory jsou po kopii odstraněny.

Chcete-li odstranit soubory/adresáře ze zdroje po kopírování, použijte volbu /MOV. Tím se odstraní všechny soubory v zadaném adresáři (žádné podsložky).

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

můžete také použít /MOVE přesunout všechny soubory a podsložky.

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

základy: synchronizace souborů

Robocopy umožňuje synchronizovat dva adresáře. To znamená buď zajistit, aby všechny soubory v cílovém adresáři byly ve zdrojovém adresáři a ne více. /MIR replikuje data kopírující všechny soubory ve zdroji, které nejsou v cíli, a odstraní soubory v cíli, které nejsou ve zdroji. Pozor!

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

kopírování souborů v síti

pokud kopírujete soubory v síti, měli byste zvážit několik možností.

Robocopy umožňuje kopírovat soubory v „restartovatelném režimu“ pomocí volby /Z. To znamená, že pokud soubor začne kopírovat a selže uprostřed, kopie může začít znovu místo úplného selhání. Volba /Z je užitečná, když se stream přeruší přes síť.

varování: někteří hlásili použití /Z snižuje výkon o 1/4. Dejte mi vědět vaše zjištění.

můžete také použít volbu /FFT. Je známo, že tento přepínač přesněji zachovává časová razítka souborů při přenosu přes síť. Tato volba používá časová razítka systému souborů FAT namísto NTFS.

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

použití /IPG pro řízení mezery mezi pakety

při kopírování souborů přes síť můžete použít přepínač /IPG. Toto je také známé jako možnost mezery mezi pakety. Tato volba definuje (v milisekundách) frekvenci, ve které bude robocopy čekat mezi odesláním nových paketů.

vždy používejte cesty UNC, které nejsou písmena jednotky

čtenář na Redditu objevil tvrdý způsob, jak nepoužívat mapované jednotky jako cílový adresář. Místo toho vždy použijte vždy použijte cestu UNC. Pokud tak učiníte, můžete narazit na problémy s limitem 256 znaků. Podívejte se na tento dokument společnosti Microsoft pro více informací.

Robocopy Backup Mode (Robocopy /z)

Robocopy má možnost (/B) nebo jako zálohu do restartovatelného režimu (/ZB), která kopíruje soubory v režimu zálohování. Co je vlastně „režim zálohování“?

když obvykle zkopírujete soubor v systému Windows a stisknete soubor, který vyžaduje oprávnění správce pro přístup, zobrazí se chyba označující, že nemáte oprávnění. I když můžete být spuštěni jako místní správce, systém Windows vám k němu nedovolí přístup.

varování: při kopírování dat na server Windows Server 2016 se zapnutou de-duplikací byly hlášeny poškozené svazky serveru. Když použijete přepínač /ZB, výsledkem bude dedup chunk store, který je zničen v informacích o svazku systému. Zkopírované soubory nebudou čitelné a při pokusu o manipulaci s nimi budou generovat chyby. Serverfault odkaz s více informacemi.

režim zálohování je způsob, jak přistupovat k souborům bez obav o oprávnění.

Robocopy používá režim zálohování k použití SeBackupPrivilege pro čtení souborů a práva uživatele SeRestorePrivilege pro přístup ke všem souborům, které potřebuje. To ignoruje všechna esa, která by vám normálně bránila v přístupu k těmto souborům.

uživatelská práva SeBackupPrivilege a SeRestorePrivilege jsou obvykle přiřazena uživatelům ve skupinách operátorů zálohování a správců, ale někdy mohou být odstraněna. Zálohovací modul toto riziko eliminuje a dočasně uděluje uživateli provádějícímu robocopy tato práva.

pokud chcete zkontrolovat, zda má váš uživatelský účet toto právo, můžete spustit whoami /priv a měla by se zobrazit obě práva.

filtrování souborů a složek

velká většina dostupných možností je vyloučit soubory a adresáře mnoha různými způsoby. Rozdělil jsem všechny způsoby, jak můžete filtrovat nebo vyloučit soubory a adresáře na základě různých kritérií.

podle názvu souboru nebo přípony souboru

filtrování souborů, které se zkopírují / přesunou v volání robocopy, se provádí pomocí zástupných znaků. Zástupný znak můžete použít k filtrování souborů odpovídajících konkrétnímu řetězci nebo příponě názvu souboru.

Chcete-li například kopírovat pouze soubory TXT, můžete zadat *.txt.

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

pokud chcete omezit pouze soubory začínající na a, můžete použít*.

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

Y0u může také poskytnout více sad shody názvů souborů tím, že je oddělí mezerou, jak je uvedeno níže.

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

když filtrujete podle názvu souboru, robocopy vám ukáže filtr ve výstupu.

filtrování souborů výstup
filtrování souborů výstup

podle názvu adresáře

Robocopy umožňuje filtrovat položky nejen podle souboru, ale také podle názvu adresáře. Pomocí robocopy /xd můžete vyloučit určité adresáře odpovídající určitému názvu.

při kopírování více složek použijte přepínač /XD k vyloučení složek ze běhu.

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

Podle souboru / adresáře Timestamp

níže najdete všechny možnosti robocopy, které vyloučí soubory a složky na základě různých atributů časového razítka.

přepínač vysvětlení
/DCOPY: t kopírovat časová razítka adresáře
/MAXAGE: n vyloučit soubory starší než n dny / Datum
/mináž:n vyloučit soubory novější než n dny / Datum
/XO pokud cílový soubor existuje a má stejné datum nebo novější než zdroj, nepřepisujte
/XN pokud cílový soubor existuje a je stejný nebo starší než zdroj, nepřepisujte

existují dvě oblíbené možnosti, které si můžete vybrat při filtrování věcí, jako je časové razítko; /XO a /MAXAGE.

/XO umožňuje vyloučit soubory z kopie, pouze pokud jsou novější než zdroj. Pomocí volby /XO můžete robocopy pouze nové soubory podle data přístupu.

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

pokud víte, že maximální věkové soubory budou, můžete také použít volbu /MAXAGE. To vám umožní určit ve formátu YYYMMDD starší datum, které může mít soubor před zkopírováním.

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

Robocopy Jobs

viděli jste, že máte k dispozici desítky možností. Je snadné, aby se tyto možnosti brzy staly těžkými. Naštěstí máte lepší možnost, než si zapamatovat a zajistit, aby všechny tyto možnosti byly pokaždé na místě.

Robocopy job files jsou textové soubory obsahující jednu možnost na řádek. K vytvoření těchto souborů úloh budete obvykle používat robocopy. Po vytvoření můžete použít robocopy k jejich úpravě nebo jednoduchý textový editor.

máte různé příkazy robocopy, které pracují s úlohami.

přepínač vysvětlení výchozí chování ekvivalentní přepínač poznámky
/JOB: jobname vezměte parametry z pojmenovaného souboru úlohy
/uložit:jobname Uložte parametry do pojmenovaného souboru úlohy
/ukončit ukončit po zpracování příkazového řádku užitečné pro prohlížení parametrů
/NOSD není zadán žádný zdrojový adresář
/NODD není zadán cílový adresář
/pokud obsahují následující soubory

typický soubor úloh vytvořený pomocí robocopy má příponu RCJ a vypadá jako níže uvedený úryvek. Tento soubor úloh byl vytvořen spuštěním robocopy C:\src D:\dst /save:myjob. Můžete vidět, že můžete poskytnout komentáře v souboru úlohy pomocí ::, což je většina toho, co tento soubor má.

bez komentářů by soubor obsahoval pouze jednu možnost na řádek.

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

uložení souborů úlohy

uložení souboru úlohy je stejně jednoduché jako přidání možnosti /SAVE:<jobname> na konec syntaxe. Nahraďte <jobname> názvem úlohy. Volba /SAVE vytvoří soubor s názvem <jobname>.RCJ v adresáři, kde jste spustili robocopy.

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

jako poslední možnost musíte zadat /SAVE. Všechny volby zadané po /SAVE nebudou přidány do souboru úlohy. Všimněte si také, že i když již existující soubor úlohy existuje, robocopy vždy přepíše existující soubor. Zálohování nebo verze ovládat své pracovní soubory!

Poznámka: Pokud se pokusíte použít volbu /MT při ukládání do souboru úlohy, nebude v souboru úlohy. Dejte mi vědět, pokud se vám to podařilo zahrnout.

použití souborů úloh

jakmile je úloha uložena do souboru úlohy, můžete pomocí možnosti /JOB:<jobname> určit soubor úlohy, ze kterého se má číst. Robocopy čte všechny parametry uvnitř souboru úlohy. Poté se spustí, jako byste zadali možnosti přímo na příkazovém řádku.

> robocopy /JOB:myjob

vytvoření souboru úlohy bez spuštění úlohy pomocí / QUIT

účel volby /QUIT není zřejmý. Na povrchu si můžete myslet, že /QUIT nutí Běh k odchodu. Místo toho /QUIT funguje spíše jako možnost zabránit spuštění úlohy na prvním místě.

oficiálně volba /QUIT „nutí robocopy ukončit zpracování příkazového řádku“. Bylo by však lépe vysvětleno jako vytvoření souboru úlohy bez spuštění úlohy.

pokud použijete volbu /SAVE, spustí úlohu také automaticky. Neexistuje žádný způsob, jak vytvořit soubor úlohy bez předchozího spuštění úlohy. Můžete vytvořit soubor úlohy RCJ pomocí textového editoru nebo můžete použít robocopy to přidáním /QUIT na konec.

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

úprava souboru úlohy

vzhledem k tomu, že soubory úloh jsou pouze textové soubory, můžete je upravit pomocí svého oblíbeného textového editoru nebo můžete nechat robocopy udělat za vás.

soubory úloh můžete upravovat kombinací /JOB, /SAVE a /QUIT.

možná byste například chtěli vyloučit všechny EXE soubory z úlohy robocopy uložené v souboru úlohy s názvem backupfiles.rcj. Soubor úlohy jste již vytvořili a nechcete celou věc přepsat. Můžete přidat novou možnost jako níže:

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

pomocí více souborů úloh

můžete dokonce kombinovat použití souborů úloh. Při zadávání více souborů úloh ve stejném běhu budou všechny možnosti použité v tomto běhu spojeny dohromady.

například možná máte velký seznam souborů, které chcete vyloučit ze úlohy kopírování backupfiles. Otevřete textový editor a přidejte následující pro vytvoření vyloučení.soubor rcj.

/XF a.exe b.txt c.cer

pak můžete tyto soubory vyloučit z úlohy backupfiles takto:

> robocopy /JOB:backupfiles /JOB:exclude

vzhledem k tomu, že původní soubor úlohy backupfiles již vylučoval všechny soubory EXE, syntaxe výše uvedeného běhu by vypadala jako /XF *.exe a.exe b.txt c.cer. Robocopy kombinuje všechny možnosti do jednoho.

šablony Robocopy a pomocí možností /NOSD a / NODD

pokud pracujete s mnoha soubory úloh, můžete vytvářet soubory úloh, které přijímají parametry. Robocopy umožňuje předávat hodnoty z příkazového řádku do úloh, když jsou spuštěny. Parametr není termín robocopy, ale v tomto scénáři dobře zapadá.

úlohy robocopy můžete vytvořit tak, aby přijímaly parametry tím, že nezadáte zdrojový nebo cílový adresář explicitně pomocí možností /NOSD a /NODD nebo prostě nezahrnete zdrojový a cílový adresář vůbec.

pro jednoduchý příklad vytvořte soubor úlohy bez zdroje nebo cíle pomocí syntaxe níže. Záměrem této úlohy je zkopírovat všechny soubory TXT a EXE ze zdroje do cílového adresáře.

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

Tato úloha sama o sobě nikdy nebude fungovat, protože není zadán žádný zdrojový nebo cílový adresář.

když vytvoříte úlohu bez zdrojového a cílového adresáře, soubor úlohy se automaticky vytvoří pomocí možností /NOSD a /NODD.

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

volby /NOSD řeknou robocopy, že jste nezahrnuli zdrojový adresář, zatímco /NODD znamená, že jste nezahrnuli cílový adresář. Tento soubor úloh je „šablona“ pro jiné úlohy.

ale můžete předat „parametry“ do tohoto souboru úlohy a poskytnout zdrojové a cílové adresáře.

Chcete-li použít Soubor úlohy právě vytvořený pro kopírování souborů z C:\src do C:\dst, můžete předat tyto adresáře přímo na příkazovém řádku, který pak bude předán do úlohy.

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

asynchronní kopírování (Robocopy / MT)

ve výchozím nastavení robocopy zpracovává pouze jeden soubor najednou. Můžete však donutit robocopy kopírovat více souborů než najednou pomocí volby /MT.

volba /MT umožňuje zadat počet vláken, které robocopy použije ke kopírování souborů. Maximum je 128.

můžete použít /MT takto:

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

v tomto případě jsem vybral 32 jako základní linii. Navrhuji začít na 32, abyste viděli, jak váš počítač a síť zvládají věci a podle toho upravují vlákna.

Všimněte si, že pokud použijete /MT, nebudete moci použít /IPG nebo /EFSRAW. Pro lepší výkon nevydávejte protokol do konzoly. Místo toho použijte /LOG.

plánování Robocopy

Robocopy má několik způsobů, jak můžete naplánovat, když běží.

pomocí /RH

pomocí volby /RH můžete říct, že robocopy běží pouze během určitého času. To je skvělé, pokud máte okno údržby nebo čas, kdy všichni odešli domů na den.

můžete zadat počáteční a koncový čas ve formátu HHMM-HHMM. Chcete-li například vyvolat robocopy, ale povolit pouze běh mezi hodinami 5PM a 9AM, jak je definováno systémovými hodinami, spusťte:

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

uvidíte, že pokud vyvoláte robocopy mimo tyto hodiny, řekne vám aktuální čas a počká na spuštění.

Robocopy vám řekne, kdy začne, pokud je naplánováno
Robocopy vám řekne, kdy začne, pokud je naplánováno

musíte se ujistit, že oba časy jsou ve formátu 24 hodin a jsou přesně čtyři číslice dlouhé. Okno musí být větší než dvě minuty.

ve výchozím nastavení pomocí /RH zkontroluje čas zahájení před celým spuštěním. Pokud však máte spoustu souborů a domníváte se, že proces může trvat déle, můžete použít možnost /PF. /PF donutí robocopy zkontrolovat okno před každým souborem.

pomocí Plánovače úloh

výstupní protokol

Robocopy vždy vrátí výstupní protokol. Zda je tento protokol zobrazen pomocí stdout na konzole a / nebo přesměrován do souboru protokolu, je jen na vás.

při zobrazení výstupu robocopy máte spoustu možností.

přepínač vysvětlení výchozí chování ekvivalentní přepínač poznámky
/NP žádný pokrok. Potlačuje zobrazení informací o pokroku. To může být užitečné, když je výstup přesměrován do souboru.
/unicode zobrazí stavový výstup jako text unicode
/LOG: soubor stav výstupu pro přihlášení souboru a přepsání
/UNILOG: soubor stav výstupu do souboru protokolu unicode a přepsání
/LOG+:soubor stav výstupu do souboru protokolu a připojení k existujícímu souboru protokolu
/UNILOG+: soubor stav výstupu do souboru protokolu unicode a připojení k existujícímu souboru protokolu
/TS zobrazuje časová razítka souboru pro každý zpracovaný soubor.
/FP nahrazuje jednoduché názvy souborů úplnými názvy cest k souborům ve výstupu.
/NS nezobrazuje Velikost souboru.
/NC skryje výstup třídy souborů „textové značky“ (více informací naleznete zde: https://www.uvm.edu/~gcd/2015/04/robocopy-file-classes/)
/NFL skryje názvy souborů. Poruchy jsou však stále zaznamenány. Všechny soubory soubory smazané nebo by byly smazány, pokud by byl / L vynechán, jsou vždy zaznamenány
/NDL skryje výstup výpisu adresáře. Úplné názvy cest k souborům jsou výstupem pro snadnější sledování problematických souborů.
/TEE výstup do okna konzoly, stejně jako soubor protokolu
/NJH žádná hlavička úlohy
/NJS žádné shrnutí úlohy
/bajty velikost tisku jako bajty
/X nahlásit všechny soubory, nejen ty vybrané & zkopírovány
/V produkovat podrobný výstupní protokol, zobrazující přeskočené soubory
/ETA Zobrazit odhadovaný čas příchodu zkopírovaných souborů. Podívejte se na čas zahájení každé kopie souboru a odhadovaný čas dokončení na základě pozorované propustnosti předchozích kopií. Časy se zobrazují za názvem souboru ve formátu HH: MM – > HH: MM (start – > dokončit).
/ladění zobrazit informace o svazku ladění

omezení prvků protokolu pomocí /NJS a / NJH

ve výchozím nastavení robocopy vrací dva prvky ve svém výstupu, záhlaví úlohy a souhrn úlohy.

hlavička úlohy je jednoduchá hlavička ROBOCOPY nahoře.

Robocopy job header
Robocopy job header

shrnutí úlohy zobrazuje souhrnný stav všech souborů/složek, kolik dat bylo přeneseno a čas ukončení běhu.

shrnutí úlohy Robocopy
shrnutí úlohy Robocopy

můžete skrýt každý z těchto prvků pomocí /NJH možnost skrýt záhlaví úlohy a /NJS možnost skrýt souhrn úlohy. Můžete zahrnout jednu z těchto možností nebo obě dohromady.

Skrytí záhlaví úlohy a shrnutí úlohy
Skrytí záhlaví úlohy a shrnutí úlohy

přesměrování výstupního protokolu do souboru

pokud potřebujete uložit výstupní protokol, můžete jej přesměrovat do textového souboru a / nebo jej zobrazit na konzole. Můžete tak učinit pomocí tradičních výstupních přesměrovačů, jako je >, >>, PowerShell nebo volba /LOG.

Chcete-li přesměrovat výstupní protokol do souboru pomocí možnosti /LOG přepsat jakýkoli existující soubor protokolu, použijte syntaxi /LOG:<filepath> jako níže. Jediným výstupem, který obdržíte na konzoli, je cesta k souboru protokolu.

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

pokud chcete zachovat obsah jakéhokoli existujícího souboru protokolu a přidat výsledky do souboru, můžete použít operátor +, jak je uvedeno níže.

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

přesměrování výstupního protokolu do souboru a zobrazení na konzole

pokud chcete uložit výstupní protokol do souboru, ale také jej vidět na konzole, můžete použít volbu /TEE. Tato volba způsobí, že robocopy zapíše výstup do souboru protokolu při zachování výchozího chování návratu výstupu do konzoly.

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

výstupní kódy

stejně jako všechny ostatní nástroje příkazového řádku vrací robocopy výstupní kódy v závislosti na výsledcích provedení. Všichni si přejeme, aby robocopy vždy úspěšně ukončily 0 , ale to se vždy nestane.

níže naleznete všechny výstupní kódy, které robocopy vrací, a jejich vysvětlení. Jakýkoli výstupní kód větší než sedm označuje alespoň jedno selhání během provádění.

výstupní kód vysvětlení
0 žádná akce provedena. Zdroj a cíl jsou synchronizovány.
1 alespoň jeden soubor byl úspěšně zkopírován.
2 byly zjištěny další soubory nebo adresáře. Zkontrolujte protokol.
3 výstupní kódy 2 a 1 dohromady.
4 byly nalezeny neodpovídající soubory nebo adresáře. Zkontrolujte protokol.
5 výstupní kódy 4 a 1 dohromady.
6 výstupní kódy 4 a 2 dohromady.
7 výstupní kódy 4, 1 a 2 dohromady.
8 alespoň jeden soubor nebo adresář nelze zkopírovat. Opakujte limit exceeeded. Zkontrolujte protokol.
16 kopie katastrofálně selhala.

Všimněte si, že pokud provádíte robocopy v nástroji třetí strany, může si tento nástroj myslet, že jakýkoli nenulový výstupní kód je selhání. Chcete-li tomu zabránit, můžete změnit výstupní kód na 0, pokud vrátí 1.

výstupní kód souboru Robocopy „extra“ je běžný návratový kód, což znamená, že soubor“ extra “ je v cílové složce, ale ne ve zdrojové složce. Tento kód vylučuje doplňky, které zabrání vymazání z cíle.

Změna výstupního kódu v dávkovém souboru

pokud provádíte robocopy s dávkovým souborem, najdete hodnotu proměnné %ERRORLEVEL%. Pokud vrátí 1, použijte klíčové slovo exit pro ukončení skriptu s 0.

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

Změna výstupního kódu ve skriptu PowerShell

pokud provádíte robocopy ve skriptu PowerShell, můžete vyvolat robocopy s Start-Process pomocí PassThru vrátit vytvořený proces a Wait počkat na dokončení robocopy. Potom můžete zkontrolovat vlastnost ExitCode na hodnotu 1. Pokud je výstupní kód 1, Ukončete skript PowerShell pomocí 0 pomocí $host.SetShouldExit().

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

běžné chyby

pokud máte co do činění s tisíci souborů, jste povinni narazit na některé problémy. Zde je rozpis běžných chyb, na které jsem narazil

chyba Neplatný parametr

když se zobrazí chyba s uvedením neplatného parametru chyba, obvykle to znamená, že jste se pokusili předat možnosti robocopy ze sekvence nějak. Zdá se, že chyba robocopy neplatný parametr 3 je nejčastější.

častým důvodem, proč byste tuto chybu obdrželi, je, když zadáte zdrojový nebo cílový adresář s mezerami a zapomenete jej obklopit uvozovkami.

příklady Robocopy

můžete si vytvořit vlastní řetězce robocopy nebo si můžete vzít to, co se ostatní naučili, a použít je! V této části se budu zabývat případy použití, jak používat robocopy k dosažení různých věcí.

Najděte velikost adresáře síťové složky

přispěvatel: northendtroooper (Reddit)

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

rychle odstranit obsah složky (ignorování oprávnění na podsložky)

přispěvatel: pizzasteveo (Reddit)

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

provádění velkých migrací souborů

přispěvatel: @MySnozzberries (Twitter)

cílem tohoto úryvku je vynutit vlastnictví všech souborů zpět správcům. Poté přidáme explicitní ACE pro skupinu administrátorů pro plnou kontrolu nad každým objektem rekurzivně, i když také nastavujeme dědičnost.

nakonec provedeme úplnou kopii robocopy s DACLs do cíle s logem. Log pak může být přezkoumána pro další problémy s oprávněním, nebo jen zámky souborů a další Delta sync lze provést později.

> 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

rekurzivně vynutit skupinu administrátorů jako vlastníka všech souborů a adresářů. Mohou existovat způsoby, jak to obejít, ale toto je nejtěžší přístup a obvykle nejrychlejší.

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

jakmile jsme vlastníkem, můžeme nyní vynutit nové eso do DACL pro každý objekt. To uděluje správcům plnou kontrolu s povolenou dědičností a rekurzivně cestou.

nastavení v kořenovém adresáři s dědičností by pokrývalo prostředí, ale pokud má sdílení vlastníka tvůrce s plnou kontrolou (což je bohužel i doporučení společnosti Microsoft pro věci, jako jsou obchody s uživatelskými profily souborů), může uživatel zakázat dědičnost nebo odstranit esa podle svého uvážení. Takže těžká ruka je obvykle nejrychlejší Oprava.

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

jakmile změníme Dacl na většině souborů, pokusíme se zkopírovat soubory na nové umístění, společné pro věci, jako je migrace sdílení souborů. Za tímto účelem kopírujeme položky rekurzivně a pomocí přepínače /SEC také zkopírujeme Data / atributy/časová razítka / DACLs.

pak zaznamenáme operaci s plnými cestami a pro všechny objekty (/V podrobný přepínač) do protokolu, takže můžeme odstranit <5% chyb, které se běžně týkají délky cesty nebo zámku souborů, a získat podrobnější informace.

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

Jedná se o jednoduchý rámec pro správu migrace sdílení souborů s minimálním dopadem na uživatelské prostředí. Zlepšuje také kontrolu, kterou drží nad daty. Pokud má zákazník silnou praxi správy dat, kde je vlastnictví řádně spravováno na úrovni podřízených složek, stává se to složitější diskusí, ale většina zákazníků, které najdeme, má štěstí, že používá pouze dědičnost a skupinová esa, takže se jedná o nejběžnější situaci a opravu, na které začínáme.

Robocopy alternativy

Robocopy je úžasný nástroj, ale existuje mnoho dalších podobných nástrojů, které by mohly být zajímavé.

  • xxcopy-podobný nástroj příkazového řádku s množstvím možností.
  • copy-Item PowerShell rutina – ne zdaleka tak vybavený, ale mnohem jednodušší.
  • TreeSize-GUI a scriptable utility najít informace o složce.

shrnutí

Robocopy je vynikající nástroj pro kopírování velkých sad souborů. Ať už provádíte migraci dat, udržujete složky v synchronizaci nebo jednoduše potřebujete rychlý způsob, jak přesně kopírovat soubory, robocopy je skvělá volba.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.