
如果您需要在不同Windows设备间迁移WSL发行版,或为当前Linux环境创建可恢复的备份,则需通过导出与导入功能实现系统状态的完整复制。以下是执行该操作的具体步骤:
一、使用wsl –export命令导出WSL发行版
导出操作会将指定发行版的整个根文件系统打包为tar格式归档文件,包含所有已安装软件、用户配置、文件及权限信息,适用于离线备份或跨主机迁移。
1、以管理员身份打开Windows终端(PowerShell或CMD)。
2、运行wsl -l -v查看当前已安装的发行版名称及其状态。
3、执行命令:wsl –export <发行版名称> <导出路径>\<文件名>.tar,例如:wsl –export Ubuntu-22.04 D:\backup\ubuntu2204.tar。
4、等待命令完成,确认目标路径下生成了对应.tar文件。
二、使用wsl –import命令导入WSL发行版
导入操作可将此前导出的.tar文件还原为一个全新的、独立命名的WSL发行版,支持自定义安装路径与默认用户设置,不覆盖原有发行版。
1、确保目标目录存在且有足够磁盘空间,例如创建文件夹D:\wsl\Ubuntu-Backup。
2、运行命令:wsl –import <新发行版名称> <安装路径> <源tar文件路径> –version 2,例如:wsl –import Ubuntu-22.04-Backup D:\wsl\Ubuntu-Backup D:\backup\ubuntu2204.tar –version 2。
3、导入完成后,执行wsl -l -v确认新发行版已列出且状态为“Stopped”。
4、首次启动前需设置默认用户:进入该发行版后运行ubuntu2204.exe config –default-user <用户名>(具体可执行文件名依发行版而定)。
三、通过手动导出/导入结合systemd配置保留服务状态
若需迁移含systemd支持的WSL发行版(如通过wslu或genie启用),单纯tar导出无法保存运行时单元状态;此时应先导出已启用的服务配置,再导入后重新激活。
1、在原发行版中运行:sudo systemctl list-unit-files –state=enabled –no-pager | awk ‘{print $1}’ | grep -vE ‘^(UNIT|\.socket|\.timer)$’ > /tmp/enabled-services.list。
2、将该列表文件与.tar一同备份。
3、导入新发行版后,逐条执行:sudo systemctl enable <服务名>,依据/tmp/enabled-services.list内容批量恢复。
四、利用wsl –terminate与注册表清理避免冲突
当导入同名发行版或重复导入导致wsl -l显示异常条目时,需终止相关实例并清除注册表残留项,防止后续导入失败或启动错误。
1、运行wsl –terminate <发行版名称>强制关闭对应实例。
2、在PowerShell中执行:Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object { Get-ItemProperty $_.PSPATH } | Where-Object { $_.DistributionName -eq ‘<发行版名称>’ } | Remove-Item。
3、重启Windows终端,再执行导入操作。
五、验证导入后的发行版完整性
导入完成后需检查关键组件是否正常加载,包括用户主目录、shell配置、包管理器缓存及挂载点,确保环境功能与原始系统一致。
1、运行wsl -d <新发行版名称>启动实例。
2、依次执行:ls -la ~、cat /etc/os-release、apt list –installed | head -n 10(Debian/Ubuntu系)或dnf list installed | head -n 10(Fedora系)。
3、检查/mnt/c等Windows驱动器挂载是否可用,运行ls /mnt/c/Windows确认访问权限。

评论(0)