WSLが登場してから大変便利に利用しています。
以前はVMwareやVirtualBoxといった仮想マシンをローカルPCへ入れたりしていましたが、私の場合、たいていはWSLで足りる感じになっています。
私の場合、環境を使っているうちに、クラッシュしたり、パッケージをいじくりまわして設定おかしくなって困ったなど、しばしば環境を戻したいことがあります。
仮想マシンを利用していた時はそのイメージのスナップショットを取得することで丸ごとバックアップしていました。
WSL2でもバックアップすることが可能です。手順をメモしておきます。
環境
2023年1月時点の内容になります。WSLは結構進化している印象ですので、記事が古くなった際は注意です。
(導入手順など初期に比べるとかなり楽になりました)
OSはWindows11 Proです。PowerShellから操作します。
PS > wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.22621.1105
登録済みWSL環境を複製する手順
元となる仮想ディスクの場所を確認
UbuntuをMicrosoftストアなどから導入した場合、下記にインストールされているはずです。
$env:LOCALAPPDATA\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\
エクスプローラーでも確認可能です。下記へアクセスします。
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\
ext4.vhdx
というファイルが仮想ディスクファイルの実体になります。
WSLを停止
まずはディストリビューションを確認します。
PS > wsl --list --verbose
NAME STATE VERSION
* Ubuntu Stopped 2
停止します
PS > wsl --terminate Ubuntu
この操作を正しく終了しました。
ディストリビューションをコピー
下記コマンドを実行します。
PS > wsl --import NewUbuntu .\NewUbuntu $env:LOCALAPPDATA\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx --version 2 --vhd
インポート中です。この処理には数分かかることがあります。
この操作を正しく終了しました。
パラメータ --import
で既存のものから新しいディストリビューションを作成することを指示しています。
先頭の NewUbuntu
は新しいディストリビューション名(識別名)です。
2つ目の .\NewUbuntu
はインストール先のパスです。
3つ目はインポート元のファイルです。上記の ext4.vhdx
ファイルをフルパスで指定しています。
--version 2
は作成されるWSLバージョンが2であることを指示しています。
最後の --vhd
はインポート元ファイルが .vhdx
であることを指示しています。
確認
指定したインストール先パスへ .vhdxファイルが作成されています。
PS > ls .\NewUbuntu\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/01/16 12:01 1155530752 ext4.vhdx
WSL上の管理対象ディストリビューションとして登録されています。
PS > wsl --list --verbose
NAME STATE VERSION
NewUbuntu Stopped 2
* Ubuntu Stopped 2
作成したディストリビューションを実行します。
PS > wsl --distribution NewUbuntu
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64)
...
root@pc:/mnt/c/Users/....#
.vhdxファイルから復元する手順
登録済みディストリビューションとしてではなく、.vhdxファイルがあれば新たな環境を作成することも可能です。
バックアップ用途であればこちらの手順となります。
上記で作成した NewUbuntu
ディストリビューションを複製します。
.vhdxファイルをローカルディスクへコピー
本手順では NewUbuntu
ディストリビューションの.vhdxファイルをコピーします。
(バックアップからのリストアの場合は別ストレージから.vhdxファイルをコピーすることになります)
PS > mkdir NewUbuntuCopy
PS > cp .\NewUbuntu\ext4.vhdx .\NewUbuntuCopy\
新規ディストリビューションとして登録
--import-in-place
パラメータによって、既に存在する.vhdxファイルからディストリビューションを登録します。
指示する内容はディストリビューション名 NewUbuntuCopy
と、上記でコピーした. vhdxファイルパスです。
PS > wsl --import-in-place NewUbuntuCopy .\NewUbuntuCopy\ext4.vhdx
この操作を正しく終了しました。
確認
WSL上の管理対象ディストリビューションとして NewUbuntuCopy
が登録されています。
PS > wsl --list --verbose
NAME STATE VERSION
NewUbuntu Stopped 2
* Ubuntu Stopped 2
NewUbuntuCopy Stopped 2
作成したディストリビューションを実行します。
PS > wsl --distribution NewUbuntuCopy
root@pc:/mnt/c/Users/....#
不要なディストリビューションを削除
不要になったディストリビューションを登録解除します
.vhdxファイルも削除されるので注意です。
PS > wsl --unregister NewUbuntu
登録解除。
この操作を正しく終了しました。
最後に
以前は --export
によって出力された .tarファイルを --import
する手順だったと記憶しています。
現在は .vhdxファイルを直接指定して --import
または --import-in-place
によるディストリビューション登録が可能になっています。
.vhdxファイルだけバックアップしておけば復元できるのでとても簡単になりました。