WSL 2 の環境をバックアップ&複製する方法
WSL 2 を使用していると、1つのディストリビューションにつき1つの環境しか作れないように感じてしまいますが、実はそんなことはありません。 WSL 2 のエクスポートとインポートの機能を使用すると、環境を丸ごとバックアップしたり、同じ環境を簡単に複製したりすることができます。 複数の環境を作って動作確認したい場合などではとても便利です。 WSL 2 の使い方がわからないという方は、まずは「WSL(Windows Subsystem for Linux)の使い方」を参考にしてください。
環境をバックアップ(エクスポート)する
WSL 2 の指定したディストリビューションを丸ごと .tar ファイルに出力(エクスポート)することができます。 出力された .tar ファイルを保存しておけば、環境を丸ごとバックアップしておくことができます。
エクスポートするには、wsl
コマンドで --export
オプションを使用し、
エクスポートしたいディストリビューション名と、エクスポート先のファイル名を指定します。
ファイルのフォーマットは .tar ファイルになります。
wsl --export <Distro> <FileName>
wsl --export Ubuntu "C:\Users\Test\Ubuntu.tar"
バックアップから復元(インポート)する
.tar ファイルにエクスポートした環境を、新しい環境に復元(インポート)することができます。
エクスポートした .tar ファイルをインポートするには、wsl
コマンドで --import
オプションを使用し、
新しいディストリビューション名、VHD ファイルを保存するディレクトリ名、インポートする .tar ファイル名を指定します。
WSL 2 の各ディストリビューションは、VHD ファイルで管理されています。 VHD というのは、Virtual Hard Disk の略です。 つまり、仮想ハードディスクファイルです。 この VHD ファイルこそが各ディストリビューションの本体ということになります。 インポートする際には、その VHD ファイルをどこに置くか(つまり、どこにインポートするか)を指定する必要があります。 場所はどこでも良いのですが、ホームディレクトリなどの邪魔にならないところに置いておくと良いでしょう。
なお、インポートした環境を起動すると、何故かデフォルトのユーザーが root になってしまうという問題が発生します。 デフォルトのユーザーを変更する方法は後述します。
wsl --import <Distro> <InstallLocation> <FileName>
VHD ファイルを "C:\Users\Test\wsl\NewUbuntu" ディレクトリに置いて、
"C:\Users\Test\Ubuntu.tar" ファイルをインポートする場合。
wsl --import NewUbuntu "C:\Users\Test\wsl\NewUbuntu" "C:\Users\Test\Ubuntu.tar"
環境を複製(コピー)する
環境を複製(コピー)するには、エクスポートしてからインポートすれば良いのですが、 その場合はバックアップとしての .tar ファイルを経由させる必要はありません。 標準入出力を使用すると良いでしょう。
エクスポートの際、ファイル名に -
を指定すると、標準出力にエクスポートされるようになります。
また、インポートの際、ファイル名に -
を指定すると、標準入力からインポートされるようになります。
この2つを組み合わせることで、.tar ファイルを使用せずに、簡単に環境を複製(コピー)することができます。
wsl --export <FromDistro> - | wsl --import <ToDistro> <InstallLocation> -
その VHD ファイルを "C:\Users\Test\wsl\CopyUbuntu" ディレクトリに置く場合
wsl --export Ubuntu - | wsl --import CopyUbuntu "C:\Users\Test\wsl\CopyUbuntu" -
インポートした環境のデフォルトのユーザーを変更する
インポートした環境を起動すると、何故かデフォルトのユーザーが root になってしまうという問題が発生します。 デフォルトのユーザーを変更する方法は、主に2つあります。
- ディストリビューションの設定ファイルでユーザーを指定する
- 起動時に
--user
オプションでユーザーを指定する
ディストリビューションの設定ファイルでユーザーを指定する
ディストリビューションの設定ファイルは、各ディストリビューションの中の "/etc/wsl.conf" に作成します。
フォーマットは ini です。
[user]
セクションの中の default
という項目で、デフォルトのユーザーを指定できます。
[user] default = test
なお、この設定ファイルが反映されるのは、そのディストリビューションを次に起動した時(つまり、Stopped
から Running
に変わるとき)です。
下記のコマンドを実行して、ディストリビューションの状態を確認してください。
ターミナルを閉じて開きなおしたとしても、そのディストリビューションがずっと Running
状態のままなら反映されないので注意してください。
wsl -l -v
ディストリビューションを停止させたい場合は、wsl
コマンドで、--terminate
オプションを使用します。
--terminate
オプション には、エイリアス(別名) -t
オプションがあります。
wsl --terminate <Distro>
wsl --terminate NewUbuntu
起動時に --user オプションでユーザーを指定する
もう一つの方法は、wsl
コマンドでディストリビューションを起動する際に、
--user
オプションでデフォルトのユーザーを指定する方法です。
--user
オプション には、エイリアス(別名) -u
オプションがあります。
wsl -d NewUbuntu -u test
Windows ターミナルのコマンドライン欄に登録しておくと便利かもしれません。