Синхронизация каталогов windows server

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Админу на заметку — 21. Используем PowerShell для синхронизации каталогов

Админу на заметку — 21. Используем PowerShell для синхронизации каталогов

В арсенале каждого системного администратора со временем накапливаются удобные инструменты, которые значительно облегчают выполнение ряда повседневных задач. Чаще всего это небольшие, но удобные утилиты или скрипты. Мы постоянно знакомим наших читателей с различными инструментами из нашей коллекции и на этот раз речь пойдет о простом, но достаточно функциональном PowerShell-скрипте для односторонней синхронизации каталогов.

Синхронизация каталогов — довольно часто встречающаяся задача, когда необходимо поддерживать соответствие содержимого в нескольких местах. От копирования данная операция выгодно отличается тем, что позволяет передавать только новые или измененные объекты, что позволяет существенно сократить трафик и время выполнения задачи. В Linux системах для этой цели есть мощная и удобная утилита rsync, а в Windows — robocopy, которые давно зарекомендовали себя и широко используются системными администраторами.

Но не так давно мы нашли один интересный PowerShell-скрипт который может послужить удобной заменой robocopy для простых задач автоматизации. Скрипт написан энтузиастом и выложен на сайте автора. Также архив со скриптом можно скачать по прямой ссылке:

Внутри находится собственно скрипт Sync-Folder.ps1, который следует разместить в любом удобном месте.

Что интересного может предложить нам этот скрипт? На наш взгляд, основное его достоинство — это поддержка конфигурационных файлов в формате XML, в которых мы можем описать сразу несколько заданий с параметрами, которые будут выполнены последовательно. Кстати, robocopy тоже позволяет создавать файлы заданий, но один файл может содержать только одно задание и предназначен прежде всего для того, чтобы каждый раз не вводить все опции.

Давайте распакуем наш скрипт в произвольную папку, скажем C:\ADM и разместим там же файл конфигурации MySyncJob.xml. Будучи запущен без параметров скрипт ищет рядом с собой файл Sync-FolderConfiguration.xml и выполняет записанное в нем задание, это может быть удобно, но на наш взгляд удобнее давать конфигурационным файлам осмысленные наименования, что облегчит в последующем поиск нужных заданий, а также убережет от возможного нежелательного выполнения задания в случае случайного запуска скрипта. Все свои действия скрипт записывает в файл лога, который располагается в своей рабочей директории.

Откроем блокнотом XML-файл и внесем в него следующее содержимое (пример взят с сайта автора скрипта):

Начинается файл конфигурации с тега , который следует обязательно закрыть в конце. Задания синхронизации находятся внутри тегов , обязательными являются два тега — путь к источнику данных и — место назначения. Можно указывать как локальные, так и сетевые расположения.

Тег позволяет задать некоторую маску для копирования, например, только txt-файлы. Обратите внимание, что это именно маска, а не перечень расширений и т.п. Допускается использование подстановочных выражений, но фильтр может быть только один. Например, такая конструкция работать не будет, хотя ошибкой не является:

Использование в пределах одного задания двух тегов приведет к синтаксической ошибке, поэтому если вам нужно копировать только файлы двух типов, скажем PNG и JPG, то следует создать два задания с одинаковыми параметрами, но разными фильтрами.

Заданное без подстановочных знаков выражение будет восприниматься буквально. Если вы хотите синхронизировать все файлы, содержащие в имени строку old, то следует указать:

отберет все файлы, которые начинаются с old, т.е. файл oldfile.txt будет скопирован, а fileold.txt — нет, в то время как с предыдущим фильтром были бы скопированы оба.

Кроме фильтра можно задавать исключения, которых может быть много и для их описания используется тег , внутри которого располагается список исключений, каждое из которых оформляется тегами . В приведенном примере будут пропущены все файлы txt имеющие в имени строку p234.

После того, как файл конфигурации создан самое время проверить его в деле, запустим консоль PowerShell и запустим наш скрипт, указав ему пусть к конфигурационному файлу:

Читайте также:  C windows syswow64 inetsrv w3wp exe

По результатам работы скрипта вы получите короткий отчет, более подробную информацию можно почерпнуть из лога, который очень хорошо читается и предоставляет исчерпывающую информацию, откуда и куда копируем, какой фильтр, какие исключения и какие именно действия были предприняты.

Если вы отлаживаете сложный сценарий, то столь подробный лог окажется очень к месту, также можно включить интерактивный вывод результатов в консоль, используя ключ -Verbose:

Если необходимо вызывать скрипт из командной строки или пакетного файла, то следует использовать следующую конструкцию:

В целях безопасности PowerShell-скрипты могут исполняться только интерактивно, т.е. сначала нужно запустить оболочку PowerShell, а затем в ней вызвать скрипт. В нашем случае сначала запускается оболочка, которой передается нужная команда на исполнение скрипта, аналогичная тому, как это было бы сделано интерактивно.

Существует также другой метод, когда файл скрипта передается оболочке в качестве аргумента, он достаточно широко распространен в различных материалах в сети, но не является рекомендуемым, так как в этом случае некоторые механизмы скриптов могут работать некорректно. В нашем случае будет неправильно определена автоматическая переменная

В итоге скрипт попытается записать файл лога не рядом с собой, а в корень диска C:, что обычно запрещено политиками безопасности и приведет к ошибке.

Чтобы добавить наш скрипт в планировщик заданий следует поступить аналогичным образом, создадим новую задачу, установим условия ее выполнения и на закладке Действия в качестве действия выберем Запуск программы, в поле Программа или сценарий укажем

а в поле Добавить аргументы внесем команду на исполнение скрипта, также как мы это делали в командной строке:

Как видим, данный скрипт не делает ничего такого, что не умела бы robocopy, но благодаря возможности использовать конфигурационные файлы позволяет упростить многие задачи по синхронизации данных. В один конфигурационный файл можно добавить нужное число заданий, а простой и структурированный синтаксис позволяет легко читать данные файлы. Добавьте к этому подробные и понятные логи.

Кроме того, использование для автоматизации PowerShell скриптов гораздо более безопасно, чем пакетных файлов, так как это исключает возможность ошибочного или случайного запуска просто по двойному клику.

Надеемся, что данный материал окажется вам полезен и указанный скрипт займет достойное место в применяемых вами инструментах.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

IT миниблог

О том что нужно не потерять

Windows: синхронизация файлов и папок по сети или резервное копирование

Итак, у нас есть задача: синхронизировать некоторый набор папок с лежащими в них файлами. Причем задача стоит именно так:
– Синхронизация должна поддерживать передачу файлов по сети – т.е., например, с одного компьютера на другой;
– Синхронизация должна уметь копировать только новые файлы, не передавая заново уже существующие;

Из своей практики я могу предложить 2 пути: ROBOCOPY и XCOPY.

Путь первый – ROBOCOPY

Данная утилита идет из коробки в Windows 7 и Server 2008. На более старых ОС ее может не оказаться (например, на XP и Server 2003 из коробки ее точно нет). В таком случае можно скачать и установить Windows Server 2003 Resource Kit Tools: вот отсюда. В этот тулкит, кроме всего прочего, входит наш инструмент.

Итак, вот пример использования данной утилиты:

В данном примере:
Мы копируем папку “исходная папка”, находящуюся на локальном диске D:
Мы копируем эту папку на компьютер \\192.168.0.1 в папку “целевая папка”
/E : Мы копируем все подпапки и файлы
/Z : Включаем поддержку докачки (на случай обрыва связи)
/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)
/DCOPY:T : Копируем время создания папок
/M : Копируем только файлы с установленным атрибутом “A – Архивный” и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.
/R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем “не удалось” срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 миллионы, т.е. бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.
/W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.

Заметка. Очень рекомендую задавать вручную параметры /R и /W , иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.

Много больше опций Вы можете почерпнуть из хелпа:
robocopy /?

Читайте также:  La network manager mac os

Чем эта утилита хороша по сравнению с XCOPY:

  • Она умеет работать с файлами, длина имени которых больше 256 символов
  • Она умеет делать зеркало, т.е. чистую синхронизацию, при которой файлы, удаленные в папке-источнике, будут удалены и в папке назначения.

Для того, чтобы зеркалировать папки (т.е. удалять в папке назначения все файлы, которые более не существуют в папке-источнике) – нужно добавить ключ “/PURGE”:

А вот несколько примеров запуска этой утилиты:

Скопировать файлы, измененные за последние 5 дней (исключая сегодня):

Переместить все файлы (не копировать):

Копировать только указанные файлы по шаблону:

Путь второй – XCOPY

