Синхронізація папок і прав NTFS за допомогою robocopy

У даній статті спробую описати своє рішення такої досить поширеної завдання, як Синхронізація вмісту двох папок, розташованих на різних серверах. Припустимо, у вас є 2 сервера: buh1 і buh2, в кінці дня всі змінені файли повинні копіюватися з одного сервера на інший, крім того все права доступу NTFS повинні залишитися тими ж самими, що і у вихідних файлів.

Моє рішення опираємося на використанні утиліти robocopy. Як я вже писав її можна використовувати для організації системи резервного копіювання і синхронізації файлів.

Спочатку необхідно переконатися, що на обох серверах програма robocopy.exe знаходиться по одному і тому ж шляху (зазвичай це каталог C: \ Windows \ system32).

Для здійснення схеми синхронізації каталогів, на першому кроці ми мапім (диск Z :) на перший сервер папку з іншого файлового сервера (попередньо необхідно переконатися, що буква диска не зайнята). Далі викликаємо robocopy, яка здійснює синхронізацію файлів. Параметр команди "/ sec" - говорить про те, що необхідно копіювати і права доступу NTFS на файли. Крім того, скрипт створює лог, який можна використовувати для подальшого розбору польотів.

Скрипт виглядає наступним чином:

net use z: / delete net use z: \\ buh2 \ data robocopy.exe C: \ data \ z: \ / sec / S / XO / R: 3 / W: 5 / LOG: C: \ Script \ LOGS \ sync.txt

Залишилося створити bat файл і нове завдання в планувальнику Windows.

Ось і все, так просто і швидко без використання сторонніх утиліт (адже в Windows 2008 Server вже включена за замовчуванням утиліта robocopy), ми реалізували систему синхронізації двох папок зі збереженням прав доступу NTFS.