如何在Windows Linux子系统上访问网络安装的驱动器?


35

我有一个安装在我本地Windows计算机上的samba驱动器。

我在WLS(“Windows 10 bash”)中有一个“/ mnt / c”驱动器,但没有“/ mnt / z”。

有办法以某种方式访问​​它吗?我可以在WLS中重新安装吗?


3
Microsoft Developer Feedback对此功能进行了讨论 wpdev.uservoice.com/forums/...
Nelson

Answers:


21

[更新 - 显然地 此功能可用于 建立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。


同意,这对我来说也很明显 - 我刚为此安装了msys2。
Ela782


你的mklink参数的顺序是错误的 - 它应该是 linkname target不是 target linkname
masterxilo

是的,masterxilo,你是对的 - 我这里的mklink命令错了。固定。当我真正尝试它时,我做得对,并且它对WSL不起作用。现在这是一个没有实际意义的问题,因为WSL现在可以挂载网络共享。但感谢你的纠正。即使几乎没有人在看这个答案,我也不愿意留下这样的错误。
Joseph Thvedt

58

链接bleater发布

安装DrvF

要使用DrvF安装Windows驱动器,可以使用常规Linux安装命令。例如,要安装可移动驱动器D:as / mnt / d目录,请运行以下命令:

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

现在,您将能够在/ mnt / d下访问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.exe使用)调用net use命令。键入net.exe help以获取有关如何使用此命令的更多信息。


完全适合我的“bash for windows 10”!非常感谢!
Ying Zhang

正确的答案应该改为这个,因为它直接回答了问题。
Tomek

你需要“Windows Insider build”来获得DrvFs。 -1(实际上不是投票)
FractalSpace

2
我没有Windows内部版本,它对我有用
gman

这太棒了。
Erik

0

在Windows中有(至少)两种使用Bash的方法:

  1. WLS附带的Bash(从Windows应用商店或其他来源在Windows 10上安装Linux时)
  2. Windows上的Git-Bash

Git-Bash可以访问网络文件夹(安装git-bash>转到网络文件夹>右键单击>“Git Bash Here”>运行 pwd 看路径)。

如果你 不得不 使用WLS版本的bash,然后你可以从WLS bash调用Git-Bash,如下所示:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh

0

看到 https://github.com/Microsoft/WSL/issues/2999#issuecomment-455835951

这是一种在WSL中安装GFS的方法 让`sshfs`处理WSL或寻找替代方案 诀窍是使用 https://www.nsoftware.com/sftp/netdrive/ 从Windows ssh到GFS并将其转换为可以在WSL下安装的文件系统。

  1. 在Win10下安装OpenSSH Server Win10设置 - >应用 - >管理可选功能 - >添加功能 - > OpenSSH服务器 必要时重启 开放服务 - > OpenSSH - >属性 - >启动类型 - >自动(延迟)

  2. 安装并运行SFTPNetDrive,右键单击隐藏图标中的图标 - >主窗口(或者可能已经打开) - >个人资料 - >新配置文件(服务器:localhost,用户: * pwd:* 驱动器号:F(或其他) 高级 - > (协议 - >取消选中压缩;指定文件夹:G:\))

  3. 在Bash(wsl):sudo mkdir / mnt / f; sudo mount -t drvfs F:/ mnt / f

我不确定它有多稳定,但我能够在WSL中打开文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.