2025年2月8日

Win11/WSL2のファイル操作からバックアップまで


瀬戸内海亀老山展望公園から
瀬戸内海亀老山展望公園から  



Windows11にWSL2(Windows Subsystem for Linux 2)をインストールし,Linux(ここではUbuntu-24.04.1 LTS)を登録してアプリを作成しようとすると,どうしてもファイル群を編集する必要性が出てきます。

一般的には,TeraTerm等のネットワークリモートアプリを使って,ネットワーク経由でSendとReceiveを行うのですが,WSL2はWindows上で動作しているので,ネットワークリモートアプリを使わなくてもファイルをやり取りすることが可能です。

また,WSL2を使い始めると,定期的にバックアップする必要があります。サーバが壊れた時や移動する時などにバックアップファイルをインプットして回復するためです。

それらのコマンド群について記載します。

なお,PC環境はWindows11 Proエディションを前提としています。

それでは,学習を始めます。








  1.WindowsからLinuxファイルを操作する方法

①Windowsエクスプローラで操作する場合

WindowsからWSL2上のLinuxファイルを操作するには,Windowsのエクスプローラを開いて,パス入力欄に「\\wsl$」というコマンドを入力すると、WSL2に登録されたディストリビューション毎にファイルシステムアイコン が表示されます。

表示されたディストリビューションアイコン「例えばUbuntu-24.04」をクリックして配下のファイルおよびディレクトリを表示させます。

これにより,Linuxでお馴染みの「boot」「dev」「etc」「home」「mnt」「root」・・・などのディレクトリが表示されます。

LiinuxファイルシステムがWindows画面上で扱えますので,好きなディレクトリを表示させて,その配下にあるファイルを操作してください。


②PowerShellで操作する場合

この操作は,「PowerShell」画面から操作します。

Powershell」を立ち上げて,コマンドに「cd \\wsl$\ディストリビーション名(例えばUbuntu-24.04)」と入力します。(ディストリビーション名まで指定しないと位置づけられません。)

WSL2下のディストリビーションに位置づけられるため,プロンプトが次のように変化します。

実行例
PS C:\Users\ユーザ名> cd \\wsl$\ubuntu-20.04

表示例
PS Microsoft.PowerShell.Core\FileSystem::\\wsl$\ubuntu-20.04>

このプロンプトにWindowsのコマンドを入れて操作します。例えば「dir」と入力すれば以下のように表示されます。

実行例
PS Microsoft.PowerShell.Core\FileSystem::\\wsl$\ubuntu-20.04> dir

表示メッセージ例
Mode                 LastWriteTime         Length  Name
----                 -------------               ------    ----
d-----        2025/01/24      0:57                   srv
d-----        2025/02/24     15:00                  run
d-----        2025/02/24     15:00                  sys
d-----        2024/04/08     23:37                  lib.usr-is-merged
d-----        2025/01/24      0:57                   usr
d-----        2025/01/24      0:57                   media

後は,好きなディレクトリを表示してファイルを操作します。


③コマンドプロンプトで操作する場合

コマンドプロンプト」では,「cd」コマンドを使って「\\wsl$」を上手く扱えませんでした。「pushd」コマンドであれば「z:¥」(Zドライブ)に割り当てられる事が出来るようです。

実行例
C:\Users\ユーザ名>pushd \\wsl$\ubuntu-24.04

表示例
Z:\>


④注意点

Windowsから「root」ディレクトリは,セキュリティ上,直接扱う扱う事ができません。

どうしても「root」上にファイルを作りたい場合等は,「¥home¥ユーザ名」の配下にファイルを一旦作って後,Linuxコンソールからスーパーユーザ権限「root権限」でファイルを「mv」または「cp」してください。




  2.LinuxからWindowsファイルを操作する方法

次にLinuxからWindowsファイルを操作する方法を記述します。

これには,LinuxコンソールからWindowsファイルシステムにアクセスしますので,「/mnt/c」ディレクトリを探します。

WSL2とLinuxディストリビューションを起動して,Linuxの入力プロンプト(#または$)を表示させ,「cd」命令を使って以下のように入力します。

コード

cd /mnt/c

するとWindowsのCドライブを表示するディレクトリへプロンプトが移動します。

後は,Windowsのファイル構成に合わせて目的のディレクトリまで「cd」命令を使って移動し,ファイル操作を行うだけです。

あくまでもLinuxコンソール上で操作しますので,Linux命令文で指定してください。




  3.WSL2のエクスポート(バックアップ)方法

ここでは,WSL2全体をバックアップ(エクスポート)する方法を学習します。

①コマンドプロンプト画面を表示

Windows」+「R」キーを押す ->「ファイル名を指定して実行」ー>名前欄に「cmd」と入力 ->「OK」をクリック


②以下のコマンドを入力し,エクスポートするデータを保存するディレクトリを作成

現在のユーザディレクトリ下に仮に「wsl2-export」というディレクトリを作成します。

コード

mkdir wsl2-export

作成したディレクトリにプロンプトを移動します。

コード

cd wsl2-export


③WSL2のエクスポートを実行するため、以下のコマンドを入力

ディストリビューション名を「Ubuntu-24.04」とし,書き出す任意ファイル名称を「Ubuntu-24-04.tar」としています。

コード

wsl --export Ubuntu-24.04 Ubuntu-24-04.tar

表示メッセージ例
「エクスポートが進行中です。これには数分かかる場合があります。(XXXX MB)
この操作を正しく終了しました。」

というメッセージが出ればOKです。このエクスポート処理には大体1~数分かかります。

なお,ディストリビューション名は以下のコマンドを入力して確認しておきます。

コード

wsl -l

表示メッセージ例
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-24.04 (既定)

これで,WSL2の内容をバックアップすることが出来ました。「Powershell]でも同様に実行できます。




  4.WSL2のインポート(回復)方法

