WSL for linux 文件存储在哪里

VJZ*_*VJZ 5 windows linux debian windows-subsystem-for-linux

我一直在使用 Windows Subsystem for Linux (WSL),当我在 WSL 的主目录中创建一个文件时,它实际上存在于文件资源管理器中的什么位置,而且,因为我的 C: 驱动器位于 /mnt/c/ 中,这是否意味着Linux 是在单独的分区还是挂载上?

当我在 WSL 的根目录中运行列表目录时:

bin  boot  dev  etc  home  init  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
Run Code Online (Sandbox Code Playgroud)

普通文件浏览器中的varbin文件夹存在于哪里?home

Not*_*1ds 6

确认-不!关于评论和您相应的自我回答,请不要直接通过 访问文件%LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs。虽然对于 WSL1,文件确实由 WSL存储在那里,但直接访问它们可能会导致 WSL 损坏。另请注意,对于 WSL2,文件位于虚拟 HDD ( ext4.vhdx) 内,因此它根本无法使用此技术。

引用Microsoft 的 DevBlog 关于该主题的内容

对于 Windows 上的 WSL,有一条硬性规则:

在任何情况下,请勿%LOCALAPPDATA%使用 Windows 应用程序、工具、脚本、控制台等访问、创建和/或修改文件夹内的 Linux 文件。使用某些 Windows 工具打开文件可能会对打开的文件和/或文件夹进行读锁定,防止更新文件内容和/或元数据,>本质上导致文件/文件夹损坏。

从 Windows 在 Appdata 文件夹中创建/更改 Linux 文件可能会导致数据损坏和/或损坏您的 Linux 环境,需要您卸载并重新安装发行版!

正确答案也可以在该页面中找到。WSL 提供\\wsl$\<distroname>伪网络共享,允许您从 Windows安全地访问 WSL 文件系统。请注意,WSL 实例确实需要运行才能显示在\\wsl$\.


VJZ*_*VJZ 2

根据 @Narzard 的评论,我的情况的正确答案是转到此文件夹:

%LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs
Run Code Online (Sandbox Code Playgroud)

由于我有一个 debian 发行版,因此您的包文件夹名称可能与我的不同,但其总体思路是相同的。事实上,当我转到该路径时,linux 的根文件夹都出现了。

正如 @NotTheDr01ds 指出的那样,您不应该对此文件夹执行任何操作,因为它可能会损坏您的 WSL。如果出于某种原因您想知道的话,这只是“实际文件夹”。