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版本1903(2019年3月)以来,我们(终于!)将您的发行版文件系统暴露给了Windows!
要了解更多信息,请阅读此文章:https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/
期待听到您对此功能的使用情况。如果您发现任何问题,请在WSL GitHub repo上提交问题,网址为:https://github.com/microsoft/wsl。
使用Windows 10 版本1903及以上,WSL文件系统可以通过 \\wsl$
挂载在Windows上。您可以手动浏览到该位置,或从WSL路径启动 explorer.exe
:
$ cd /home/me
$ explorer.exe .
\\wsl$
挂载不起作用。一些用户发现,禁用再启用WSL可以解决此问题。Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# Reboot when prompted
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# Reboot when prompted
禁用和重新启用WSL似乎没有损坏我的现有Ubuntu安装,但最好备份任何您想要保存的内容,以防万一。
WSL可以挂载Windows分区到/mnt
目录下。例如,你可以通过引用/mnt/c/work
的方式修改挂载的Windows文件系统中目录下的文件。
Windows应用程序(如cmd、文件管理器等)可以通过在文件路径前加上%LocalAppData%\lxss
来以只读模式访问WSL中的文件。将文件从Windows文件系统复制到WSL目录会导致文件无法读取,出现一个晦涩的general I/O error
错误。在%LocalAppData%\lxss
创建的文件对于WSL不可见。在WSL中创建的文件可以在Windows中进行修改,修改后的文件随后可以由WSL访问。
sudo service ssh start
启动 ssh 守护进程。您可以通过简单地导航到文件位置,轻松访问、读取和写入WSL Linux文件系统和Windows之间的文件。
C:\Users\\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
希望这对你有所帮助!\wsl$ 挂载点对我来说效果不佳,它有多个问题,并且许多 Windows 应用程序会因为将其视为网络驱动器而失败。对于我的用例,Rclone 是帮助解决问题的工具,可以正确地挂载 Linux 文件系统,使其表现得与本地磁盘几乎相同,没有任何问题。
它是免费和开源的。它可以使用 sftp 远程文件系统(如 sshfs)工作,因此它可以在 Linux 和 Windows 上挂载网络驱动器(运行 sshd 服务)。
示例命令如何运行它,假设远程点“server”已经配置好,并且 rclone.exe 在 PATH 环境变量中:
rclone mount server:/ Z: --file-perms=0777 --track-renames --track-renames-strategy=modtime,leaf --metadata --vfs-cache-mode=full --sftp-disable-hashcheck --volname drive_name
首次使用时,您需要运行以下命令来配置新的远程连接点:
rclone config
要查找您刚创建的配置文件的位置,请运行:
rclone config file
此外,如果尚未安装WinFsp,则可能需要先安装它。最好的是,一切都像使用本地磁盘一样工作(假设您提供了--vfs-cache-mode=writes
或--vfs-cache-mode=full
选项,因为没有这些选项,许多应用程序将无法正常工作,请阅读文档以了解原因)。选项--file-perms=0777
是必要的,以允许运行.exe文件。即使--vfs-cache-mode=writes
对于大多数应用程序来说已经足够了,但--vfs-cache-mode=full
对于处理大文件时的良好性能非常重要。出于同样的原因,--track-renames-strategy
仅限于modtime
和leaf
策略,因为如果使用哈希策略,处理大文件时会明显变慢,而--sftp-disable-hashcheck
则是必要的,以防止rclone运行md5sum,否则即使尝试读取文件,它也会运行。
要将Rclone注册为系统服务,请编辑并运行以下命令(请勿按原样运行,请先查看下面的说明以了解您需要如何编辑它):
New-Service -Name Rclone -BinaryPathName 'C:\Program Files\Rclone\rclone.exe mount server:/ Z: --vfs-cache-mode=full --track-renames --track-renames-strategy=modtime,leaf --metadata --volname drive_name --config="C:\Program Files\Rclone\rclone.conf" --log-file="C:\Program Files\Rclone\rclone.txt" --file-perms=0777 --sftp-disable-hashcheck --no-console'
显然,您需要将“server:/”替换为实际的远程点名称和路径,还要将drive_name替换为任何您喜欢的名称,并且如果您在不同位置安装了它,则可能需要编辑rclone.conf、rclone.log和rclone.exe的路径。
注意:在我的情况下,作为系统服务运行会导致某些权限问题(例如,在尝试保存Excel文件时),我还没有弄清楚原因,所以最终我创建了启动.bat文件以用户身份运行Rclone,因为这种方式可以完美地工作。如果我找到了如何使作为服务运行与作为用户运行一样好的方法,我将更新此答案。
即使是不支持网络驱动器的Windows软件,也可以使用RClone驱动器。所需的全部就是在远程系统中设置sshd(在这种情况下,实际上并不是真正的远程系统,而是安装在同一台PC上的WSL发行版)。以下是如何在WSL发行版中设置sshd的方法:https://www.hanselman.com/blog/how-to-ssh-into-wsl2-on-windows-10-from-an-external-machine。这里是如何使WSL IP地址静态的方法:https://github.com/ocroz/wsl2-boot,这样您就可以始终在相同的IP地址上运行sshd。