【问题标题】:How do I access the WSL Linux file system from Windows?如何从 Windows 访问 WSL Linux 文件系统?
【发布时间】:2017-05-21 16:22:33
【问题描述】:

我发现在/home/pupeno/projectx 中运行的Rails 应用程序提供的静态文件所花费的时间是/mnt/c/Users/pupeno/projectx 中提供的静态文件的一半或多或少。这几乎可以接受。我尝试了 webrick 和 puma(以及乘客和独角兽,还不行)。

那么,如果我要在/home/pupeno 中托管我的源代码,我如何从 RubyMine 等 Windows 应用程序访问?

为了记录,这是从 Windows 文件系统提供的应用程序:

这是 Linux 文件系统:

【问题讨论】:

  • 顺便说一句,除非您知道自己在做什么,否则不要编辑 %localappdata%\lxss 中的任何文件。 Windows 工具几乎总是会破坏这些文件。

标签: filesystems windows-subsystem-for-linux


【解决方案1】:

在 Windows powershell/cmd 中触发 CLI 命令 explorer.exe \\wsl$

【讨论】:

    【解决方案2】:

    此处为 Windows 命令行的 PM:

    到目前为止,不支持从 Windows 访问 Linux 文件。要了解原因,请阅读这篇文章:https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

    但是,从 Windows 10 build 1903(2019 年 3 月)开始,我们(终于!)将您的发行版的文件系统暴露给了 Windows!

    要了解更多信息,请阅读这篇文章:https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/

    期待听到您如何继续使用此功能。如果您发现任何问题,请在此处的 WSL GitHub 存储库中提交问题:https://github.com/microsoft/wsl

    【讨论】:

    • 哈哈!谢谢阿德里安。希望您喜欢 WSL 的文件系统集成。我们正在继续努力提高其性能,随着工作的进展,我们应该会在接下来的几个月中看到结果。
    【解决方案3】:

    在 Windows 10 version 1903 and later 中,WSL 文件系统可通过 \\wsl$ 挂载在 Windows 中使用。手动浏览那里或从 WSL 路径启动 explorer.exe

    $ cd /home/me
    $ explorer.exe .
    

    如果您有现有的 WSL 安装并升级到 Windows 1903,您可能会发现 \\wsl$ 挂载不起作用。有用户发现disabling and re-enabling WSL fixes the issue

    在 PowerShell 中:

    Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    # Reboot when prompted
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    # Reboot when prompted
    

    禁用和重新启用 WSL 似乎并没有损害我现有的 Ubuntu 安装,但可能值得备份您想要保存的任何内容以防万一。

    【讨论】:

      【解决方案4】:

      您只需导航到文件位置即可轻松地从 WSL Linux 文件系统访问、读取和写入文件到 Windows,反之亦然:

      C:\Users\\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs

      希望对你有所帮助!!

      【讨论】:

      • 不知道为什么这个答案被否决了两次——这绝对是从资源管理器访问 WSL 挂载文件的一种方法
      • 这个答案应该被忽略/删除,因为它直接违反了 WSL 团队的指导。 not spelunking through the Windows filesystem to access WSL distros' files。这样做很可能会导致数据/文件损坏或丢失。
      • 是的,文件不应从 Windows 访问。但我有双操作系统(Ubuntu 和 Windows),我正在寻找一种将文件从 WSL 复制到 Ubuntu 的方法,这个答案帮助我做到了。
      【解决方案5】:

      在 Windows 10 Creators Update 上,我使用 SFTP NetDrive 将 WSL 文件系统作为网络驱动器挂载到 Windows 中。

      有一些 Window sshFS 端口可以达到同样的效果。

      您需要通过sudo service ssh start 启动 ssh 守护进程。

      【讨论】:

      • 太棒了!我一直在寻找一种使用 Windows 应用程序(VS 代码)编辑 Linux 文件的方法,ssh + SFTP NetDrive 似乎能够解决我的问题。我回家后试试,谢谢!
      【解决方案6】:

      WSL 将 Windows 分区挂载到 /mnt 下。例如,您可以通过将 /mnt/c/work 引用为已挂载的 Windows 文件系统上的 c:\work 中的文件来修改它们。

      Windows 应用(cmd、文件管理器等)可以在 WSL 中以只读模式访问文件,方法是在前面加上 %LocalAppData%\lxss。将文件从 Windows 文件系统复制到 WSL 目录会使其不可读,并带有神秘的 general I/O error。从 Windows 中在 %LocalAppData%\lxss 创建的文件对 WSL 不可见。从 WSL 创建的文件可以在 Windows 中修改,修改后的文件随后可以被 WSL 访问。

      【讨论】:

      • "从 WSL 创建的文件可以在 Windows 中修改,修改后的文件随后可以被 WSL 访问。" 非常小心。根据您使用的程序,它可能会导致混乱 - 例如,如果您的编辑器没有就地编写文件,而是创建一个副本并重命名它,就像有些人那样。一般来说,建议在此处遵守用大红色字母书写的规则:blogs.msdn.microsoft.com/commandline/2016/11/17/… - 要从 Windows 访问 WSL 根目录,您可以使用本地 SSH 和 Win-SSHFS。
      • 自 Windows 10 版本 1903 起不再相关。请参阅下面 chris 的答案:stackoverflow.com/a/59226195/7558731
      猜你喜欢
      • 2019-02-13
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2021-04-17
      • 1970-01-01
      相关资源
      最近更新 更多