В Windows список опубликованных сетевых папок (и общих принтеров), вместе с их настройками и разрешениями хранится в ветке реестра HKLMSYSTEMCurrentControlSetServicesLanmanServerShares. Служба LanManServer при запуске читает содержимое этой ветки и публикует все перечисленные там сетевые папки. Эту особенность можно использовать, когда вам нужно перенести (мигрировать) общие сетевые папки с одного компьютера (сервера) Windows на другой.
Просмотреть список общих сетевых папок в Windows можно с помощью команд:
net share
Или

В данном случае у нас на компьютере, кроме стандартных общих административных шар (и двух принтеров), опубликованы 3 сетевые папки (Docs, ISO, Scripts).
Теперь откроем редактор реестра и перейдем в ветку HKLMSYSTEMCurrentControlSetServicesLanmanServerShares .

Здесь хранятся настройки и разрешения всех опубликованных папок. Если открыть содержание параметра реестра с именем сетевой папки, можно увидеть настраиваемые параметры:
- CATimeout – таймаут ожидания подключения клиента при сбое
- CSCFlags – разрешено ли офлайн кэширование файлов (автономные файлы)
- MaxUses – максимальное число одновременных сетевых подключений
- Path – локальный путь к папке содержимое, которой публикуется по сети
- Permissions – права доступа к сетевой папке —
Share Permissions(не путать с NTFS разрешениями) - ShareName – имя сетевой папки
- Type – тип общего ресурса (
0для сетевых папок)
Во вложенной ветке HKLMCurrentControlSetServicesLanmanServerSharesSecurity для каждой сетевой папки хранится настройки безопасности, определяющие кто и какие операции может выполнять с сетевыми папками (используется формат SECURITY_DESCRIPTOR, который включает DACL и SIDы учетных записей/групп)

Можно вывеси назначенные права (дескрипторы безопасности) сетевой папки с помощью PowerShell:
Get-SmbShareAccess docs

Таким образом, если вы хотите перенести список сетевых папок с настройками на другой компьютер, нужно экспортировать содержимое этой ветки реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerShares в REG файл.

Затем откройте REG файл в любом текстовом редакторе и удалите из него записи для всех административных папок, принтеров и шар, которые вы не хотите переносить (в нашем примере мы оставили только папки ISO и Docs).

Сохраните REG файл и скопируйте его на компьютер, на котором вы хотите создать аналогичные сетевые папки.
- Если вы выполняете миграцию файлового сервера с одной виртуальной машины, на другую, достаточно будет переподключить к новой ВМ старый диск с файлами и назначить ту же самую букву диска
- Для копирования всех файлов и каталогов между отдельными серверами вместе с NTFS разрешениями можно использовать встроенную утилиту robocopy. Следующая команда обеспечивает копирование файлов, папок с разрешениями NTFS и настройками аудита файлов:
robocopy f:docs \srv2f$docs /MIR /COPYALL /B /E /Z /R:2 /W:5 /LOG:f:docs_copy.log
- Настроить второй сервер как копию через DFS (более сложный путь)
Дважды щелкните по REG файлу, чтобы импортировать его настройки на целевом компьютере.

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

Чтобы заставить службу LanmanServer перечитать список сетевых папок из реестра и опубликовать импортированные вами шары, нужно создать и удалить любую сетевую папку на компьютере, или просто перезапустить службу:
Restart-Service server

Проверьте, что на компьютере появились перенесенные вами общие папки (если указанные в реестре пути к папкам фактически не существуют на новом компьютере, такие сетевые папки опубликованы не будут).

Также вы можете использовать эту методику для резервного копирования и восстановления ресурсов общих сетевых шар на компьютере.
Сохранить текущие настройки общих папок в REG файл:
reg export HKLMSYSTEMCurrentControlSetServicesLanmanServerShares %UserProfile%DocumentsMyShares.reg
Восстановить список сетевых папок из резервной копии:
reg import %UserProfile%DocumentsMyShares.reg

Добавить комментарий