Данная утилита более старая, чем ROBOCOPY, и имеет меньше возможностей. Так, она не поддерживает пути с длинной имени более 256 символов (как это не умело делать FAT) и она не умеет делать зеркалирование. Более того, у нее отмечаются проблемы с копированием прав доступа ACL NTFS, как минимум – при копировании файлов на Samba-сервер.

Вот пример ее запуска:

  • Копируем все файлы из директории “исходная папка”, находящейся на диске “D:”
  • Копируем все файлы на компьютер \\192.168.0.1 в папку “целевая папка”
  • /D : Копируем только измененные файлы (по дате изменения)
  • /E : Копируем подкаталоги, включая пустые
  • /C : Игнорируем ошибки, если они возникли во время копирования, и продолжаем копирование
  • /I : Целевой объект – это папка
  • /H : Копировать скрытые и системные файлы
  • /R : Перезаписываем файлы, предназначенные только для чтения
  • /K : Копируем атрибуты, такие, как “только для чтения”, “архивный”, “системный”, “скрытый”
  • /Y : Не спрашивать подтверждение на перезапись файлов
  • /F : Вывод полных имен исходных и целевых файлов (иначе – только имена файлов, без папок)
  • /O : Если установлен – копировать так-же ACL NTFS атрибуты доступа

По моему личному опыту ROBOCOPY лучше справляется со своей работой, в особенности, если Вы копируете файлы файловой помойки, куда лазят несколько сотен людей – бардака там бывает достаточно и длинна файловых имен с путем нередко больше 256 символов.

Windows: синхронизация файлов и папок по сети или резервное копирование : 1 комментарий

70 лет стаж 5.5 года. Статья полезная, но автор её писал больше для себя, чем для нас.. Кстати из своего опыта и нескольких предупреждений от пк – robocopy требует осторожности… List

Настройка рабочих папок (Work Folders) в Windows Server 2016

Технология рабочих папок (Work Folders) позволяет организовать удаленный доступ пользователей к своим файлам на внутреннем файловом сервере компании и работать с ними в офлайн режиме с любого устройства (ноутбук, планшет или смартфон). При следующем подключения к сети все изменения в файлах на устройстве пользователя синхронизируются с корпоративным файловым сервером. В этой статье мы покажем, как установить и настроить функционал Work Folders на базе файлового сервера Windows Server 2016 и клиента с Windows 10 .

В качестве хранилища файлов может использоваться файловый сервер с Windows Server 2012 R2, в качестве клиентов все версии Windows, начиная с Windows 7, а также устройства с Android 4.4 или iOS 8 и выше (клиент Work Folders для этих устройств доступен в Google Play и App Store соответственно). С помощью политик безопасности можно потребовать от клиентов Work Folders обязательное хранение содержимого рабочих папок в зашифрованном виде, что гарантирует защиту данных даже в случае утери/кражи устройства.

Установка и настройка роли Work Folders в Windows Server 2016

Роль Work Folders в Windows Server 2016 можно установить из графического интерфейса Server Manager или с помощью PowerShell.

В первом случае нужно в Server Manager внутри роли File and Storage Services выбрать службу Work Folders (к установке будут автоматически добавлены требуемые компоненты IIS Hostable Web Core).

Установка роли Work Folders с помощью PowerShell выполняется такой командой:

Для предоставления доступа к рабочим папкам в Active Directory нужно создать группы безопасности, в которые нужно включить пользователей, которым будет разрешено синхронизировать свои устройства с рабочими папками на файловом сервере (для более быстрой работы службы Work Folders за счет уменьшения количества запросов к AD, Microsoft рекомендует помещать в данные группы только учетные записи пользователей, но не другие группы безопасности).

Следующий этап – создание на файловом сервере сетевых каталогов, с которыми будут синхронизироваться пользователи. Эти каталоги можно создать из консоли Server Manager или PowerShell.

Откройте Server Manager, выберите роль File and Storage Services -> Work Folders. Выберите меню Tasks -> New Sync Share.

Читайте также:  Linux ubuntu and itunes

Далее нужно указать каталог, к которому будет предоставляться доступ. В нашем примере это папка C:\finance.

Далее нужно выбрать какая структура пользовательских папок будет использоваться. Папки могут называться по учетной записи пользователя (alias), либо в формате user@domain.

Затем указывается имя шары.

Далее нужно указать группы доступа, которым нужно предоставить доступ к данному каталогу.

Далее указываются политики безопасности рабочих папок, которые должны применяться на клиенте. Имеются две политики:

  • Encrypt Work Folders – обязательное шифрование данных в каталоге Work Folder на клиенте с помощью BitLocker
  • Automatically lock screen and require a password– автоматическая блокировка экрана через 15 минут неактивности устройства и защита его паролем (не менее 6 символов)

На этом настройка новой рабочей папки закончена.

Те же самые действия по созданию новой папки синхронизации можно выполнить с помощью командлета New-SyncShare. К примеру, следующая команда создаст новую папку синхронизации и предоставит доступ к ней группе

New-SyncShare «Sales» C:\sales –User «Sales_Users_Remote_WorkFolder»

Для доступа к рабочим файлам по защищенному протоколу HTTPS, к веб сайту IIS, который обслуживает работу папок Work Folder нужно привязать валидный SSL сертификат.

Проще всего воспользоваться бесплатным SSL сертификатом от Let’s Encrypt. Процесс выпуска и привязки такого сертификата в IIS описан в статье Cертификат Let’s Encrypt для Windows(IIS).

Настройка клиента Work Folders

В данном примере в качестве клиента Work Folders используется устройство с Windows 10. Настройка производится через имеющийся апплет в панели управления Control Panel -> System and Security -> Work Folders (этот пункт отсутствует в серверных редакциях).

Чтобы приступить к настройке, нажмите кнопку Set up Work Folders.

Далее нужно указать Email пользователя или URL адрес сервера Work Folders.

По умолчанию, клиент подключается к серверу по защищенному HTTPS протоколу. В тестовой среде это требование можно отменить, выполнив на клиенте команду:

Reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WorkFolders /v AllowUnsecureConnection /t REG_DWORD /d 1

Для доступа к данным нужно авторизоваться и подтвердить согласие с политиками безопасности, которые будут применены к клиенту.

На Windows клиентах рабочие файлы по умолчанию хранятся в профиле пользователя в каталоге %USERPROFILE%\Work Folders и их размер не может превышать 10 Гб.

После подключения клиента к серверу, создается каталог Work Folders. Если файлы в рабочих папках не изменились, клиент каждые 10 минут синхронизируется с файловым сервером. Синхронизация измененных файлов выполняет сразу. Кроме того, при наличии изменений сервер автоматически оповещает другие клиенты о необходимости обновить свои данные с центрального сервера (таким образом, изменения должны максимально быстро появиться на всех подключенных устройствах).

Статус синхронизации, наличие ошибок, размер свободного места на сервере можно посмотреть в том же элементе панели управления.

Чтобы проверить работу синхронизации создайте в папке Work Folders новый каталог, а затем в контекстном меню выберите пункт Sync now.

Через некоторое время данный каталог должен появится на сервере.

Настройка клиента Work Folders групповыми политиками Windows

Для автоматической настройки Work Folders можно использовать две специализированные групповые политики в разделе User Configuration -> Policies -> Administrative Templates -> Windows Components -> WorkFolders:

  • Specify Work Folders Settings – в ней можно указать URL адрес сервера Work Folders
  • Force automatic setup for all users – инициирует автоматическую настройку клинета

Ошибка синхронизации Work Folders 0x80c80317

В тествой конфигурации столкулся с тем, что при синхронизации файлов на клиенте возникает ошибка:

В логе сервера при этом содержатся такие записи:

Данные ошибки свидетельствуют о наличии проблемы в механизме синхронизации. В этом случае для пользователя нужно выполнить команды

Repair-SyncShare -name Finance -user Domain\user1
Get-SyncUserStatus -syncshare Finance -user Domain\user1

Как правило, это решает проблему поломанной синхронизации.

Заключение

Итак, мы рассмотрели, как настроить и пользоваться функцией Work Folders в Windows Server 2016. Данная технология позволяет пользователям удаленно работать с корпоративными файлами практически на любом устройстве, причем можно обеспечить адекватный уровень защиты данных от компрометации с помощью шифрования на стороне клиентского устройства. Конечно, этому решению далеко до удобства и гибкости облачных хранилищ Dropbox или OneDrive, но тут главный аспект заключается в простоте настройки и хранении данные внутри компании, а не в стороннем облаке. Дополнительно с Work Folders можно использовать такие технологии, как возможность управления квотами и типами файлов с помощью FSRM, поддержка файловых кластеров, управление доступом к данным с помощью Dynamic Access Control и File Classification Infrastructure.

Оцените статью