エクスポートしたファイルから回復してみます。WSLは停止して下さい。Linuxコンソール画面を閉じれば停止します。

なお,ここからは環境変数などを使いたいので,「PowerShell」を利用して記述します。「PowerShell」の起動方法は,Windows11の検索欄から「PowerShell」と入力すれば表示されます。

①「PowerShell」画面上で,ディストリビューション名と停止の確認

PowerShell」画面上で,以下の命令を入力します。

コード

wsl -l -v

表示メッセージ例
   NAME                STATE           VERSION
* Ubuntu-24.04    Stopped         2


【参考】参考までに停止コマンドは次のとおりです。

コード

wsl --terminate Ubuntu-24.04




②現在インストール中のディストリビューションの削除

以下の削除コマンドを入力します。

コード

wsl --unregister Ubuntu-24.04


これによって,wslにインストールされているディストリビューションが削除されます。



③エクスポートファイルから復元するディストリビューション配置先ディレクトリの作成

通常,WSL2のLinuxディストリビューションはユーザフォルダ下の「AppData\Local(環境変数LOCALAPPDATA)」ディレクトリ下に置かれます。

今回は,「AppData\Local(環境変数LOCALAPPDATA)」の下に「Ubuntu-24」という配置先ディレクトリを作成します。以下のようにコマンド入力します。

コード

mkdir $env:LOCALAPPDATA\Ubuntu-24



④エクスポートファイルを使ってWSL2にインポート

--import」オプションで,新ディストリビューション名とその配置先ディレクトリ,インポート元のエクスポートファイルを指定して「wsl」コマンドを実行します。WSL2バージョンとするため「--version 2」を指定します。

コード

wsl --import Ubuntu-24 $env:LOCALAPPDATA\Ubuntu-24 Ubuntu-24-04.tar --version 2

)エクスポートファイルが読めるように,実行ディレクトリをエクスポートファイルが存在するディレクトリにして実行して下さい。

これにより,「Ubuntu-24」という新しいディストリビューションが登録されたと思います。以下のコマンドを入力し確認します。

コード

wsl -l

【表示メッセージ例】
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-24 (既定)

新しいディストリビューション名で作成されたのがわかります。

⑤注意事項1

ここで,注意点があります。WSL2をexport,importで復元すると,Windows11のWindowsTerminalで「ユーザー設定の読み込み中にエラー」が発生します。

WindowsTerminalのエラー画面
WindowsTerminalのエラー画面  


新しいディストリビューションでは,「icon」が読み込めないようです。これはマイクロソフトのバグだと思いますが,原因はWindowsTerminalなのか,WSL側のimport処理なのかは分かりません。

解除方法としては,Windows11の検索欄にターミナルと入力し,WindowsTerminalを表示させます。「ユーザ設定の読み込み中にエラーが発生しました」と出ますから,「OK」をクリックします。

続いて,この画面の上部にある「V」マークを押して,プルダウンの中から「設定」を選択します。

次画面の左側の一覧から,新しいデストリビューション名「ここではUbuntu-24」をクリックして,右側のアイコン欄を見てください。アイコン場所「パス名」の頭に「\\?\」という文字が付いていると思います。

アイコン場所「パス名」をクリックして,この文字を取り除いてください。

ディストリビューションのアイコンが表示されたと思います。これを保存すれば完了です。

なお,エクスポートファイルを利用した回復では,Windowsスタートメニューに新しいディストリビューション名が出力されます。

⑥注意事項2

新しいディストリビューションがWSL2に登録された場合,ユーザ名を指定せずに起動すると,デフォルトが「root」になると以前は言われていましたが,今回の実証ではそのような事はなくユーザ名でデフォルトログイン出来ました。

しかし,もし出来ない場合はLinuxデストリビューションを立ち上げ,スーパーユーザ権限「root権限」で「/etc/wsl.conf」ファイル内の[user]項の内容を下記のように書き換えてください。

コード

[user]
default=ユーザ名

これで該当するLinuxディストリビューションを起動し直せば,インストール時に指定したユーザ名で立ち上がると思います。

また,インターネット上には「ディストリビューション名 config --default-user ユーザ名」というコマンドで設定できるという説明がありますが,Microsoft StoreからインストールしたLinuxディストリビューションでないと設定できないようです。

(注)今回の実証では,installコマンドを使ってLinuxディストリビューションをインストールしたので無理でした。

