Windows 2003 IIS FTP 服务器迁移(含用户帐户)

Windows 2003 IIS FTP 服务器迁移(含用户帐户)

我正在尝试找出将 FTP 服务器从旧硬件迁移到新硬件的最佳方法。服务器位于域中,但服务器上设置的用户(使用 FTP)并非都是域帐户,有些是服务器本地帐户。

例如,我有两种用户:

域\用户名 机器名\用户名

新的机器名称将会有所不同。

因此,我需要将所有文件连同权限一起从旧服务器复制到新服务器。然后,我需要将所有用户帐户从旧服务器转换到新服务器。然后,我需要更改文件权限,使其不再是 oldserver\username 而是 newserver\username。

这一切都可以通过 CALCS 实现吗?有没有一种我可能遗漏的简单方法?

答案1

这个问题没有“简单”的解决方案 - 当移动到新服务器时,本地帐户的 ACL 会丢失,因为与该用户关联的 SID 不再映射到有效的用户帐户。

不过,有一种方法可以做到这一点,而不必清除系统。我将介绍我认为最简单的方法,即使用 Powershell(带 WMI)、icacls 和一些文本编辑。

  1. 在新服务器上创建所有新用户
  2. 在旧服务器和新服务器上,获取所有用户名到 SID 映射的列表。为此,打开 Powershell 并运行以下命令(在每台服务器上):

    获取 wmiobject win32_useraccount | 其中 { $_.localaccount } | 导出 csv serverusers.csv

  3. 您现在需要做一些手动工作 - 您需要获取两个电子表格并将旧服务器用户的 SIDS 映射到新服务器用户。在新的 CSV ( c:\sids.csv) 中创建此文件,格式如下:oldusername,newusername,oldsid,newsid

  4. 在旧服务器上,使用 icacls 保存您关心的文件的 ACL。例如,如果您的文件位于名为的文件夹中,则c:\ftproot\您可以进入该文件夹并执行以下操作:

    icacls * /保存 c:\acls.bak /T

  5. 现在您需要在 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

  6. 将所有文件复制到新服务器

  7. 恢复新服务器中文件的 ACL(再次假设它位于 c:\ftproot 下):

    icacls ./恢复 c:\acls2.bak /T

这样就可以了——文件现在应该使用新的本地用户帐户设置权限。

答案2

最简单的方法是使用 IIS Sites Transfer 软件或 IIS Easy Migration Toolhttp://www.hoststools.com有免费版本。这些工具有助于迁移 FTP 站点、FTP 帐户以及 ACL 权限。

答案3

从新硬件上的备份恢复,然后您将获得本地用户和所有文件。然后您只需将服务器名称更改为新名称即可。

相关内容