
私は 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 が破損する可能性があるため、このフォルダーに対して操作を実行しないでください。何らかの理由で知りたい場合は、これが「実際のフォルダー」です。