WSL备份与还原(安装路径迁移)

通过 wsl export/import 命令可以实现WSL的备份与还原,在还原时可以指定安装路径从而实现安装路径迁移。

备份
1
2
3
4
5
6
7
8
# 查看已安装的所有子系统
wsl --list --all
# 查看正在运行的子系统
wsl --list --running
# 若要备份的子系统正在运行,则将其终止
wsl -t Ubuntu-18.04
# 导出子系统到.tar文件 wsl --export <DistributionName> <FileName>
wsl --export Ubuntu-18.04 D:\wsl\backup\ubuntu1804.tar
还原
1
2
3
4
# 注销子系统(视情况,看是否需要)
wsl --unregister Ubuntu-18.04
# 导入子系统 wsl --import <DistributionName> <InstallLocation> <FileName>
wsl --import Ubuntu-18.04 D:\wsl\Ubuntu1804\ D:\wsl\backup\ubuntu1804.tar

新还原的Ubuntu子系统的默认用户会变成root(无论是在Windows Terminal中打开Ubuntu还是在vscode中通过Remote-WSL启动Ubuntu)
可以通过下面的命令

修改子系统默认用户
1
2
3
4
5
6
# 定义函数WSL-SetDefaultUser,接收参数distro和user
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-18.04 daimingzhuang
# 取消函数定义
Remove-Item Function:WSL-SetDefaultUser

参考:

WSL备份与还原 | 小肥羊吃草不吃肉 (xfy-learning.com)