Robocopy /mir Switch – mirroring file permissions
Po raz pierwszy opublikowany w TECHNET 31 lipca 2008
Niektórzy klienci wskazali, co ich zdaniem jest błędem w Robocopy.
sytuacja jest taka: Załóżmy, że kopiujesz pliki za pomocą Robocopy w systemie Windows Server 2003 lub XP. Następnie uprawnienia do plików lub folderów (ACL) są zmieniane w zależności od źródła lub miejsca docelowego. Chcesz użyć przełącznika /MIR, aby odzwierciedlić uprawnienia:
> ROBOCOPY source destination /mir /SEC
takie zachowanie jest z założenia. Robocopy skupia się na kopiowaniu tylko tych plików, które uległy zmianie (domyślnie rozmiar lub data modyfikacji). Jeśli plik wygląda na zmieniony, Robocopy kopiuje jego Dane i, jeśli określono również bezpieczeństwo kopiowania, kopiuje ACL NTFS ze źródła do celu po skopiowaniu danych. Jeśli plik wygląda, jakby się nie zmienił, Robocopy domyślnie go pomija i nie kopiuje niczego dla pliku, nawet jego informacji zabezpieczających.
kiedy 22 maja 1997 r.napisałem część „security copy” Robocopy, zdecydowałem się to zrobić ze względu na wydajność, aby ograniczyć czasy Robocopy dla dużych drzew. Było to odpowiednie wdrożenie dla potrzeb większości ludzi w tym czasie. Ponadto, innym powodem, dla którego zdecydowałem się robić rzeczy tak, jak zrobiłem, jest to, że ustawienie bezpieczeństwa w katalogach jest wystarczające dla większości ludzi. Ustawienie zabezpieczeń na podstawie pliku PO pliku jest z pewnością bardziej szczegółowym podejściem, ale wiąże się z większym obciążeniem konserwacyjnym, być może zbyt dużym dla wielu użytkowników.
dlatego rozwiązanie wymienione jako obejście opublikowane przez Martina ZUGCA (MVP) jest dokładnie tym, co należy zrobić w tej sytuacji i oczekuje się takiego zachowania:
> ROBOCOPY /mir <źródło><target>
> ROBOCOPY /e /copy:S /IS /IT <źródło><cel>
pierwsze powyższe polecenie Robocopy skopiuje dane i zabezpieczenia dla plików, które zostały zaktualizowane, a drugie polecenie Robocopy odświeży bezpieczeństwo plików dla wszystkich plików, bez kopiowania danych plików.
Jeśli używasz wersji Resource Kit Robocopy i chcesz zachować synchronizację zabezpieczeń między dwoma drzewami, w których dane są dość statyczne, ale bezpieczeństwo jest aktualizowane od czasu do czasu. W rzeczywistości sekcja „kopiowanie informacji bezpieczeństwa NTFS” w Robocopy.doc (z Resource Kits) stwierdza:
” Aby odświeżyć informacje bezpieczeństwa dla istniejących plików docelowych i katalogów bez kopiowania danych, użyj przełącznika / IS razem z przełącznikiem / COPY bez flagi D. Na przykład /IS / COPY:SOU odświeży wszystkie informacje bezpieczeństwa dla wszystkich wybranych plików, bez kopiowania żadnych danych.”
w ciągu ostatnich 11 lat sprawy trochę się zmieniły, pod względem bezpieczeństwa, więc zmieniłem nieco sposób działania w tym obszarze dla wersji Robocopy, która skończyła się w Vista, ponieważ jeśli podasz /SECFIX w wierszu poleceń, Robocopy skopiuje zabezpieczenia pominiętych plików, które istnieją zarówno w drzewie źródłowym, jak i docelowym.
Tak więc, aby zachować synchronizację dwóch drzew, w tym ich bezpieczeństwa, używając Robocopy Visty, możesz użyć następującego polecenia jako zwykłego Robocopy:
> ROBOCOPY <źródło><target> /mir /SEC /SECFIX
/mir replikuje dane i zabezpieczenia (jak określono w /SEC) dla zmienionych plików, a /secfix zaktualizuje tylko zabezpieczenia dla niezmienionych plików. Dodaj /V do wiersza poleceń, jeśli chcesz zobaczyć, które pliki mają „stałe” zabezpieczenia bez kopiowania danych.
Kevin Allen