我有一个安装在本地 Windows 计算机上的 Samba 驱动器。
我/mnt/c
在 WLS(Windows 10 Bash)中有一个驱动器,但没有/mnt/z
。
有没有办法以某种方式访问它?我可以在 WSL 中重新安装它吗?
答案1
[更新 - 显然此功能适用于内部版本 16176。我还没试过。
不,不过可能有一些我还没发现的技巧。Windows Subsystem for Linux 不安装网络驱动器。一位微软员工说这里(在评论中):
目前我们只“安装”固定驱动器。目前不处理 USB/可移动/网络驱动器。此功能已列入我们的待办事项中,但短期内不会实现。
所以不要屏住呼吸。
我尝试通过使用符号链接来解决这个问题,如下所示:
c:> mklink /d c:\some\directory \\some_server\some_share
该链接在“普通”Windows(cmd.exe、PowerShell、文件资源管理器等)中工作正常,但对 WSL 是不可见的:
$ ls -ld /mnt/c/some/directory
/mnt/c/some/directory not found
对于我自己的使用来说,这个限制是无法避免的。我有一些不想移动的网络驱动器上的东西。还有其他选择;我正在使用 Cygwin。
答案2
安装 DrvFs
为了使用 DrvFs 挂载 Windows 驱动器,您可以使用常规 Linux mount 命令。例如,要将可移动驱动器 D: 挂载为 /mnt/d 目录,请运行以下命令:
$ sudo mkdir /mnt/d $ sudo mount -t drvfs D: /mnt/d
现在,您将能够访问 D: 驱动器 /mnt/d 下的文件。当您希望卸载驱动器(例如,为了可以安全地移除它)时,请运行以下命令:
$ sudo umount /mnt/d
安装网络位置
当您想要挂载网络位置时,您当然可以在 Windows 中创建映射网络驱动器并按上述方法挂载它。但是,也可以使用 UNC 路径直接挂载它们:
$ sudo mkdir /mnt/share $ sudo mount -t drvfs '\\server\share' /mnt/share
请注意 UNC 路径周围的单引号;这是必要的,以避免需要转义反斜杠。如果您没有用单引号将 UNC 路径括起来,则需要通过将反斜杠加倍来转义反斜杠(例如
\\\\server\\share
)。WSL 无法指定使用哪些凭据来连接到网络共享。如果您需要使用不同的凭据连接到服务器,请在 Windows 中通过导航到文件资源管理器中的共享、使用 Windows 凭据管理器或 net use 命令来指定它们。可以通过 interop 从 WSL 内部调用 net use 命令(使用 net.exe use)。键入 net.exe help use 以获取有关如何使用此命令的更多信息。
答案3
WSL2 支持CIFS(中小企业)协议。您可能需要在安装时指定网络服务器版本。例如在 Ubuntu 上:
$ sudo apt install cifs-utils
$ sudo mount -t cifs -o user=joe,pass=shmo,vers=1.0 //server/share /mnt/share
答案4
看https://github.com/Microsoft/WSL/issues/2999#issuecomment-455835951
以下是基于以下方式在 WSL 中挂载 GFS 的方法让 `sshfs` 在 WSL 上运行或寻找替代方案诀窍是使用https://www.nsoftware.com/sftp/netdrive/从 Windows ssh 到 GFS,并将其转换为可以在 WSL 下挂载的文件系统。
在Win10下安装OpenSSH Server Win10的设置->应用程序->管理可选功能->添加功能->必要时重启OpenSSH Server打开服务->OpenSSH->属性->启动类型->自动(延迟)
安装并运行 SFTPNetDrive,右键单击隐藏图标中的图标->主窗口(或可能已经打开)->配置文件->新建配置文件(服务器:localhost,用户:* 密码:*驱动器号:F(或其他)高级 -> (协议 -> 取消选中压缩;指定文件夹:G:\ ))
在 Bash (wsl) 中: sudo mkdir /mnt/f; sudo mount -t drvfs F: /mnt/f
我不确定它有多稳定,但我能够在 WSL 中打开文件。