先日、WSL2のファイルシステムが、以前はnftsファイルシステムの上に直接linuxコマンドが置かれていたものが、仮想ハードディスクに置き換わっているとメモしました。
Linux → Windows ファイルをアクセスする場合、Windowsドライブは、/mnt/<ドライブレター> としてアクセスできるので、Linux側からWindowsのファイルをアクセスすることはわかりやすいのですが、これが逆方向になると、Linuxのルートファイルシステムがどこにあるのかを探す必要がありました。
では、WindowsからLinuxファイルシステムにファイルをコピーする場合は?
以前のように、ユーザーフォルダーの AppData下にファイルとして見える場合は、(パスが長くなることさえ気にしなければ)アクセスしやすいのですが、ファイルシステムが仮想ハードディスクとなってしまった後は、どうすればいいのでしょうか?
もちろん、GUIからはアクセスできますが、DOSやPowershell コマンドラインからプログラムとしてアクセスしたい場合はどうしたらいいの?例えば、Linux側のログをWindows側で処理したり、Windows側でテキストタイプの設定ファイルを編集した後、Linux側に保存したいような場合です。ファイルが1個,2個ならGUIから手作業でアクセスすることもできますが、ファイル数が100個、1000個となると、コマンドラインから処理したいものです。
調べてみたところ、仮想ハードディスク上にファイルシステムが置かれている場合のアクセス方法は二つ。
- \\wsl.localhost\debian や \\wsl.localhost\ubuntu のように、ネットワークドライブとしてアクセスする。
C:\>dir \\wsl.localhost\debian ドライブ \\wsl.localhost\debian のボリューム ラベルがありません。 ボリューム シリアル番号は 0000-0000 です \\wsl.localhost\debian のディレクトリ 2022/02/24 21:16 <DIR> . 2022/02/24 21:16 <DIR> .. 2022/02/24 23:39 <DIR> bin 2021/10/03 18:15 <DIR> boot 2022/12/10 03:24 <DIR> dev 2022/12/10 03:24 <DIR> etc 2022/02/24 21:16 <DIR> home 2022/12/01 23:57 644,432 init 2021/12/09 17:29 <DIR> lib 2021/12/09 17:28 <DIR> lib64 2021/12/09 17:28 <DIR> media 2022/02/24 21:16 <DIR> mnt 2021/12/09 17:28 <DIR> opt 2022/12/10 03:24 <DIR> proc 2022/02/24 23:29 <DIR> root 2022/12/10 03:24 <DIR> run 2022/02/24 23:39 <DIR> sbin 2021/12/09 17:28 <DIR> srv 2022/12/10 03:24 <DIR> sys 2022/12/02 00:17 <DIR> tmp 2021/12/09 17:28 <DIR> usr 2021/12/09 17:28 <DIR> var 1 個のファイル 644,432 バイト 21 個のディレクトリ 353,384,366,080 バイトの空き領域
- 一旦、🐧Linux\Debian にドライブレターを割り当てる
C:\>dir q: ドライブ Q のボリューム ラベルがありません。 ボリューム シリアル番号は 0000-0000 です Q:\ のディレクトリ 2022/12/08 18:13 <DIR> mnt 2022/10/01 19:54 <JUNCTION> lib [...] 2022/10/01 19:54 <JUNCTION> sbin [...] 2022/12/10 02:55 <DIR> . 2022/12/10 02:55 <DIR> run 2022/10/01 19:54 <JUNCTION> libx32 [...] 2022/12/08 18:14 <DIR> home 2022/10/01 19:54 <JUNCTION> bin [...] 2022/10/01 19:54 <DIR> var 2022/12/08 18:13 <DIR> tmp 2022/10/01 19:54 <DIR> media 2022/10/01 19:54 <JUNCTION> lib32 [...] 2022/12/10 03:03 <DIR> dev 2022/10/01 19:54 <DIR> usr 2022/12/10 02:55 <DIR> etc 2022/12/10 02:55 <DIR> proc 2022/10/01 19:54 <JUNCTION> lib64 [...] 2022/12/10 02:55 <DIR> .. 2022/12/08 18:13 <DIR> lost+found 2022/10/01 19:54 <DIR> root 2022/10/01 19:54 <DIR> opt 2022/12/10 02:54 <DIR> sys 1970/01/01 09:00 1,939,720 init 2022/09/03 21:10 <DIR> boot 2022/10/01 19:54 <DIR> srv 7 個のファイル 1,939,770 バイト 18 個のディレクトリ 1,025,818,898,432 バイトの空き領域
ドライブレターを割り当てると、その後はパスの表現方法が短くなるので、見やすいとは思います(上の例では、Q: に Debian をマップしました)が、どのPCでも同じドライブレターにマップできるとは限らないので、スクリプトを書くときに注意が必要でしょう。私の場合、Windows側からLinuxをアクセスする必要はなさそうですけどね。
ファイルシステムがWindowsフォルダーとして見えなくなったので、Windowsから見た場合のアクセス速度向上には役立っているかも。インデックス対象からは外れていると思う。(そうあってほしい。)