我正在尝试找出将 FTP 服务器从旧硬件迁移到新硬件的最佳方法。服务器位于域中,但服务器上设置的用户(使用 FTP)并非都是域帐户,有些是服务器本地帐户。
例如,我有两种用户:
域\用户名 机器名\用户名
新的机器名称将会有所不同。
因此,我需要将所有文件连同权限一起从旧服务器复制到新服务器。然后,我需要将所有用户帐户从旧服务器转换到新服务器。然后,我需要更改文件权限,使其不再是 oldserver\username 而是 newserver\username。
这一切都可以通过 CALCS 实现吗?有没有一种我可能遗漏的简单方法?
答案1
这个问题没有“简单”的解决方案 - 当移动到新服务器时,本地帐户的 ACL 会丢失,因为与该用户关联的 SID 不再映射到有效的用户帐户。
不过,有一种方法可以做到这一点,而不必清除系统。我将介绍我认为最简单的方法,即使用 Powershell(带 WMI)、icacls 和一些文本编辑。
- 在新服务器上创建所有新用户
在旧服务器和新服务器上,获取所有用户名到 SID 映射的列表。为此,打开 Powershell 并运行以下命令(在每台服务器上):
获取 wmiobject win32_useraccount | 其中 { $_.localaccount } | 导出 csv serverusers.csv
您现在需要做一些手动工作 - 您需要获取两个电子表格并将旧服务器用户的 SIDS 映射到新服务器用户。在新的 CSV (
c:\sids.csv
) 中创建此文件,格式如下:oldusername,newusername,oldsid,newsid
在旧服务器上,使用 icacls 保存您关心的文件的 ACL。例如,如果您的文件位于名为的文件夹中,则
c:\ftproot\
您可以进入该文件夹并执行以下操作:icacls * /保存 c:\acls.bak /T
现在您需要在 acls.bak 文件中执行搜索和替换 - 对于 CSV 中的每一行,找到 oldsid 的所有实例并将其替换为 newsid。以下是执行此操作的 powershell 脚本:
$file = 获取内容 C:\acls.bak -编码 unicode
$csv = 导入 csv c:\sids.csv
foreach ($row in $csv) {
$file = $file -替换 $row.oldsid,$row.newsid
}
设置内容 c:\acls2.bak $file -编码 unicode将所有文件复制到新服务器
恢复新服务器中文件的 ACL(再次假设它位于 c:\ftproot 下):
icacls ./恢复 c:\acls2.bak /T
这样就可以了——文件现在应该使用新的本地用户帐户设置权限。
答案2
最简单的方法是使用 IIS Sites Transfer 软件或 IIS Easy Migration Toolhttp://www.hoststools.com有免费版本。这些工具有助于迁移 FTP 站点、FTP 帐户以及 ACL 权限。
答案3
从新硬件上的备份恢复,然后您将获得本地用户和所有文件。然后您只需将服务器名称更改为新名称即可。