Перенос папок с сервера на сервер без потери разрешений
Дано: Сервер, на котором есть n-ное количество расшаренных папок. На папки действуют как разрешения на доступ, так и разрешения на фаловую систему.
Задача: Перенести папки на другой сервер, при этом сетевые имена и разрешения папок оставить без изменений.
Решение:
- Использование двух программ из Microsoft® Windows® 2000 Resource Kit и не много строчек в бат-нике
- Использовать утилиту - Microsoft File Server Migration Toolkit 1.1. Подробно тут
Нужны две программы:
- robocopy.exe - Robust File Copy for Windows NT. Это мощна утилита для репликации файлов, создает идентичную копию папки и\или структуры папок на одном компьютере или на сетевых компьютерах, причем есть возможность копирования и NTFS разрешений безопастности. Можно использовать даже как инструмент зеркалирования файлов. Очень подробно написано в прилагаемом в Resourse Kit файле помощи - Robocopy.doc
- permcopy.exe - Утилита для копирования разрешений (ACL) с одной сетевой папки на другую.
Итак, для примера, назовем наш исходный сервер - S-server, сервер назначения - D-server.
На сервере S-server есть зашареные папки -
- Сетевое имя - Folder1, Путь на сервере - D:\Shares\Folder1
- Сетевое имя - РусПапка, Путь на сервере - D:\Shares\RusFolder
На сервере D-server наши папки мы положим в созданную на диске С: папку _Shares, т.е. путь будет C:\_Shares
Пишем Bat файлик с таким содержимым:
"robocopy.exe" \\S-server\d$\Shares\folder1 \\D-server\c$\_shares\Folder1 /E /Z /SEC /R:1 /LOG+:logmigrate.txt
net share Folder1="C:\_shares\Folder1"
"permcopy.exe" \\S-server Folder1 \\D-Server\Folder1
"robocopy.exe" \\S-server\d$\Shares\RusFolder\\D-server\c$\_shares\RusFolder /E /Z /SEC /R:1 /LOG+:logmigrate.txt
net share РусПапка="C:\_shares\RusFolder"
"permcopy.exe" \\S-server РусПапка \\D-Server\РусПапка
Теперь с пояснением:
"robocopy.exe" \\S-server\d$\Shares\folder1(Путь исходной папки) \\D-server\c$\_shares\Folder1(Путь к папке назначения, если такой нет будет создана) /E(копировать подпапки включая пустые) /Z(При сбое продолжать копировать с места разъединения) /SEC(Указание копировать NTFS разрешения) /R:1(количество попыток копирования, если произошел какой то сбой) /LOG+:logmigrate.txt(дописывание к логфайлу)
net share Folder1="C:\_shares\Folder1" - Создание сетевой папки Folder1, у которой физический путь на диске C:\_shares\Folder1 с разрешениями по умолчанию (Все - на чтение)
"permcopy.exe" \\S-server Folder1(Папка источник) \\D-Server\Folder1(Папка назначения) - Копирование разрешений (ACL)
Запускать Bat- файл нужно на сервере назначения в нашем случае на D-server, предварительно положив все файлы в одну папку.
Конечно, это не самый автоматизированный способ, если посидеть немного, подумать то можно доделать, т.е. получать список папок с сервера автоматически, пути к папкам, но нужно будет уже немного программить(скорее всего можно обойтись просто используя WMI), а у меня в тот момент, когда это нужно было, не было на это времени.
Ну, а когда поставленная задача сделана, тогда уже тем более :-)))
- Метки:
- Добавить комментарий
- 2323 просмотра
Последние комментарии
1 день 11 часов назад
1 день 15 часов назад
2 дня 2 часа назад
3 дня 2 часа назад
3 дня 10 часов назад
3 дня 10 часов назад
3 дня 14 часов назад
3 дня 14 часов назад
3 дня 14 часов назад
3 дня 17 часов назад