Перенос NTFS-разрешений с помощью PowerShell

Быстрые ссылки
- Использование PowerShell для переноса разрешений
- Резюме
Введение
При миграции файлов между серверами важно не только перенести сами файлы и папки, но и сохранить привязанные к ним NTFS-разрешения. Каждый файл или папка могут иметь набор записей управления доступом (ACE), формирующих списки управления доступом (ACL). При большом количестве объектов ручная корректировка прав непрактична — поэтому автоматизация через PowerShell экономит время и снижает риск ошибок.
Ключевые термины:
- ACL — список управления доступом; набор ACE, определяющих права на объект.
- ACE — запись управления доступом, описывающая права конкретного пользователя или группы.
Использование PowerShell для переноса разрешений
Вместо непосредственного вызова icacls удобнее воспользоваться обёрткой на PowerShell, которая упрощает экспорт и импорт прав. Сообщество PowerShell уже подготовило модуль NTFSPermissionMigration, доступный в PowerShell Gallery.
Предварительные требования:
- PowerShell 4.0 или новее.
- Доступ к PowerShell Gallery (интернет или локальный репозиторий).
- Права администратора на исходном и целевом серверах для чтения/записи ACL.
- Точная копия файлов на целевом сервере перед восстановлением прав.
Установка модуля:
PS> Find-Module -Name NTFSPermissionMigration | Install-ModuleЭкспорт разрешений с исходного сервера:
PS> Save-Acl -FolderPath \\OLDSERVER\FileShare -SaveFilePath C:\FilePermissions.txtПример выводимых сообщений:
processed file: \\OLDSERVER\FileShare\File1.txt
processed file: \\OLDSERVER\FileShare\File2.exe
Successfully processed X files; Failed processing 0 filesПосле завершения вы получите файл с описанием всех ACL для файлов и папок внутри исходной папки. Этот файл и будет источником для восстановления прав на новом сервере.
Восстановление разрешений на новом сервере (после того, как вы сделали точную копию всех файлов):
PS> Restore-Acl -RestoreToFolderPath \\NEWFILESERVER\FileShare -PermissionFilePath C:\FilePermissions.txtОжидаемый вывод:
Successfully processed XXX files; Failed processing 0 filesПосле этого NTFS-разрешения должны соответствовать исходным.
Советы по успешной миграции
- Всегда выполняйте тестовый прогон на небольшой структуре папок перед массовой миграцией.
- Убедитесь, что SID пользователей и групп доступны в целевом домене или при необходимости подготовьте соответствия SID → учётная запись.
- Проверяйте наследование: если у исходных объектов включено наследование, целевые объекты должны иметь ту же иерархию.
- Для удобства храните файл разрешений рядом с копией данных, но не в том же каталоге, чтобы избежать случайной перезаписи.
Альтернативные подходы и сравнение
- Robocopy
- Подходит для копирования данных и попытки сохранить права на этапе копирования.
- Ключи: /COPYALL, /SEC, /MIR. Robocopy эффективен для больших объёмов данных, но управление сложными сценариями ACL в нём менее прозрачно.
- Icacls
- Встроенный инструмент Windows для экспорта и импорта разрешений.
- Команды типа:
icacls \\OLDSERVER\FileShare /save C:\perms.txt /t
icacls \\NEWFILESERVER\FileShare /restore C:\perms.txt- Icacls универсален, но синтаксис и обработка некоторых ACE может сбивать с толку. Обёртка PowerShell может упростить массовую обработку и логирование.
Когда использовать что:
- Если нужна простая копия вместе с правами — попробуйте robocopy.
- Если нужны гибкие операции экспорта/импорта и обработка ошибок/логирование — модуль PowerShell удобнее.
Когда этот метод не сработает
- Профили пользователей или группы отсутствуют в целевой среде (SIDs не разрешаются).
- Файлы зашифрованы с помощью EFS — перенос EFS требует дополнительных шагов.
- Разрешения применяются на уровне шары (share permissions) — Save-Acl/Restore-Acl работают с NTFS-разрешениями, не с share-level.
- При использовании DFS или специальных файловых систем с расширенными атрибутами могут понадобиться дополнительные инструменты.
Мини-методология миграции (шаблон — 6 шагов)
- Оценка: определите объём, сложность ACL и зависимости учётных записей.
- Тест: выберите небольшой набор данных и прогоните полную процедуру.
- Резервная копия: создайте резервную копию файлов и экспортируйте ACL.
- Копирование данных: выполните точную копию файлов на целевой сервер (robocopy /MIR или другой способ).
- Восстановление прав: примените Restore-Acl и проверьте логи.
- Валидация: выберите контрольные файлы/папки и проверьте права вручную и через скрипты.
Чек-лист перед запуском
- Есть ли у вас админ-доступ на исходный и целевой серверах?
- Проверен доступ к PowerShell Gallery или есть локальная копия модуля?
- Сделана ли точная копия файлов на целевом сервере?
- Согласованы ли учетные записи/группы между доменами (если применяется)?
- Выполнен пробный прогон и верификация результатов?
Критерии приёмки
- Перенесённые файлы имеют идентичный набор NTFS-разрешений (ACE/ACL) по сравнению с исходником.
- Нет незапланированных ошибок при выполнении Restore-Acl.
- Ключевые пользователи/группы имеют ожидаемые права (проверено списком контроля).
Пример решений для ролей
- Администратор файлового сервера: установить модуль, запускать Save-Acl/Restore-Acl, проверять логи.
- Менеджер миграции: планировать окно миграции, организовать тестирование, верифицировать результат.
- Системный аналитик: подготовить матрицу соответствий учётных записей между средами.
Примечания по совместимости и миграции между доменами
- При переносе между разными доменами учётные записи с одинаковыми именами имеют разные SID. Рассмотрите использование миграционных таблиц соответствий или создание учётных записей в целевом домене до применения ACL.
- Для NAS и нестандартных файловых систем уточните, поддерживает ли система восстановление ACL в том же виде.
Резюме
Использование готового модуля PowerShell упрощает перенос NTFS-разрешений и делает процесс воспроизводимым и логируемым. Очередность действий: экспорт ACL → точная копия файлов → восстановление ACL → валидация. Всегда делайте тест и проверяйте соответствие учётных записей между средами.
Важно: этот подход работает с NTFS-разрешениями; для шары, EFS или кросс-доменных сценариев могут понадобиться дополнительные шаги.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента