まとめ
wsl --export
とwsl --import
- インポートした後はデフォルトのユーザーが
root
になってしまうので、設定してやる必要がある - .bat を書けばバックアップをとってからシャットダウン、もできる
事の起こり
- WSL2をゴリゴリ仕事で使っている
- 何かあったとき戻せるようにしたい
- ツール類の再インストール作業などなるべくしたくない
- プロビジョニングツールはツールの更新で動かなくなったりしてつらい
- スナップショットとりたい
バッチファイルを書いた
wsl-backup.bat
@echo off echo %date% echo %time% set yyyy=%date:~0,4% set mm=%date:~5,2% set dd=%date:~8,2% set time2=%time: =0% set hh=%time2:~0,2% set mn=%time2:~3,2% set ss=%time2:~6,2% set timestamp=%yyyy%-%mm%-%dd%-%hh%-%mn%-%ss% wsl --export Ubuntu D:\backups\wsl\Ubuntu_%timestamp%.tar
shutdown.bat
@echo off call D:\wsl-backup.bat shutdown /s /t 30 /c "Shut down after 30 seconds."
仕事終わりに shutdown.bat を「管理者で実行」
復元方法
WSL2のセットアップを終えた環境で
wsl --import <NAME> <PATH> <FILE>
例
wsl --import Ubuntu "C:\wsl\Ubuntu" D:\backups\wsl\Ubuntu_2020-05-30-11-19-12.tar
デフォルトのユーザーを設定
そのままだと root
になるので、デフォルトのユーザーを指定します。
C:\Users\yuichi> wsl Last login: Fri Apr 17 21:35:43 JST 2020 on pts/5 Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.4.72-microsoft-standard-WSL2 x86_64) root@PANDA:~#
Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); }; WSL-SetDefaultUser <DistroName> <UserName>
例
WSL-SetDefaultUser Ubuntu takeyuweb