Articles

Robocopy/MIR switch – spegling filbehörigheter

först publicerad på TECHNET den 31 juli 2008
vissa kunder påpekade vad de anser vara en bugg i Robocopy.
situationen är: Antag att du kopierar dina filer med Robocopy i Windows Server 2003 eller XP. Sedan ändras fil-eller mappbehörigheter (ACL) vissare på källa eller destination. Du vill använda /MIR-omkopplaren för att spegla behörigheterna:
> ROBOCOPY source destination /MIR /SEC
Robocopy misslyckas med att spegla filbehörigheter – men fungerar för mappbehörigheter.
detta beteende är genom design. Robocopy fokuserar på att kopiera bara filer som har ändrats (i storlek eller ändrat datum, som standard). Om en fil ser ut som den har ändrats kopierar Robocopy sina data och, om du också angav kopieringssäkerhet, kopierar NTFS ACL från källa till mål efter kopiering av data. Om en fil ser ut som om den inte har ändrats, hoppar Robocopy som standard över den och kopierar ingenting för filen, inte ens dess säkerhetsinformation. när jag skrev ”security copy” – delen av Robocopy den 22 maj 1997 valde jag att göra detta av prestandaskäl, för att hålla Robocopy-tiderna för stora träd nere. Detta var ett adekvat genomförande för de flesta människors behov vid den tiden. En annan anledning till att jag valde att göra saker som jag gjorde är att inställningen av säkerhet på kataloger är tillräcklig för de flesta. Att ställa in säkerhet på fil-för-fil-basis är säkert ett mer granulärt tillvägagångssätt, men medför en större underhållskostnad, kanske för mycket för många användare. därför är lösningen listad som en lösning publicerad av Martin Zugec (MVP) exakt vad som behöver göras i denna situation, och detta beteende förväntas:
>ROBOCOPY /Mir<Source><mål>
>ROBOCOPY /e /copy:S /IS /IT <Source><Target>
det första Robocopy-kommandot ovan kopierar data och säkerhet för filer som har uppdaterats, och det andra Robocopy-kommandot uppdateras filsäkerhet för alla filer, utan att kopiera några fildata.
om du använder en Resource Kit version av Robocopy, och vill hålla säkerheten synkroniseras mellan två träd där data är ganska statisk, men säkerheten uppdateras då och då. Faktum är att avsnittet” kopiera NTFS-säkerhetsinformation ” i Robocopy.doc (from the Resource Kits) anger:
”för att uppdatera säkerhetsinformation för befintliga målfiler och kataloger utan att kopiera fildata, använd växeln /IS tillsammans med växeln /COPY utan d-flaggan. Till exempel /IS / COPY:SOU skulle uppdatera all säkerhetsinformation för alla valda filer, utan att kopiera någon fildata.”
saker har gått lite under de senaste 11 åren, säkerhetsmässigt, så jag ändrade hur saker och ting fungerar på detta område något för den version av Robocopy som hamnade i Vista, i att om du anger /SECFIX på kommandoraden, Robocopy kommer att kopiera säkerhet för hoppade filer som finns i både källan och målet träd.
så, för att hålla två träd synkroniserade, inklusive deras säkerhet, med Vista Robocopy, kan du använda följande som ditt vanliga Robocopy-kommando:
> ROBOCOPY <källa><mål> /MIR /SEC /SECFIX
/mir kommer att replikera data och säkerhet (som /SEC anges) för ändrade filer, och /SECFIX uppdaterar bara säkerheten för oförändrade filer. Lägg till / V på kommandoraden om du vill se vilka filer som har sin säkerhet ”fast” utan att deras data kopieras.

Kevin Allen