バックアップや回復等を考慮すると,「/etc/wsl.conf」を修正した方が確実だと言えます。




  5.ディストリビューション回復の新しい方法

さて,WSL2の回復方法について見てきましたが,最近は「--export」オプションを使うのではなく,ディストリビーションそのものをコピーしバックアップする方法が増えているようです。

ディストリビューション本体は「ext4.vhdx」というファイル名で,それ自体をバックアップしておこうということです。

この本体は,先ほどの環境変数「$env:LOCALAPPDATA」配下にあるので,それを見つける必要があります。

例えば今回の例で言えば,「Ubuntu-24」のLinuxディストリビューションファイルは,「$env:LOCALAPPDATA¥Ubuntu-24」のディレクトリ下にあります。


①「ext4.vhdx」と「--import」オプションによる回復方法

仮に「ext4.vhdx」が「$env:LOCALAPPDATA¥Ubuntu-24」ディレクトリ下にバックアップされていたとして,「ext4.vhdx」ファイルから「NewUbuntu1」という新しいディストリビューションを作成してみましょう。

PowerShell」を立ち上げ,ディストリビューションの新しい配置先「NewUbuntu1」を作成します。


コード

mkdir $env:LOCALAPPDATA\NewUbuntu1

「--import」オプションを使って,新しい配置先「NewUbuntu1」に「ext4.vhdx」をインポートします。

コード

wsl --import NewUbuntu1 $env:LOCALAPPDATA\NewUbuntu1 $env:LOCALAPPDATA\Ubuntu-24\ext4.vhdx --version 2 --vhd


若干,説明をします。
  • NewUbuntu1」は新しいディストリビューション名です。
  • $env:LOCALAPPDATA\NewUbuntu1」はインポート先ディレクトリです。
  • $env:LOCALAPPDATA\Ubuntu-24\ext4.vhdx」インポート元ファイルです。
  • --version 2」はWSL2バージョンを表します。
  • --vhd」はインポート元ファイルが仮想ディスク形式であると宣言します。
これにより,「NewUbuntu1」という新しいディストリビューションが登録された思います。以下のコマンドを入力し確認します。

コード

wsl -l

【表示メッセージ例】
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-24 (既定)
NewUbuntu1

新しいディストリビューション名で作成されたのがわかります。

なお,この方法での回復はアイコンがペンギンマークになり,Windowsスタートメニューには登録されませんでした。


②「ext4.vhdx」と「--import-in-place」オプションによる回復方法

次に,「--import-in-place」オプションを使った回復方法です。

「PowerShell」を立ち上げ,ディストリビューションの新しい配置先「NewUbuntu2」を作成します。


コード

mkdir $env:LOCALAPPDATA\NewUbuntu2

cp」コマンドを使って,新しい配置先「NewUbuntu2」に「ext4.vhdx」をあらかじめコピーしておきます。

コード

cp $env:LOCALAPPDATA\Ubuntu-24\ext4.vhdx $env:LOCALAPPDATA\NewUbuntu2



「--import-in-place」オプションを使って,コピーされた「ext4.vhdx」から新しいディストリビューションを作成します。


コード

wsl --import-in-place NewUbuntu2 $env:LOCALAPPDATA\NewUbuntu2\ext4.vhdx


これにより,「NewUbuntu2」という新しいディストリビューションが登録されたと思います。以下のコマンドを入力し確認します。

コード

wsl -l

【表示メッセージ例】
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-24 (既定)
NewUbuntu2
NewUbuntu1

新しいディストリビューション名で作成されたのがわかります。

なお,この方法での回復も,アイコンがペンギンマークになり,Windowsスタートメニューには登録されませんでした。


【付録】

複数のディストリビューションを登録した場合,デフォルト(既定)は以下のコマンドで変更できます。「wsl --help参照

コード

wsl --set-default NewUbuntu2

これにより,「NewUbuntu2」という新しいディストリビューションがデフォルト(既定)になったと思います。以下のコマンドを入力し確認します。

コード

wsl -l

【表示メッセージ例】
Linux 用 Windows サブシステム ディストリビューション:
NewUbuntu2 (既定)
NewUbuntu1
Ubuntu-24

デフォルト(既定)が切り替わったのがわかります。




  6.まとめ

Windows11上でのLinuxディストリビューションのファイル操作と,WSL2全体のバックアップと回復方法について学習しました。

今回の内容を見ても,WindowsがLinuxに対してサポート途上にあることが解ります。

そのため,仕様が変わりつつあり,数年後にはやり方が大きく変わっているのではないかと思います。

そうであっても,Windows11上でLinuxが使えるのはとても魅力的なことです。

Webサーバの構築や複雑な数値計算,AI研究など,Linuxの得意な処も使えますし,物理的に機器を複数持たなくても良くなりますから経済的です。

今回は,ファイル操作およびバックアップと復元方法について主に学習しました。次回は,外部ネットワークからのWSL2へのアクセス方法について学習します。


それでは,楽しいITリテラシーライフをお送りください。


(ご注意)情報の正確性を期していますが,実施される場合には自己責任でお願いします。

0 件のコメント: