Linux の WSL でファイルが保存される場所

Linux の WSL でファイルが保存される場所

私は 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

通常のファイル エクスプローラーでは、varまたはbinまたはフォルダーはどこに存在しますか?home

答え1

了解。いいえ!コメントとそれに対する自己回答については、一度もないを通じて直接ファイルにアクセスできます%LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs。WSL1では、ファイルは保存されたWSL では、これらに直接アクセスすると WSL が破損する可能性があります。また、WSL2 の場合、ファイルは仮想 HDD ( ext4.vhdx) 内にあるため、この手法はまったく使用できないことに注意してください。

引用するこのトピックに関するMicrosoftのDevBlog:

Windows 上の WSL に関しては、厳格なルールが 1 つあります。

いかなる状況でも、Windows アプリ、ツール、スクリプト、コンソールなどを使用して、フォルダー内の Linux ファイルにアクセスしたり、作成したり、変更したりしないでください%LOCALAPPDATA%。一部の Windows ツールを使用してファイルを開くと、開かれたファイルやフォルダーが読み取りロックされ、ファイルの内容やメタデータの更新が妨げられ、ファイルやフォルダーが破損する可能性があります。

Windows から Appdata フォルダーに Linux ファイルを作成/変更すると、データが破損したり、Linux 環境が損傷したりして、ディストリビューションをアンインストールして再インストールする必要が生じる可能性があります。

正解もそのページにあります。WSLは\\wsl$\<distroname>擬似ネットワーク共有を提供しており、安全にWindows から WSL ファイルシステムにアクセスします。 に表示されるためには WSL インスタンスが実行されている必要があることに注意してください\\wsl$\

答え2

@Narzard のコメントによると、私の場合の正解は次のフォルダに移動することです:

%LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs

私は Debian ディストリビューションを使用しているため、パッケージ フォルダー名は私のものとは異なる場合がありますが、基本的な考え方は同じです。実際、そのパスに移動すると、Linux のルート フォルダーがすべて表示されます。

@NotTheDr01ds が指摘したように、WSL が破損する可能性があるため、このフォルダーに対して操作を実行しないでください。何らかの理由で知りたい場合は、これが「実際のフォルダー」です。

関連情報