WSL2 导入和导出
本文最后更新于 2024年10月20日 中午
WSL 的虚拟磁盘 ext4.vdhx 只会随着数据的增加自动扩展,但不会自动缩小。导出压缩再导入似乎是一种解决方法,但我并没有成功。 所以想到虚拟机创建镜像的方式,在某个时间节点备份一下 WSL 的数据,达到缩小磁盘的目的,同时避免重装系统带来的重复的配置工作。
导出 WSL
查看 WSL 发行版列表
1
wsl --list
关闭 WSL
或1
wsl --shutdown
1
wsl --terminate ${wsl}
导出 WSL 发行版
1
wsl --export ${wsl} ${path}
- wsl 是发行版名称,如 Ubuntu-20.04
- path 是导出的路径,如
D:\wsl\Ubuntu-20.04.tar
此处导出的文件就可以作为系统的备份。
导入 WSL
由于 wsl --import 需要指定一个安装路径,我采用先删除再创建新的 WSL,创建时导入备份文件。
在 PowerShell 中查看 WSL 发行版路径
这里是为了把新系统安装到相同的路径,如果不需要可以跳过这一步。1
2
3Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" | ForEach-Object {
Get-ItemProperty $_.PSPath | Select-Object DistributionName, BasePath
}如果得到类似 C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState 这样的路径,说明 WSL 是通过 Microsoft Store 安装的,不建议在 import 时指定相同的路径,因为这样可能会导致系统不稳定或损坏现有的发行版(没试过)。
如果一定要安装到相同的路径,可以先备份 ext4.vhdx 文件,然后删除 WSL 发行版,创建新的 WSL 后,把新的 ext4.vhdx 文件删除,再把备份的 ext4.vhdx 文件放到那里(也没试过)[1]。
删除 WSL 发行版
1
wsl --unregister ${wsl}
- wsl 是发行版名称,如 Ubuntu-20.04
- 创建 WSL 发行版
1
wsl --import ${wsl} ${path} ${tar}
- wsl 是发行版名称,如 Ubuntu-20.04
- path 是安装路径,如
D:\wsl\Ubuntu-20.04
- tar 是备份文件路径,如
D:\wsl\Ubuntu-20.04.tar