WSL上のLinuxのバックアップ
はじめに_
Windows Subsystem for Linux上にインストール(構築)したLinuxをバックアップ&リストアする方法を説明する。
多くのソフトウェアにおいて、ソフトウェアで管理しているデータや設定をファイルの形で保存する機能を export (エクスポート)といい、ファイルの形で保存されている設定やデータを当該ソフトウェアに反映させる機能を import (インポート)と言う。
バックアップ(backup)はトラブルや故障発生時した際にソフトウェアの設定やデータを復元することを目的として、設定やデータを保管しておく行為を言う。一方で、リストア(restore, 復元、復旧)はバックアップしておいたデータを使って、トラブルや故障発生前の状態に復元することを言う。
今回はWSLのエクスポート・インポートの機能を用いて、バックアップとリストア、あるいは別Windows PCへの移行を行う。
参考ページ_
バックアップ(エクスポート)_
Windowsのコマンドプロンプト or PowerShellで実行する。まず、現在インストール済みのLinuxの一覧を表示する。(> の後ろがコマンド)
> wsl --list Linux 用 Windows サブシステム ディストリビューション: Ubuntu-18.04 (既定) docker-desktop Ubuntu-20.04 docker-desktop-data
私の環境では4つのLinuxがインストールされています。Ubuntu 18.04とUbuntu 20.04、そして、Docker Desktopです(Docker Desktopは2つのLinuxイメージとなっている)。
今回はこれをEドライブのWSL-Dataというフォルダ(E:\WSL-Data)にエクスポートすることとします。コマンドは以下のとおりです。
>wsl --export Ubuntu-18.04 E:\WSL-Data\Ubuntu-18.04.tar >wsl --export Ubuntu-20.04 E:\WSL-Data\Ubuntu-20.04.tar >wsl --export docker-desktop E:\WSL-Data\docker-desktop.tar >wsl --export docker-desktop-data E:\WSL-Data\docker-desktop-data.tar
ファイルが生成されているかを確認する。Linuxでのlsコマンドに該当するのがdirコマンドである。
>dir E:\WSL-Data ドライブ E のボリューム ラベルは ボリューム です ボリューム シリアル番号は D270-1FDC です E:\WSL-Data のディレクトリ 2021/12/30 16:56 <DIR> . 2021/12/30 16:56 <DIR> .. 2020/12/21 10:46 <DIR> docker-desktop 2020/12/21 10:41 <DIR> docker-desktop-data 2021/12/30 18:51 17,693,593,600 docker-desktop-data.tar 2021/12/30 18:38 68,085,760 docker-desktop.tar 2020/12/13 20:23 <DIR> Ubuntu-18.04 2021/12/30 16:54 6,672,916,480 Ubuntu-18.04.tar 2021/12/30 17:16 10,160,373,760 Ubuntu-20.04.tar 4 個のファイル 34,594,969,600 バイト 5 個のディレクトリ 2,497,158,995,968 バイトの空き領域
以上でバックアップ終了。
リストア(インポート)_
参考サイト_
インストール先フォルダの作成_
今回はEドライブの下にWSL-OSというフォルダを作成しているとする(E:\WSL-OS)。まず、PowerShell上でバックアップファイルがあるフォルダに移動する。
> cd E:\WSL-Data > ls ディレクトリ: E:\WSL-Data Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/12/30 18:51 17693593600 docker-desktop-data.tar -a---- 2021/12/30 18:38 68085760 docker-desktop.tar -a---- 2021/12/30 16:54 6672916480 Ubuntu-18.04.tar -a---- 2021/12/30 17:16 10160373760 Ubuntu-20.04.tar
インポートするコマンドは以下の構成になっている。
wsl --import ディストリビューション名 インストール先パス パックアップファイルパス
PowerShell上で以下のコマンドを実行する。
> wsl --import Ubuntu-20.04 E:\WSL-OS¥Ubuntu-20.04 E:\WSL-Data\Ubuntu-20.04.tar
確認する。
> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2
Ubuntu 20.04をPowerShell上で動かしてみる。なお、インポートしたLinuxディストリビューションはrootユーザで起動する。このため、一般ユーザで動かすには別途作業が必要となる(参考:WSL 固有のコンポーネントを既定のユーザーのように追加する)。
> wsl -d Ubuntu-20.04 root@DESKTOP-C6H531E:/mnt/e/WSL-Data# id uid=0(root) gid=0(root) groups=0(root)
一般ユーザを作成していない場合は作成する。たとえば、gotohという一般ユーザが作成済みかどうかは以下のように確かめることができる。以下のコマンドでは、全ユーザ情報が記載されているファイル/etc/passwd中にgotohを含む行があるかを探している。gotohが含まれている行が列挙されているので、gotohは作成済みと判断できる。ユーザhogehogeは含まれている行がみつからなかったので、作成されていない。
root@DESKTOP-C6H531E:/mnt/e/WSL-Data# grep gotoh /etc/passwd gotoh:x:1000:1000:,,,:/home/gotoh:/bin/bash root@DESKTOP-C6H531E:/mnt/e/WSL-Data# grep hogehoge /etc/passwd
(必要に応じて実施する)一般ユーザが作成されていない場合は以下のように作成する。以下はユーザgotohを例にしている。3行目のコマンドで新しく追加したユーザgotohでsudoが使えるようにしている。
# groupadd gotoh # useradd -m -g gotoh -s /bin/bash gotoh # gpasswd -a gotoh sudo # passwd gotoh New password: (パスワードを設定する。入力しても何も表示されないので注意) Retype new password: (同じパスワードをもう一度入力する) passwd: password updated successfully
次回の起動時は一般ユーザで起動するように設定する。以下の例ではユーザgotohで設定している。
# echo -e "[user]\ndefault=gotoh" >> /etc/wsl.conf # more /etc/wsl.conf [user] default=gotoh
Ubuntuからログアウトする。
# exit
一度、Ubuntuを終了する。
> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Running 2 > wsl --terminate Ubuntu-20.04 > wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2
再び、Ubuntuを起動してみる。起動時のユーザが一般ユーザ(この例ではgotoh)であることを確認する。確認したらログアウトする。
> wsl -d Ubuntu-20.04 gotoh@DESKTOP-C6H531E:/mnt/e/WSL-Data$ id uid=1000(gotoh) gid=1000(gotoh) groups=1000(gotoh),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker) gotoh@DESKTOP-C6H531E:/mnt/e/WSL-Data$ exit ログアウト
Ubuntuを終了する。
> wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Running 2 > wsl --terminate Ubuntu-20.04 > wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Stopped 2
起動用ショートカットを作成する_
適当な場所にショートカットを作成し、ショートカットをクリックすることでWSL上のLinuxを起動できるようにする。デスクトップなどで右クリックを押し「新規作成」→「ショートカット」を選択する。この例ではUbuntu 18.04だが同じ方法でUbuntu 20.04のショートカットも作成できる。

「項目の場所」として以下を入力する。
C:\Windows\System32\wsl.exe -u 「Ubuntu 18.04の初期ユーザ名」 -d Ubuntu-18.04

ショートカットの名前を入力する。この例では「Ubuntu 18.04」としている。

WSL.EXEのショートカットは以下のLinuxペンギンになる。

ショートカット上で右クリックし「プロパティ」を選択すると以下の画面が開く。ここでアイコンやUbuntu起動時のフォルダ(ディレクトリ)を変更できる。「作業フォルダ」でUbuntu起動時のフォルダ(ディレクトリ)を変更できる。
