在没有 SMB 的情况下将文件/权限复制到另一台服务器?

在没有 SMB 的情况下将文件/权限复制到另一台服务器?

为了诊断我遇到的问题,我确实需要能够在 Windows 服务器之间复制文件 - 包括 NTFS 权限不使用 smb。有没有现成的方法可以做到这一点?如果我在 Linux 上工作,我只会使用 tcp 流或 SSH。我看过的 SSH 实现不执行 NTFS 权限,而且我还没有看到任何原始 tcp 流。

背景:

我正在预先植入一个 DFS 共享,用于将文件服务器从 2003r2 迁移到 2012r2 服务器。我有几 TB 的数据需要移动。

我使用 iperf 排除了网络级问题。我们的吞吐量达到 800 兆比特或更高。我还禁用了防病毒软件并遵循了其他标准性能故障排除步骤。

答案1

有一种可以完全避免 SMB 但构建起来可能相当困难的方法是基于 iSCSI。

Windows 2012r2 可以作为 iSCSI 目标,而 Windows 2003r2 可以充当客户端。因此,您可以在目标上设置卷,并通过 iSCSI 呈现它,然后通过客户端系统连接到它,然后将卷直接安装在 Windows 2003r2 框上。然后,您可以使用本地复制工具(即 robocopy)进行预置。

答案2

你确实应该给我们提供更多信息,尤其是为什么你首先要避免 smb/cifs。

无论如何,假设你不能真正使用 smb,你有两种可能性:

  • 按照 Zoredache 的建议,使用低级协议(iSCSI)导出远程文件系统,然后使用 robocopy 复制所需的数据;
  • 在两台服务器上安装 cygwin 并使用 rsync 复制所需的文件。

让我详细说明第二种方法(rsync)。几个月前,我需要将大约 200 GB 的数据从 Windows 2003 文件服务器迁移到新的 Linux+Samba 设置,整个过程无需停机。我的解决方案是使用 rsync 逐步同步两个文件服务器,最后执行一个非常简短的同步步骤,在此期间将原始共享置于只读模式。

我遇到了以下问题:

  1. 一开始,ACL 是不同步的。解决办法是将-A选项传递给 rsync 命令;
  2. 之后,ACL 同步了,但同步方式错误(文件分配了错误的 uid)。解决方案是第一的将新的 Linux 服务器连接到域并正确配置 windbind,以便调用getent passwd返回域用户列表;
  3. 数据传输很慢。原来是因为 CygWin 的 SSH 实现速度很慢。为了解决这个问题,我将 Windows 上运行的 rsync 实例配置为独立守护进程模式,不需要 SSH。

ene 结果是 Linux 机器上几乎完美的 ACL 副本(一些细微的差别是由于 SMBACL 和 Posic ACL 的不同而造成的)。

你的情况有点类似,但更好,位置:您的两个文件服务器都是基于 Windows 的,我想它们位于同一个域中。这意味着它们可以访问同一个用户数据库,并且具有相同的 RID - 换句话说,您在复制 ACL 时应该不会遇到任何问题。此外,rsync 是一种非常高效且用途广泛的工具,它在增量复制文件时应该不会遇到任何问题。

但是,在做完所有这些事情之后,请认真考虑一下为什么(以及是否)你不能使用 SMB/CIFS 进行文件传输。你真的真的真的当然可以吗?如果可以,为什么?

相关内容