a Robocopy az egyik leggyakrabban használt parancssori segédprogram, amely nagy mennyiségű adatot másol a Windows rendszerben. Ez egy olyan népszerű eszköz, mert milyen erős. De ezzel a hatalommal együtt jár a komplexitás. Ebben az útmutatóban lebontjuk ezt a komplexitást, és teljes bemutatót adunk ennek a hasznos eszköznek a használatáról.
a Robocopy egy Windows parancssori segédprogram, amely a Windows NT óta elérhető. Ez helyettesíti a kevésbé sokoldalú xcopy segédprogramot. Ez lehetővé teszi a meghajtó vagy a kiszolgáló elérési útjának megadását a fájlok másolásához/áthelyezéséhez a parancssorban.
a Robocopy verziója az írás óta legfeljebb 10.0.18. Ez az a verzió, amelyen teszteltem.
a Robocopy számos olyan funkciót kínál, amelyekkel hatékony és gyors fájlmásolatokat és mozgásokat hajthat végre. Ez lehet:
- fájlok másolása hálózaton keresztül folytatási képességekkel
- kihagyhatja az NTFS csatlakozási pontokat, amelyek általában végtelen ciklusokból okoznak hibát
- másolhatja a fájl-és könyvtárattribútumokat, megőrizve az időbélyegeket
- másolhatja az NTFS engedélyeket, tulajdonosokat és naplózási információkat
- másolhatja a könyvtár időbélyegeit
- fájlok másolása ‘backup’ módban a fájlok másolásának biztosítása érdekében még ezeket a jogokat is megtagadták a rendszergazdától
- automatikus próbálkozások
- szinkronizálhat két mappát
- elég okos ahhoz, hogy kihagyja a már másolt fájlokat
- lehet másolni utak nagyobb, mint a 256 karakteres útvonal limit
- végre aszinkron másolatok segítségével többszálú képességét.
- szabványosított kilépési kódokat ad vissza a szkriptek használatához
mint látható, sok másolni kell. Mindent meg akartam fedezni, amit tudnia kell erről a praktikus eszközről.
Tartalomjegyzék
közös Robocopy szintaxis referencia
miért ilyen hosszú blogbejegyzést egyetlen segédprogram? Csak ünnepelje a szemét az alábbi táblázatokon. Van egy csomó lehetőség, hogy másolni vagy áthelyezni fájlokat robocopy! Lesz több lehetőség az egyes szakaszokban.
ezek a táblák a robocopy /?
– ből visszaadott Súgó szintaxisból épültek. Értelmesebb részekre bontották őket, idővel hozzáadták őket, és megtisztították, hogy több hasznos információt nyújtsanak.
forrás opciók
kapcsoló | magyarázat | alapértelmezett viselkedés | egyenértékű kapcsoló | Megjegyzések |
/s | almappák másolása | |||
/E | almappák másolása, beleértve az üres almappákat is | |||
/másolás: | másolási lehetőségek | / másolás: DAT | D = adatok, A = attribútumok, T = időbélyegek S = biztonság=NTFS ACL-ek, O=tulajdonosi információk, U=auditálási információk. A fájladatok (D) mindig tartalmazzák a fájl időbélyegeit (T) | |
/SEC | fájlok másolása biztonsággal | /másolás: DATS | ||
/DCOPY: t | könyvtár időbélyegeinek másolása | |||
/COPYALL | minden fájl információ másolása | /COPY: DATSOU | ez megakadályozza az offline fájlok kiszáradását, ehelyett másolja a fájl címkéjét (legalább emc VNX/Unity rendszereken). Ezt hivatalosan nem dokumentálták! Ha kiszáradásra van szüksége (ezért találtam ezt a problémát), akkor nem másolhatja az ACL-eket a fájlok mentén. Hitel: Monsieurx (Reddit) | |
/NOCOPY | másolás nincs fájl információ | hasznos / tisztítással | ||
/a | csak az archív attribútumkészlettel rendelkező fájlokat másolja | |||
/M | tetszik /A, de távolítsa el az archív attribútumot a forrásfájlokból | |||
/LEV:n | csak a forrásfa legfelső n szintjét másolja | |||
/MAXAGE: n | maximális fájlkor – n napnál/dátumnál régebbi fájlok kizárása | |||
/MINAGE: n | minimális fájl életkor-n napnál/dátumnál újabb fájlok kizárása | ha n < 1900 akkor n = napok száma, különben n = ÉÉÉÉHHNND dátum | ||
/FFT | tegyük FAT Fájl alkalommal | 2-második dátum / idő granularitás. Ez helyettesíti az NTFS időbélyegeit. Úgy tűnik, hogy megbízhatóbb, ha hálózaton keresztül továbbítja. | ||
/256 | nagyon hosszú út kikapcsolása (> 256 karakter) támogatás |
cél lehetőségek
kapcsoló | magyarázat | alapértelmezett viselkedés | egyenértékű kapcsoló | Megjegyzések |
/A+: | fájlattribútum(OK) beállítása a célfájlokon + Hozzáadás | |||
/A-: | fájlattribútum (ok) eltávolítása a célfájlokon | |||
/FAT | célfájlok létrehozása a 8 használatával.3 csak FAT fájlnevek | |||
/ | könyvtárfa-struktúra létrehozása + csak nulla hosszúságú fájlok | |||
/DST | kompenzálja az egy órás DST időbeli különbségeket |
másolási lehetőségek
kapcsoló | magyarázat | alapértelmezett viselkedés | egyenértékű kapcsoló | Megjegyzések |
/L | csak fájlok listája | ne másolja, időbélyeg vagy törölje a fájlokat | ||
/MOV | Fájlok áthelyezése | Törlés a forrásból másolás után | ||
/MOVE | fájlok és könyvtárak áthelyezése | Törlés a forrásból másolás után | ||
/sl | fájl szimbolikus hivatkozások másolása a cél helyett | |||
/Z | fájlok másolása újraindítható módban | túlélni egy hálózatot glitch | ||
/B | fájlok másolása biztonsági mentési módban | |||
/J | másolás nem pufferelt I / O használatával | nagy fájlokhoz ajánlott | ||
/NOOFFLOAD | fájlok másolása a Windows másolási tehermentesítési mechanizmusának használata nélkül | https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=sz.11) | ||
/EFSRAW | titkosított fájlok másolása EFS RAW módban | |||
/TIMFIX | Fix fájl alkalommal minden fájlt, még kihagyott fájlokat | |||
/XO | régebbi kizárása | ha a célfájl létezik, és ugyanaz a dátum vagy újabb, mint a forrás – ne fáradjon felülírni. | ||
/XC | megváltozott fájlok kizárása | |||
/XN | újabb fájlok kizárása | |||
/XX | a célban lévő, de a forrás nélküli fájlok kizárása | / XX | ||
/XF fájl … | utóneveknek/utaknak/helyettesítő karaktereknek megfelelő fájlok kizárása | |||
/XD dirs … | az utóneveknek/utaknak megfelelő könyvtárak kizárása. | /az XF és / XD kombinációban is használható, pl. ROBOCOPY c:\source d:\dest / XF *.doc *.XL /XD c:\unwanted / S | ||
/IA: | a megadott attribútumok bármelyikével rendelkező fájlokat tartalmazza | |||
/XA: | a megadott attribútumokkal rendelkező fájlok kizárása | |||
/IM | felülírja a módosított fájlokat. Ez magában foglalja ugyanazokat a fájlokat különböző időpontokban. | |||
/ | felülírja a fájlokat akkor is, ha azok már azonosak | |||
/IT | tartalmazza csípett fájlok | |||
/XJ | csatlakozási pontok kizárása a forrásból | / XJ | ||
/XJD | csatlakozási pontok kizárása a forráskönyvtárakból | |||
/XJF | csatlakozási pontok kizárása forrásfájlok | |||
/MAX: n | N bájtnál nagyobb fájlok kizárása | |||
/MIN: n | N bájtnál kisebb fájlok kizárása | |||
/MAXLAD: n | N óta nem használt fájlok kizárása | |||
/MINLAD:n | az n óta használt fájlok kizárása | ha n < 1900 akkor n = n nap, különben n = ÉÉÉÉHHNND dátum | ||
/mir | könyvtárfa tükrözése | /PURGE / E | ||
/ | törölje azokat a dest fájlokat/mappákat, amelyek már nem léteznek a forrásban | |||
/XL | a forrásban lévő, de a célban nem szereplő fájlok kizárása | |||
/SECFIX | Robocopy / secfix javítások fájl biztonság minden fájlon, még a kihagyott fájlokon is. | adja meg a másolni kívánt biztonsági információk típusát az alábbi lehetőségek egyikével is: / COPYALL / COPY: O /COPY: S / COPY: U / SEC | ||
/ZB | használja az újraindítható módot; ha a hozzáférés megtagadva használja a biztonsági mentési módot |
megfigyelési lehetőségek
kapcsoló | magyarázat | alapértelmezett viselkedés | egyenértékű kapcsoló | Megjegyzések |
/R:n | sikertelen másolatok ismételt próbálkozásainak száma | / R:1000000 | mindig próbálja meg beállítani ezt az opciót. Azt javaslom, hogy állítsa ezt 10-20 – ra, hogy ne pazarolja az időt az újrapróbálkozásra. | |
/W: n | várakozási idő az újrapróbálkozások között | / W:30 | mindig próbálja meg ezt az opciót alacsonyabb számra állítani, hogy gyorsabban próbálkozzon újra. Javaslom az 5-10-et. | |
/REG | Mentés /R:n és /W:n A Windows beállításjegyzékben alapértelmezett beállításként | |||
/RH:hhmm-hhmm | új másolatok indításának időpontja | |||
/TBD | várja meg a sharenames meghatározását | próbálja újra hiba 67 | ||
/PF | a futási órák ellenőrzése fájlonként (nem bérletenként) alapon | |||
/MON: n | futtassa újra, ha több mint n változás látható | |||
/MOT:M | futtassa újra m percben, ha megváltozott |
megértése Robocopy viselkedés
már most teljesen fújt a fejedben az összes lehetséges szintaxis lehetőségek állnak rendelkezésre az Ön számára. Most nézzük meg a szintaxis használatának különböző kombinációit.
rendkívül hosszú listát tudnék adni a robocopy parancsokról, egyre növekvő számú kapcsolóval. De azt hiszem, jobb, ha megtanítalak horgászni. Menjünk át, hogyan kell értelmet adni ezeknek a lehetőségeknek.
a Robocopy csak a teljes könyvtárakat másolja
minden robocopy végrehajtásnak lesz egy forrása és egy célkönyvtára. Robocopy másolja és mozgatja a fájlokat a teljes könyvtárban. Nem lehet explicit módon egyetlen fájlt másolni a robocopy segítségével. Ehhez használja a copy
vagy a PowerShell Copy-Item
parancsot.
azonban, akkor robocopy egyetlen fájl a megfelelő szűrés, amely megtudhatja az alábbiakban. Egyetlen fájlfájl robocopy-jához adja meg a forrás-és célkönyvtárakat, amelyeket közvetlenül a forrás fájlneve követ.
> robocopy c:\src d:\dst copythisfile.txt
a szintaxis a környezettől függ
a robocopy számára megadott lehetőségek a környezettől is függenek. Néhány kérdésre válaszolnia kell, amikor megpróbálja kitalálni, hogy mely lehetőségeket használja.
- mindig üres könyvtárba másol?
- lehetséges, hogy a fájlok már léteznek a célkönyvtárban?
- terabájtnyi adatot másol, vagy csak néhány megabájtot?
- fájlokat másol hálózaton vagy helyben?
- …és több.
ha nincsenek fájlok a célfájl könyvtárában, akkor ne törődjön a fájlokat felülíró beállításokkal. Ha nem másol fájlokat a hálózaton keresztül, ne aggódjon ezek miatt a lehetőségek miatt. Határozza meg a jelenlegi és potenciális jövőbeli körülményeit, amelyekben a környezete lesz.
Az alapértelmezett beállítások felismerése
a Robocopy alapértelmezés szerint sok lehetőséget használ. Kiválaszthatja őket a fenti táblázatok megtekintésével. Ezenkívül praktikus kimenetet biztosít minden alkalommal, amikor futtatja a segédprogramot.
az alábbiakban láthatja, hogy amikor a robocopy-t futtattam a legalapvetőbb opciókkal (a forrás-és célmappával), automatikusan használt néhány opciót. Fontos az alapértelmezett viselkedés megértése.
hivatkozzon a kimeneten látható opciókra a fenti opciómagyarázatokkal, és pontosan meg fogja érteni, hogy a robocopy mit csinál a takaró alatt.
annak megértése, hogy a Robocopy parancsok mire képesek
ha a copy
vagy a PowerShell Copy-Item
parancsmagjait használta, akkor valószínűleg megadta a forrást és a célt, és folytatta a napját. Nincs sok lehetőség, amelyet ott konfigurálhat. Ezek a robocopy parancsok alapértelmezett viselkedést mutatnak.
a robocopy viszont sokkal többet ért, és rugalmasságot biztosít a viselkedés módosításához, amennyit csak akar.
fontos tudni, hogy a robocopy nem csak tisztában van egy fájl vagy könyvtár fogalmával. Ennél sokkal több van egy fájlrendszerben, és a robocopy szinte mindent támogat.
egy fájlrendszeren ülő fájl nem csak egy buta objektum, amelynek egyetlen célja van. Sok különböző attribútumok és dolgok, hogy megy a koncepció egy fájlt. Például egy fájl olyan attribútumokkal rendelkezik, mint:
- időbélyeg (írott, módosított és hozzáférhető)
- NTFS ACL
- tulajdonos
- NTFS naplózási információk
- rejtett zászló
- archivált zászló
amikor egy fájl, akkor lehetősége van arra, hogy az összes, hogy a cucc vele együtt, ha akarod.
értse meg, hogy a robocopy futtatásakor nem csak egy fájlt másol, hanem potenciálisan az összes többi információt is lemásolja vele. Fontos ezt felismerni és figyelembe venni a robocopy által megadott opciókban.
Az Alapok: WhatIf forgatókönyvek végrehajtása
ha van egy hatalmas fájlkiszolgálója valahol, amelyet át szeretne költöztetni, és még nem akar semmilyen műveletet végrehajtani, akkor a robocopy segítségével visszaadhatja, hogy mit tett volna.
a /L
opcióval megmondhatja a robocopy-nak, hogy sorolja fel az összes megadott fájlt és/vagy mappát, és adja vissza a másolt/áthelyezett fájlok listáját.
a /L
opciót bármely más opcióval használhatja. Ez egy nagyszerű módja annak, hogy visszatérjen az összes lehetőséget robocopy volna használni (alapértelmezett vagy sem). Átfogó képet ad arról, hogy mit fog tenni a robocopy, figyelembe véve az Ön által megadott lehetőségeket.
az alapok: fájlok másolása
a robocopy legalapvetőbb használata a forrás-és célkönyvtár használata opciók nélkül.
> robocopy C:\src C:\dst
ez az opció az összes fájlt (az almappák kivételével) átmásolja C:\src hogy C:\dst.
mindent másolhat, beleértve az almappákat (üres vagy nem) és az NTFS engedélyeket. Ez az, amit meg tudok mondani, az a módszer, amellyel szó szerint átmásolhatunk mindent, ami egy fájlkönyvtárról szól, egy másik könyvtárba.
az alábbiakban az összes NTFS ACL-t, fájltulajdonost, almappát (beleértve az üreseket is) és az összes fájlattribútumot másolom. Mindez csak a /E
opcióval lehetséges, hogy az összes üres almappát tartalmazza, a /COPYALL
pedig a többit.
> robocopy C:\src C:\dst /E /COPYALL
az alapok: Fájlok áthelyezése
Fájlok áthelyezése fájlok átvitele egyik könyvtárból a másikba, mint a másolás. Az egyetlen különbség a move művelettel az, hogy a forrásfájlokat a másolat után eltávolítják.
fájlok/könyvtárak másolás utáni törléséhez használja a /MOV
opciót. Ez eltávolítja az összes fájlt a megadott könyvtárban (nincs almappa).
> robocopy C:\src C:\dst /MOV
a /MOVE
használatával az összes fájlt és almappát áthelyezheti.
> robocopy C:\src C:\dst /MOVE
az alapok: fájlok szinkronizálása
a Robocopy lehetővé teszi két könyvtár szinkronizálását. Ez azt jelenti, hogy a célkönyvtárban lévő összes fájl a forráskönyvtárban van, és nem több. /MIR
lemásolja az adatokat, lemásolja az összes fájlt a forrás nem a cél, és törli a fájlokat a cél nem a forrás. Vigyázz!
> robocopy C:\src C:\dst /MIR
fájlok másolása hálózaton keresztül
ha fájlokat másol hálózaton keresztül, érdemes megfontolni néhány lehetőséget.
a Robocopy lehetővé teszi a fájlok ‘újraindítható módban’ történő másolását a /Z
opcióval. Ez azt jelenti, hogy ha egy fájl elkezd másolni, és félúton meghiúsul, akkor a másolás újra elindulhat, ahelyett, hogy teljesen meghibásodna. A /Z
opció akkor hasznos, ha az adatfolyamot hálózaton keresztül vágják le.
figyelem: néhányan arról számoltak be, hogy a
/Z
használata 1/4-rel csökkenti a teljesítményt. Tudassa velem a megállapításait.
használhatja a /FFT
opciót is. Ez a kapcsoló már ismert, hogy pontosabban megőrizni fájl időbélyegek átvitelekor hálózaton keresztül. Ez az opció FAT fájlrendszer időbélyegeket használ NTFS helyett.
robocopy C:\src \SRV1\share /Z /FFT
a /IPG használata a csomagok közötti rés vezérléséhez
fájlok hálózaton keresztüli másolásakor használhatja a /IPG
kapcsolót. Ezt csomagközi rés opciónak is nevezik. Ez az opció meghatározza (ezredmásodpercben) azt a gyakoriságot, amelyben a robocopy várni fog az új csomagok küldése között.
mindig használjon UNC útvonalakat, ne meghajtó betűket
a Reddit egyik olvasója felfedezte a nehéz utat, hogy ne használja a leképezett meghajtókat célkönyvtárként. Ehelyett mindig használja mindig használjon UNC elérési utat. Lehet, hogy befut problémák a 256 karakteres korlát, ha nem. Nézze meg ezt a Microsoft dokumentumot további információkért.
Robocopy biztonsági mentési mód (Robocopy /Z)
a Robocopy rendelkezik egy opcióval (/B
) vagy biztonsági mentésként újraindítható módba (/ZB
), amely biztonsági mentési módban másolja a fájlokat. Mi a” biztonsági mentési mód ” egyébként?
amikor általában átmásol egy fájlt a Windows rendszerben, és megüt egy fájlt, amelynek eléréséhez rendszergazdai jogosultságokra van szükség, hibaüzenet jelenik meg, amely azt jelzi, hogy nincs engedélye. Annak ellenére, hogy helyi rendszergazdaként fut, a Windows nem engedi elérni.
figyelmeztetés: jelentések érkeztek sérült kiszolgálókötetekről, amikor adatokat másoltak egy Windows Server 2016 kiszolgálóra, ahol a duplikáció megszüntetése be van kapcsolva. Ha a
/ZB
kapcsolót használja,az eredmény egy dedup chunk store lesz, amelyet a rendszer Kötetinformációi tartalmaznak. A másolt fájlok nem lesznek olvashatók, és hibákat generálnak, amikor megpróbálják manipulálni őket. Serverfault link további információkkal.
a biztonsági mentési mód a fájlok elérésének módja az engedélyek aggodalma nélkül.
a Robocopy biztonsági mentési módot használ a SeBackupPrivilege fájlok olvasására, a SeRestorePrivilege felhasználói jogot pedig a szükséges fájlok elérésére. Ez figyelmen kívül hagyja azokat az ászokat, amelyek általában megakadályozzák a fájlok elérését.
a SeBackupPrivilege és a SeRestorePrivilege felhasználói jogokat általában a biztonsági operátorok és a Rendszergazdák csoportjában lévő felhasználókhoz rendelik, de néha eltávolíthatók. A Backup modul kiküszöböli ezt a kockázatot, és ideiglenesen megadja a robocopy-t végrehajtó felhasználónak ezeket a jogokat.
ha ellenőrizni szeretné, hogy a felhasználói fiókja rendelkezik-e ezzel a joggal, futtathatja a whoami /priv
parancsot, és mindkét jogot meg kell jeleníteni.
fájlok és mappák szűrése
a rendelkezésre álló lehetőségek nagy többsége a fájlok és könyvtárak sokféle módon történő kizárása. Lebontottam az összes módot, amellyel szűrheti vagy kizárhatja a fájlokat és könyvtárakat különböző kritériumok alapján.
fájlnév vagy fájlkiterjesztés szerint
a robocopy hívásban másolt/áthelyezett fájlok szűrése helyettesítő karakterekkel történik. Használhatja a helyettesítő szűrni a fájlokat megfelelő egy adott fájlnév karakterlánc vagy kiterjesztése.
például, ha csak TXT fájlokat szeretne másolni, megadhatja a *értéket.txt.
> robocopy C:\src C:\dst *.txt
ha csak a-val kezdődő fájlokra szeretne korlátozódni, használhatja a* – ot.
> robocopy C:\src C:\dst a*
a Y0u több fájlnév-egyezést is biztosíthat azáltal, hogy elválasztja őket egy szóközzel az alábbiak szerint.
> robocopy C:\src C:\dst a* b*
ha fájlnév alapján szűr, a robocopy megmutatja a szűrőt a kimeneten.
by könyvtár neve
Robocopy lehetővé teszi, hogy kiszűrje elemek nem csak a fájl, hanem a könyvtár nevét is. A robocopy /xd
használatával kizárhat bizonyos könyvtárakat, amelyek megfelelnek egy adott névnek.
több mappa másolásakor használja a /XD
kapcsolót a mappák kizárásához a futtatásból.
> robocopy C:\src C:\dst /XD "c:\src\exclude"
Fájl/Könyvtár időbélyeg
az alábbiakban megtalálja az összes robocopy opciót, amely kizárja a fájlokat és mappákat a különböző időbélyeg attribútumok alapján.
kapcsoló | magyarázat |
/DCOPY: t | könyvtár időbélyegeinek másolása |
/MAXAGE: n | N napnál/dátumnál régebbi fájlok kizárása |
/MINÁZS:n | N napnál/dátumnál újabb fájlok kizárása |
/XO | ha a célfájl létezik, és ugyanaz a dátum vagy újabb, mint a forrás, ne írja felül |
/XN | ha a célfájl létezik, és ugyanaz a dátum vagy régebbi, mint a forrás, ne írja felül |
két népszerű lehetőség közül lehet választani, ha időbélyegre szűrünk; /XO
és /MAXAGE
.
/XO
lehetővé teszi a fájlok kizárását a másolatból csak akkor, ha azok újabbak, mint a forrás. A /XO
opcióval csak új fájlokat robocopyolhat hozzáférési dátum szerint.
> robocopy C:\src C:\dsc /XO
ha tudja, hogy a maximális életkor fájlok lesznek, használhatja a /MAXAGE
opciót is. Ez lehetővé teszi, hogy YYYMMDD formátumban adja meg a fájl régebbi dátumát a másolás előtt.
> robocopy c:\src c:\dst /S /MAXAGE:20191001
Robocopy munkák
látta, hogy több tucat lehetőség áll az Ön rendelkezésére. Könnyű, hogy ezek a lehetőségek hamarosan nehézkessé váljanak. Szerencsére van egy jobb lehetőség, mint a memorizálás és annak biztosítása, hogy ezek a lehetőségek minden alkalommal megtalálhatók legyenek.
a Robocopy job fájlok soronként egy opciót tartalmazó szöveges fájlok. Általában a robocopy segítségével hozza létre ezeket a feladatfájlokat. A létrehozás után a robocopy segítségével módosíthatja őket, vagy egy egyszerű szövegszerkesztővel.
különböző robocopy parancsok működnek a feladatokkal.
kapcsoló | magyarázat | alapértelmezett viselkedés | egyenértékű kapcsoló | Megjegyzések |
/JOB: jobname | paraméterek felvétele a megnevezett jobfájlból | |||
/Mentés:jobname | paraméterek mentése a megnevezett jobfájlba | |||
/kilépés | Kilépés a parancssor feldolgozása után | hasznos a paraméterek megtekintéséhez | ||
/NOSD | nincs megadva forráskönyvtár | |||
/NODD | nincs megadva célkönyvtár | |||
/ha | tartalmazza a következő fájlokat |
a Robocopy-val létrehozott tipikus feladatfájl RCJ kiterjesztéssel rendelkezik, és úgy néz ki, mint az alábbi kódrészlet. Ez a feladatfájl a robocopy C:\src D:\dst /save:myjob
futtatásával jött létre. Láthatja, hogy megjegyzéseket adhat a feladatfájlban a ::
használatával, amely a fájl legtöbbje.
megjegyzések nélkül a fájl soronként csak egy opciót tartalmazna.
:::: 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 :::
Feladatfájlok mentése
Feladatfájl mentése olyan egyszerű, mint a /SAVE:<jobname>
opció hozzáfűzése a szintaxis végéhez. Cserélje ki a <jobname>
értéket a feladat nevére. A /SAVE
opció létrehoz egy <jobname>nevű fájlt.rcj a könyvtárban, ahol futott robocopy.
> robocopy C:\src C:\dst /SAVE:myjob
utolsó lehetőségként meg kell adnia a /SAVE
értéket. A /SAVE
után megadott opciók nem kerülnek hozzáadásra a feladatfájlhoz. Vegye figyelembe azt is, hogy még akkor is, ha már létezik egy meglévő jobfájl, a robocopy mindig felülírja a meglévőt. Backup vagy verzió ellenőrzése a munkát fájlokat!
Megjegyzés: Ha megpróbálja használni a
/MT
opciót egy feladatfájlba mentéskor, akkor az nem lesz a feladatfájlban. Tudassa velem, hogy sikerült-e ezt belefoglalni.
Jobfájlok használata
miután egy job mentésre került egy jobfájlba, a /JOB:<jobname>
opcióval megadhatja azt a jobfájlt, amelyből olvasni szeretne. A Robocopy beolvassa az összes paramétert a feladatfájlban. Ezután ugyanúgy végrehajtja, mintha az opciókat közvetlenül a parancssorban adta volna meg.
> robocopy /JOB:myjob
Feladatfájl létrehozása feladat futtatása nélkül a /QUIT
használatával a /QUIT
opció célja nem egyértelmű. A felszínen azt gondolhatja, hogy /QUIT
kényszeríti a futást a kilépésre. Ehelyett a /QUIT
inkább úgy működik, mint egy opció, amely megakadályozza a job futtatását.
hivatalosan a /QUIT
opció “kényszeríti a robocopy-t a parancssor feldolgozásának befejezésére”. Azonban jobb lenne megmagyarázni, mint egy feladatfájl létrehozása munka futtatása nélkül.
ha a /SAVE
opciót használja, akkor a feladat is automatikusan fut. Nincs mód feladatfájl létrehozására a feladat első futtatása nélkül. Létrehozhatja az RCJ job fájlt egy szövegszerkesztővel, vagy használhatja a robocopy-t úgy, hogy /QUIT
– et fűz a végéig.
> robocopy C:\src C:\dst /SAVE:myjob /QUIT
Feladatfájl szerkesztése
mivel a feladatfájlok csak szöveges fájlok, szerkesztheti őket kedvenc szövegszerkesztőjével, vagy megkérheti a robocopy-t, hogy tegye meg helyetted.
a feladatfájlokat a /JOB
, /SAVE
és /QUIT
kombinációjával szerkesztheti.
például ki szeretné zárni az összes EXE fájlt a Robocopy jobból, amelyet a backupfiles nevű jobfájlba mentett.rcj. Már létrehozta a feladatfájlt, és nem akarja felülírni az egészet. Felveheti az új lehetőséget, mint az alábbi:
> robocopy /JOB:backupfiles /XF *.EXE /SAVE:backupfiles /QUIT
több Job fájl használata
akár a job fájlok használatát is kombinálhatja. Ha több feladatfájlt ad meg ugyanabban a futtatásban, akkor az adott futtatásban használt összes beállítás össze lesz kapcsolva.
például, lehet, hogy van egy nagy fájlok listáját, hogy kizárják a backupfiles másolási feladat. Nyisson meg egy szövegszerkesztőt, és adja hozzá a következőket a kizárás létrehozásához.rcj fájl.
/XF a.exe b.txt c.cer
ezután kizárhatja ezeket a fájlokat a backupfiles feladatból:
> robocopy /JOB:backupfiles /JOB:exclude
mivel az eredeti backupfiles feladatfájl már kizárta az összes EXE fájlt, a fenti Futtatás szintaxisa /XF *.exe a.exe b.txt c.cer
lenne. Robocopy egyesíti az összes lehetőséget egy.
Robocopy sablonok és a /NOSD és /NODD opciók
ha sok jobfájllal dolgozik, akkor a paraméterek elfogadásához készíthet jobfájlokat. A Robocopy lehetővé teszi az értékek átadását a parancssorból a feladatokhoz, amikor futtatják őket. A paraméter nem robocopy kifejezés, de jól illeszkedik ebbe a forgatókönyvbe.
a paraméterek elfogadásához robocopy jobokat építhet úgy, hogy nem ad meg forrás-vagy célkönyvtárat, vagy kifejezetten a /NOSD
és /NODD
opciókkal, vagy csak egyáltalán nem ad meg forrás-és célkönyvtárat.
egyszerű példaként hozzon létre egy forrás vagy cél nélküli feladatfájlt az alábbi szintaxis segítségével. Ennek a feladatnak az a célja, hogy az összes TXT és EXE fájlt átmásolja egy forrásból egy célkönyvtárba.
> robocopy *.txt *.exe /SAVE:backupfiles /QUIT
önmagában ez a feladat soha nem fog működni, mert nincs megadva forrás vagy célkönyvtár.
ha forrás-és célkönyvtár nélküli feladatot hoz létre, a feladatfájl automatikusan létrejön a /NOSD
és /NODD
beállításokkal.
/NOSD /NODD/IF *.txt *.exe/DCOPY:DA/COPY:DAT/R:1000000/W:30
a /NOSD
beállítások azt mondják a robocopy-nak, hogy nem adott meg forráskönyvtárat, míg a /NODD
azt jelzi, hogy nem adott meg célkönyvtárat. Ez a feladatfájl egy” sablon ” más feladatokhoz.
de átadhatja a “paramétereket” ehhez a feladatfájlhoz, hogy megadja a forrás-és célkönyvtárakat.
az imént létrehozott feladatfájl használata fájlok másolásához C:\src hogy C:\dst, ezeket a könyvtárakat közvetlenül a parancssorba adhatja át, amelyet ezután átadnak a feladatnak.
> robocopy /JOB:backupfiles C:\src C:\dst
aszinkron másolás (Robocopy /MT)
alapértelmezés szerint a robocopy egyszerre csak egy fájlt dolgoz fel. A /MT
opcióval azonban arra kényszerítheti a robocopy-t, hogy több fájlt másoljon, mint egyszerre.
a /MT
opció lehetővé teszi a szálak számának megadását, amelyeket a robocopy a fájlok másolásához használ. A maximum 128.
használhatja /MT
így:
> robocopy C:\src C:\dst /MT:32
ebben az esetben a 32-est választottam kiindulópontnak. Azt javaslom, hogy 32 – től kezdve nézze meg, hogy a számítógép és a hálózat hogyan kezeli a dolgokat, és ennek megfelelően állítsa be a szálakat.
vegye figyelembe, hogy ha a
/MT
– et használja, akkor a/IPG
vagy a/EFSRAW
nem használható. A jobb teljesítmény érdekében ne adja ki a naplót a konzolra. Ehelyett használja/LOG
.
ütemezés Robocopy
Robocopy van néhány módon lehet ütemezni, ha fut.
a /Rh
használatával a /RH
opcióval megmondhatja a robocopy-nak, hogy csak egy adott idő alatt fusson. Ez nagyszerű, ha van karbantartási ablaka, vagy olyan idő, amikor mindenki hazament a napra.
a kezdési és befejezési időt HHMM-HHMM formátumban adhatja meg. Például a robocopy meghívásához, de csak a rendszer órája által meghatározott 5 óra és 9 óra közötti Futtatás engedélyezéséhez futtassa:
> robocopy C:\src C:\dst /RH:1700-0900
látni fogja, hogy ha a robocopy-t ezen órákon kívül hívja meg, akkor megmondja az aktuális időt, és várja meg a kezdési időt.
meg kell győződnie arról, hogy mindkét idő 24 órás formátumban van, és pontosan négy számjegy hosszú. Az ablaknak két percnél nagyobbnak kell lennie.
alapértelmezés szerint a /RH
használatával a teljes futtatás előtt ellenőrzi a kezdési időt. Ha azonban sok fájlja van, és úgy gondolja, hogy a folyamat ennél hosszabb ideig tarthat, használhatja a /PF
opciót. /PF
arra kényszeríti a robocopy-t, hogy minden fájl előtt ellenőrizze az ablakot.
a Feladatütemező használata
a
kimeneti napló a Robocopy mindig kimeneti naplót ad vissza. Ön dönti el, hogy a napló megjelenik-e az stdout-on keresztül a konzolon és/vagy átirányítja-e egy naplófájlba.
rengeteg lehetőséged van a robocopy kimenet megjelenítésekor.
kapcsoló | magyarázat | alapértelmezett viselkedés | egyenértékű kapcsoló | Megjegyzések |
/NP | nincs előrehaladás. Elnyomja az előrehaladási információk megjelenítését. Ez akkor lehet hasznos, ha a kimenetet egy fájlra irányítják át. | |||
/unicode | az állapotkimenet megjelenítése unicode szövegként | |||
/LOG: file | a naplófájl kimeneti állapota és felülírása | |||
/UNILOG: fájl | kimeneti állapot unicode naplófájlba és felülírás | |||
/LOG+:fájl | kimeneti állapot a naplófájlhoz, és hozzáfűzi a meglévő naplófájlhoz | |||
/UNILOG+: fájl | kimeneti állapot a unicode naplófájlhoz és hozzáfűzi a meglévő naplófájlhoz | |||
/TS | megjeleníti a fájl időbélyegeit minden feldolgozott fájlhoz. | |||
/FP | az egyszerű fájlneveket teljes fájl elérési utakra cseréli a kimeneten. | |||
/NS | nem mutatja a fájlméreteket. | |||
/NC | elrejti a “szövegcímkék” fájlosztály kimenetét (további információkért látogasson el ide: https://www.uvm.edu/~gcd/2015/04/robocopy-file-classes/) | |||
/NFL | elrejti a fájlneveket. A hibák még mindig naplózva vannak. A /L kihagyása esetén törölt vagy törlendő fájlok mindig naplózásra kerülnek | |||
/NDL | elrejti a könyvtárlista kimenetét. Teljes fájl pathnames kerülnek kiadásra, hogy könnyebben nyomára problémás fájlokat. | |||
/TEE | kimenet a konzol ablakba, valamint a naplófájl | |||
/NJH | nincs feladat fejléc | |||
/NJS | nincs állás összefoglaló | |||
/bájtok | nyomtatási méretek bájtként | |||
/X | Minden fájl jelentése, nem csak a kiválasztott fájlok & másolva | |||
/V | részletes kimeneti napló készítése, kihagyott fájlok megjelenítése | |||
/ETA | a másolt fájlok várható érkezési idejének megjelenítése. Lásd az egyes fájlmásolatok kezdési idejét és a Befejezés becsült idejét az előző példányok megfigyelt átviteli sebessége alapján. Az idők a fájlnév után jelennek meg a következő formátumban:ÓÓ:MM – > ÓÓ: MM (start – > Befejezés). | |||
/hibakeresés | hibakeresési kötet információ megjelenítése |
a /NJS és /NJH
Naplóelemek korlátozása alapértelmezés szerint a robocopy két elemet ad vissza a kimenetében, egy job fejlécet és egy job összefoglalót.
a job fejléc az egyszerű ROBOCOPY fejléc a tetején.
a feladat összegzése megmutatja az összes fájl/mappa összefoglaló állapotát, az adatok átvitelének mennyiségét és a Futtatás befejezésének idejét.
ezeket az elemeket elrejtheti a /NJH
opcióval a jobfejléc elrejtéséhez, a /NJS
opcióval pedig a job-összefoglaló elrejtéséhez. Felveheti ezeket a lehetőségeket, vagy mindkettőt együtt.
a kimeneti napló átirányítása egy fájlba
ha menteni szeretné a kimeneti naplót, átirányíthatja egy szöveges fájlba és/vagy megjelenítheti a konzolon. Ezt hagyományos kimeneti átirányítókkal, például >
, >>
, PowerShell vagy /LOG
opcióval teheti meg.
ha a kimeneti naplót egy fájlba szeretné átirányítani a /LOG
opcióval, amely felülírja a meglévő naplófájlokat, használja a /LOG:<filepath>
szintaxist, mint az alábbiakban. Az egyetlen kimenet, amelyet a konzolon kap, a naplófájl elérési útja.
> robocopy C:\src C:\dst /LOG:c:\file.log Log File : c:\file.log
ha meg szeretné őrizni bármely meglévő naplófájl tartalmát, és hozzá szeretné fűzni az eredményeket egy fájlhoz, használhatja a +
operátort az alábbiak szerint.
> robocopy C:\src C:\dst /LOG+:c:\file.log Log File : c:\file.log
a kimeneti napló átirányítása egy fájlba és megjelenítés a konzolon
ha a kimeneti naplót egy fájlba szeretné menteni, de a konzolon is látni szeretné, használhatja a /TEE
opciót. Ez az opció arra készteti a robocopy-t, hogy a kimenetet a naplófájlba írja, miközben továbbra is fenntartja a kimenet visszatérésének alapértelmezett viselkedését a konzolra.
robocopy C:\src C:\dst /LOG+:c:\file.log /TEE
kilépési kódok
mint minden más parancssori segédprogram, a robocopy a végrehajtás eredményétől függően adja vissza a kilépési kódokat. Mindannyian szeretnénk, ha a robocopy mindig sikeresen kilépne a 0
– vel, de ez nem mindig történik meg.
az alábbiakban megtalálja az összes kilépési kódot, amelyet a robocopy visszaad, és azok magyarázatát. A hétnél nagyobb kilépési kód legalább egy hibát jelez a végrehajtás során.
kilépési kód | magyarázat |
0 | nincs művelet. A forrás és a cél szinkronban van. |
1 | legalább egy fájlt sikeresen lemásoltak. |
2 | Extra fájlokat vagy könyvtárakat észleltek. Vizsgálja meg a naplót. |
3 | 2-es és 1-es kilépési kód együtt. |
4 | nem megfelelő fájlok vagy könyvtárak találhatók. Vizsgálja meg a naplót. |
5 | 4-es és 1-es kilépési kód együtt. |
6 | 4-es és 2-es kilépési kód együtt. |
7 | 4-es, 1-es és 2-es kilépési kód együttvéve. |
8 | legalább egy fájl vagy könyvtár nem másolható. Az újrapróbálkozási határérték túllépve. Vizsgálja meg a naplót. |
16 | a másolás katasztrofálisan sikertelen. |
ne feledje, hogy ha a robocopy-t harmadik féltől származó segédprogramban hajtja végre, akkor az a segédprogram azt gondolhatja, hogy a nem nulla kilépési kód hiba. Ennek megakadályozása érdekében megváltoztathatja a kilépési kódot 0-ra, ha az 1-et ad vissza.
a Robocopy “extra” fájl kilépési kódja egy általános visszatérési kód, ami azt jelenti, hogy egy “extra” fájl a célmappában van, de nem a forrásmappában. Ez a kód kizárja azokat az extrákat, amelyek megakadályozzák a törléseket a rendeltetési helyről.
a kilépési kód módosítása kötegelt fájlban
ha a Robocopy-t kötegelt fájllal hajtja végre, megtalálhatja a %ERRORLEVEL%
változó értékét. Ha 1-et ad vissza, akkor a exit
kulcsszóval lépjen ki a szkriptből 0-val.
> (robocopy <options>) ^& IF %ERRORLEVEL% LEQ 1 exit 0
a kilépési kód módosítása egy PowerShell-szkriptben
ha a robocopy-t PowerShell-szkriptben hajtja végre, akkor a robocopy-t a Start-Process
segítségével hívhatja meg a PassThru
segítségével a létrehozott folyamat visszatéréséhez, a Wait
pedig a robocopy befejezéséig. Ezután ellenőrizheti a ExitCode
tulajdonság értékét 1. Ha a kilépési kód 1, akkor lépjen ki a PowerShell szkriptből 0-val a $host.SetShouldExit()
használatával.
$exitCode = (Start-Process -FilePath 'robocopy' -ArgumentList '<option>' -PassThru -Wait).ExitCodeif ($exitCode -eq 1) { $host.SetShouldExit(0)}
gyakori hibák
ha több ezer fájlról van szó, akkor bizonyos problémákkal kell szembenéznie. Itt található a gyakori hibák lebontása, amelyekkel találkoztam
hiba Érvénytelen paraméter
ha hibát lát, amely hibát jelez érvénytelen paraméter, ez általában azt jelenti, hogy megpróbálta valahogy átadni az opciókat a robocopy-nak a szekvenciából. A robocopy érvénytelen paraméter 3 hiba a leggyakoribb, úgy tűnik.
gyakori oka annak, hogy ezt a hibát kapja, amikor megad egy forrás-vagy célkönyvtárat szóközökkel, és elfelejti idézőjelekkel körülvenni.
Robocopy példák
meg lehet építeni a saját húrok robocopy vagy tudod venni, amit mások megtanultak, és használja őket! Ebben a részben kitérek a felhasználási esetekre, hogyan lehet a robocopy-t különféle dolgok végrehajtására használni.
keresse meg a hálózati mappa könyvtárméretét
közreműködő: northendtroooper (Reddit)
> robocopy "\MACHINE\fileshare" c:\dummy /l /xj /e /nfl /ndl /njh /r:0 /mt:64
gyorsan törölje a mappa tartalmát (figyelmen kívül hagyva az almappák engedélyeit)
közreműködő: pizzasteveo (Reddit)
> robocopy c:\dummy c:\foldertodelete /MIR
nagy fájlmigrációk végrehajtása
közreműködő: @Mysnozzberries (Twitter)
ennek a kódrészletnek az a célja, hogy az összes fájl tulajdonjogát visszaadja a rendszergazdáknak. Ezután hozzáadunk egy explicit ACE-t az adminisztrátorok csoportjához, hogy minden objektumot rekurzívan ellenőrizhessünk, annak ellenére, hogy örökséget is beállítunk.
végül egy teljes robocopy másolatot készítünk Dacl-ekkel a rendeltetési helyre a log segítségével. A naplót ezután felül lehet vizsgálni további engedélyezési problémák vagy csak fájlzárak esetén, és egy másik delta szinkronizálás később elvégezhető.
> 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
rekurzívan kényszerítse a rendszergazdák csoportját az összes fájl és könyvtár tulajdonosaként. Lehet ezt megkerülni, de ez a legnehezebb kezes megközelítés, és általában a leggyorsabb.
> takeown /F .\test /R /A /D Y
miután mi vagyunk a tulajdonos, minden objektumhoz új ászot kényszeríthetünk a DACL-be. Ez a rendszergazdák számára teljes ellenőrzést biztosít az öröklődés engedélyezve és rekurzívan az útvonalon keresztül.
ennek az örökléssel történő gyökérbe állítása kiterjedne a környezetre, de ha egy részvénynek teljes irányítással rendelkezik az alkotó tulajdonosa (ami sajnos még a Microsoft ajánlása is olyan dolgokra, mint a fájl felhasználói profil üzletek), a felhasználó letilthatja az öröklést vagy eltávolíthatja az ászokat saját belátása szerint. Tehát a nehéz kéz általában a leggyorsabb javítás.
> icacls .\test /grant "Administrators":(OI)(CI)F /T
miután megváltoztattuk a fájlok többségének Dacl-jét, megpróbáljuk másolni a fájlokat egy új helyre, ami gyakori a fájlmegosztás migrációinál. Ehhez rekurzív módon lemásoljuk az elemeket, és a /SEC
kapcsolóval átmásoljuk az adatokat/attribútumokat/időbélyegeket/Dacl-eket is.
ezután a műveletet teljes útvonalakkal és az összes objektumra (/V
részletes kapcsoló) naplóba rögzítjük, így kijavíthatjuk a hibák <5% – át, amelyek általában az elérési út hosszához vagy a fájlzárhoz kapcsolódnak, és részletesebbek lesznek.
> robocopy .\test .\test2 /E /SEC /FP /V /LOG:.\temp.log
ez egy egyszerű keret a fájlmegosztás migrációjának kezelésére, minimális hatással a felhasználói élményre. Javítja az adatok feletti ellenőrzést is. Ha egy ügyfél erős Adatkezelési gyakorlattal rendelkezik, ahol a tulajdonjogot gyermekmappák szintjén megfelelően kezelik, ez bonyolultabb vitává válik, de a legtöbb ügyfél szerencsésnek tartja, hogy csak öröklési és csoportalapú ászokat használ, tehát ez a leggyakoribb helyzet és javítás, ahonnan indulunk.
Robocopy alternatívák
a Robocopy egy fantasztikus eszköz, de olyan sok más hasonló eszköz is érdekes lehet.
- xxcopy – hasonló parancssori segédprogram rengeteg opcióval.
- Copy-Item PowerShell parancsmag – közel sem olyan kiemelt, de sokkal egyszerűbb.
- TreeSize – GUI és scriptable segédprogram mappainformációk kereséséhez.
összefoglaló
a Robocopy kiváló eszköz nagy fájlok másolására. Akár adatmigrációt végez, akár a mappákat szinkronban tartja, vagy egyszerűen csak gyors módra van szüksége a fájlok pontos másolásához, a robocopy nagyszerű választás.