在 Windows 中,是否可以将符号链接共享为网络共享?

dth*_*hor 9 windows windows-server-2008 network-share symbolic-link

概括

是否可以将符号链接共享到网络位置作为 Windows 中的网络共享?例如:

D:\folder\Shared\fooon\\server共享为\\server\foo,其中D:\folder\Shared\foo实际上是指向\\other\server\bar.

或者这是一个XY 问题

背景

我们有一台fs1带有 2 个虚拟磁盘的 Windows Server 2008 R2* 虚拟机。C:当然是系统驱动器,D:是数据驱动器。我们D:使用 Windows共享和存储管理通过 SMB共享多个文件夹。例如:

  • D:\Shares\Shared\Engineering 共享为 \\fs1\Engineering
  • C:\Shares\Shared\Admin 共享为 \\fs1\Admin

这些共享通常映射为用户工作站上的网络驱动器。例如,E:\可能映射到\\fs1\Engineering

我想将这些共享从这个虚拟磁盘移到我们的新存储位置\\abc\def,我想对最终用户透明地执行此操作(至少现在 - 最终原始路径将消失,但这超出了问题的范围)。

*今年升级到 2016 或 2019。

我现在在哪里

共享文件夹的某些文件夹首先通过\\abc\def使用 RoboCopy将数据复制到目标位置 ( ),然后将原始路径重命名为备份路径,最后创建指向新目标的目录符号链接来迁移。该过程大致如下(为简洁起见,省略了一些额外的标志/选项):

robocopy D:\Shares\Shared\Admin\Finance \\abc\def\Finance /mir
ren D:\Shares\Shared\Admin\Finance D:\Shares\Shared\Admin\Finance_old
mklink /D D:\Shares\Shared\Admin\Finance \\abc\def\Finance
Run Code Online (Sandbox Code Playgroud)

然后,Finance_old一旦我们确认一切正常,文件夹就会更改权限并最终被删除。

请注意,根共享文件夹D:\Shares\Shared\Admin仍然是实际文件夹,而不是符号链接。

这非常有效 - 它可以在不到 1 秒的停机时间内完成,并且所有最终用户程序继续工作。

旁白:Windows SymLink 权限

我已经设置了一个 GPO 来允许Remote Link to Remote Target符号链接。来源 1 , 来源 2

问题

有太多子文件夹无法为每个文件夹创建符号链接,因此我想为每个共享根文件夹创建一个符号链接。

我可以在D:\Shares\Shared目录中成功创建一个符号链接:

mklink /D D:\Shares\Shared\symlink_test \\abc\def\target
Run Code Online (Sandbox Code Playgroud)

然后我可以成功地将它添加到共享和存储管理:

共享设置

分享成功

\\fs1在 Windows 资源管理器中浏览时会显示共享。

但是当我尝试访问共享位置时\\fs1\symlink_test,出现“设备未准备好”错误:

设备未准备好错误

嘿,它说的是关于权限的东西!

我已经检查了所有权限,该位置应该是可读的。

  • 我可以\\abc\def\symlink_test直接访问。
  • 我可以访问D:\Shares\Shared\symlink_test并正确地将我带到目标位置。

所以我不认为这是一个许可问题。

其他信息

  • fs1 正在运行 Windows Server 2008 R2
  • \\abc\def 实际上是一个分布式文件系统命名空间
  • \\abc\def\foo 是 DFS 命名空间中的文件夹,目标位于 Synology NAS 上 \\nas1\foo

duc*_*der 3

我鼓励你看看 DFS。我自己没有完成设置,但我看到管理员使用它成功地将共享从一台 Windows CIFS 服务器迁移到另一台。

它看起来有点像这样:

  1. Server1 包含位于 \\Server1\share 的共享。创建一个类似于 \\DFS\share 的 DFS 共享,它从 \\Server1\share 获取信息。
  2. Server2 启动并添加到 DFS 复制中。现在,\\Server1\share 中的所有数据都可在 \\server2\share 和 \\DFS\share 中使用。
  3. 将您的 GPO(或映射共享的任何内容)更改为 \\DFS\share 而不是 \\Server1\share。
  4. 现在您可以从 DFS 中删除 \\Server1\share 并将其关闭。任何时候您需要再次迁移共享时,都可以将新服务器添加到 DFS 复制中。此外,出于备份(一台服务器挂掉,另一台保留数据)或可用性(一台服务器位于两个远程办公室)的原因,您可以在 DFS 中连续拥有多台服务器。