WSLのまるごとスナップショットを取りたい場面があって調べた時のメモ

事前準備

  • Docker Desktopは終了させておく
  • aptなどをきれいにしておく
    • sudo apt clean && sudo apt autoclean && sudo rm -rf /var/lib/apt/lists/*
  • ディスクを解放しておく
  • ディレクトリを作成しておきます。ここでは、 C:\WSL\Debianとします。

注: この記事ではディストーションは Debianとなっています。Ubuntuの方は適宜読み替えお願いします

バックアップ

PowerShellを起動し、バックアップを取得します。

1
2
3
4
5
// バックアップを取得(tar)
PS C:\Users\nobiki> wsl --export Debian c:\WSL\debian-clean.tar
エクスポートが進行中です。これには数分かかる場合があります。 (1557 MB)

この操作を正しく終了しました。

(任意) 後で復元テストする場合は、この時点でWSLに入り、 touchなどで目印をつけておきます

1
2
3
wsl $ touch hoge
wsl $ ls /home/xxxxx/hoge
/home/xxxxx/hoge

復元

作成したら、復元を行います。

1
2
3
4
5
6
7
8
// ディストリビューションの登録を解除
PS C:\Users\nobiki> wsl --unregister Debian
登録解除。
この操作を正しく終了しました。

// バックアップファイルをインポート
PS C:\Users\nobiki> wsl --import Debian C:\WSL\Debian C:\WSL\debian-clean.tar
この操作を正しく終了しました。

復元テスト

WSL(Debian)がインポートできているか確認

1
2
3
4
PS C:\Users\nobiki> wsl --list --verbose
NAME STATE VERSION
* docker-desktop Running 2
Debian Stopped 2

デフォルトユーザは、 rootになっている可能性があるため、ログインしてみて確認します。

1
2
3
// rootになっている
PS C:\Users\nobiki> wsl -d Debian
root:~# exit

デフォルトユーザを元のユーザに変更します。

1
2
3
4
5
PS C:\Users\nobiki> wsl --manage Debian --set-default-user nobiki
この操作を正しく終了しました。

PS C:\Users\nobiki> wsl -d Debian
nobiki:~ $

(任意)バックアップ直後に作ったファイルがあるか確認

1
2
nobiki:~ $ ls /home/xxxxx/hoge
ls: '/home/xxxxx/hoge' にアクセスできません: そのようなファイルやディレクトリはありません

Docker Desktopを起動し、WSLから使用できるか確認

1
2
nobiki:/mnt/c/Users/nobiki $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES