我试图找出从旧硬件迁移到新硬件的最佳方式。 服务器在一个域上,但并不是所有在服务器上设置的用户(使用FTP)都是域帐户,有些是服务器本地的。
例如,我有用户两种方式:
域\用户名机器名\用户名
新的机器名称会有所不同。
所以我需要将具有权限的所有文件从旧服务器复制到新服务器。 然后,我需要将所有用户帐户从旧服务器转换到新的服务器。 然后,我需要更改文件权限,以便它们不再是oldserver \ username,而是newserver \ username。
这可以用CALCS完成吗? 有没有简单的方法,也许我失踪了?
这个问题没有“简单”的解决scheme – 移动到新服务器时,本地帐户的ACL将丢失,因为与该用户关联的SID不再映射到有效的用户帐户。
有一种方法可以做到这一点,而不必消灭你的系统。 我将通过我认为是最简单的方法,使用Powershell(与WMI),icacls和一些文本编辑。
在旧服务器和新服务器上,获取所有用户名到SID映射的列表。 为此,打开Powershell并运行命令(在每个服务器上):
get-wmiobject win32_useraccount | 其中{$ _。localaccount} | export-csv serverusers.csv
你现在有一些手工的工作要做 – 你需要把这两个电子表格,并从旧的服务器用户映射到新的服务器用户。 创build一个新的CSV( c:\sids.csv )这种格式是这样的: oldusername,newusername,oldsid,newsid
在旧服务器上,使用icacls保存您关心的文件的ACL。 例如,如果您的文件位于名为c:\ftproot\文件夹中,您将进入该文件夹并执行以下操作:
icacls * / save c:\ acls.bak / T
现在,您需要执行search并replaceacls.bak文件 – 对于CSV中的每一行,查找oldsid的所有实例并将其replace为newsid。 这是一个PowerShell脚本来做到这一点:
$ file = get-content C:\ acls.bak -encoding unicode
$ csv = import-csv c:\ sids.csv
foreach($ csv中的$行){
$ file = $ file -replace $ row.oldsid,$ row.newsid
}
set-content c:\ acls2.bak $ file -encoding unicode
将所有文件复制到新服务器
还原新服务器中的文件的ACL(再次,假设这在c:\ ftproot下):
icacls。 /恢复c:\ acls2.bak / T
这应该做到这一点 – 文件现在应该具有使用新的本地用户帐户设置的权限。
最简单的方法是从http://www.hoststools.com使用IIS Sites Transfer软件或IIS Easy Migration Tool 。有免费版本。 这些工具有助于迁移FTP站点,FTP帐户只要ACL权限。
在新硬件上从备份中恢复,然后您将获得本地用户和所有文件。 然后,您可以将服务器名称更改为新名称。