概括
可以分享一下吗符号链接在 Windows 中将网络位置作为网络共享?例如:
D:\folder\Shared\foo
上的\\server
共享为\\server\foo
,其中D:\folder\Shared\foo
实际上是指向的目录符号链接\\other\server\bar
。
或者这是一个XY问题?
背景
我们有一台 Windows Server 2008 R2* 虚拟机,fs1
有 2 个虚拟磁盘。C:
当然是系统驱动器,D:
是数据驱动器。我们D:
使用 Windows 通过 SMB共享多个文件夹共享和存储管理。 例如:
D:\Shares\Shared\Engineering
共享为\\fs1\Engineering
C:\Shares\Shared\Admin
共享为\\fs1\Admin
这些共享通常映射为用户工作站上的网络驱动器。例如,E:\
可能映射到。\\fs1\Engineering
我想将这些共享从这个虚拟磁盘移到我们的新存储位置\\abc\def
,并且我想对最终用户透明地执行此操作(至少现在 - 最终原始路径将消失,但这超出了问题的范围)。
*今年升级至 2016 或 2019。
我现在在哪里
肯定子文件夹的共享文件夹正在迁移,首先使用 RoboCopy 将数据复制到目标位置 ( \\abc\def
),然后将原始路径重命名为备份路径,最后创建指向新目标的目录符号链接。该过程大致如下(为简洁起见,省略了一些其他标志/选项):
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
然后,Finance_old
一旦我们验证一切运行正常,文件夹的权限就会改变,并最终被删除。
请注意,根共享文件夹
D:\Shares\Shared\Admin
仍然是一个实际文件夹,而不是符号链接。
效果非常好 —— 停机时间不到 1 秒,并且所有最终用户程序都能继续工作。
附言:Windows SymLink 权限
问题
子文件夹太多,无法为每个子文件夹创建符号链接,因此,我想为每个共享根文件夹创建一个符号链接。
我可以在目录中成功创建符号链接D:\Shares\Shared
:
mklink /D D:\Shares\Shared\symlink_test \\abc\def\target
然后我可以成功将其添加到共享和存储管理:
\\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
答案1
我鼓励您了解一下 DFS。我自己没有亲自进行过设置,但我见过管理员使用它成功地将共享从一台 Windows CIFS 服务器迁移到另一台。
它看起来有点像这样:
- Server1 在 \\Server1\share 处包含一个共享。创建了一个类似于 \\DFS\share 的 DFS 共享,它从 \\Server1\share 获取信息。
- Server2 已启动并添加到 DFS 复制中。现在 \\Server1\share 中的所有数据均可在 \\server2\share 和 \\DFS\share 上使用。
- 将您的 GPO (或映射共享的任何内容) 更改为 \\DFS\share 而不是 \\Server1\share。
- 现在您可以从 DFS 中删除 \\Server1\share 并将其关闭。任何时候您需要再次迁移共享,您都可以将新服务器添加到 DFS 复制中。此外,您可以在 DFS 中连续拥有多台服务器,以进行备份(一台服务器死机,另一台服务器有数据)或可用性(一台服务器位于两个远程办公室)等。