Я пытаюсь найти лучший способ перенести FTP-сервер со старого оборудования на новое. Сервер находится в домене, но не все пользователи, настроенные на сервере (для использования FTP), являются учетными записями домена, некоторые являются локальными для сервера.
Например, у меня есть оба пользователя:
домен \ имя пользователя имя машины \ имя пользователя
Имя новой машины будет другим.
Поэтому мне нужно скопировать все файлы с разрешениями со старого сервера на новый. Затем мне нужно преобразовать все учетные записи пользователей со старого сервера на новый сервер. Затем мне нужно изменить права доступа к файлам, чтобы они больше не были oldserver \ username, а newserver \ username.
Можно ли этого добиться с помощью CALCS? Есть ли простой способ, который, возможно, мне не хватает?
Самый простой способ - использовать программное обеспечение IIS Sites Transfer или IIS Easy Migration Tool из http://www.hoststools.com Есть бесплатные версии. Эти инструменты помогают переносить FTP-сайты, учетные записи FTP с разрешениями ACL.
«Простого» решения этой проблемы не существует - ACL для локальных учетных записей теряются при перемещении на новый сервер, потому что SID, связанный с этим пользователем, больше не отображается на действительную учетную запись пользователя.
Однако есть способ сделать это, не уничтожая вашу систему. Я собираюсь пройти через то, что я считаю самым простым, с использованием Powershell (с WMI), icacls и некоторого редактирования текста.
Как на старом, так и на новом сервере получите список всех сопоставлений имени пользователя и SID. Для этого откройте Powershell и выполните команду (на каждом сервере):
get-wmiobject win32_useraccount | где {$ _. localaccount} | экспорт-csv serverusers.csv
Теперь вам нужно выполнить некоторую ручную работу - вам нужно взять обе электронные таблицы и сопоставить SIDS от старых пользователей сервера к новым. Создайте это в новом CSV (c:\sids.csv
) с форматом примерно так: oldusername,newusername,oldsid,newsid
На старом сервере сохраните ACL для файлов, которые вам нужны с помощью icacls. Например, если ваши файлы находятся в папке с именем c:\ftproot\
вы бы зашли в эту папку и сделали:
icacls * / сохранить c: \ acls.bak / T
Теперь вам нужно выполнить поиск и заменить в файле acls.bak - для каждой строки в CSV найдите все экземпляры oldsid и замените их на newsid. Вот сценарий PowerShell для этого:
$ file = get-content C: \ acls.bak -кодирование юникода
$ csv = импорт-csv c: \ sids.csv
foreach ($ row в $ csv) {
$ file = $ file-заменить $ row.oldsid, $ row.newsid
}
set-content c: \ acls2.bak $ file - кодирование Unicode
Скопируйте все файлы на новый сервер
Восстановите ACL для файлов на новом сервере (опять же, предполагая, что это находится в c: \ ftproot):
icacls. / восстановить c: \ acls2.bak / T
И это должно сделать это - теперь файлы должны иметь разрешения, установленные с использованием новых локальных учетных записей пользователей.
Восстановите из резервной копии на новом оборудовании, тогда вы получите локальных пользователей и все файлы. Затем вы можете просто изменить имя сервера на новое.