很多开发者使用 WSL2 做开发环境,但大多没有规范的备份习惯。重装系统、迁移电脑、环境损坏,都会导致 配置、依赖、项目环境全部丢失。
网上多数教程还在用老旧的 tar 裸导出,速度慢、体积大、恢复繁琐。本文基于 WSL 官方原生参数,讲解目前 最快、最稳、最适合日常使用的 WSL2 备份方案——直接导出 VHD 虚拟磁盘。
本文适配 WSL2 + Debian,Ubuntu 等其他发行版可直接通用。
一、先确认当前 WSL 环境
首先打开 PowerShell,查看本机 WSL 发行版名称与版本:
wsl --list --verbose
我的环境输出如下(标准 WSL2 环境): NAME STATE VERSION
* Debian Running 2
关键信息:- 发行版名称:Debian(后续所有命令必须和这个名字一致)
- 版本:WSL2(支持 VHD 磁盘备份)
二、WSL 四种导出格式对比(选最优)
WSL 官方 --export 支持四种格式,彻底告别传统 tar 大包:
| 格式 | 特点 | 速度 | 体积 | 推荐场景 |
|---|---|---|---|---|
| vhd | 原生虚拟磁盘,完整快照,秒恢复 | 极快 | 紧凑 | 日常主力备份、迁移、重装 |
| tar.gz | 压缩通用包,跨平台兼容 | 中等 | 较小 | 存档备份、跨设备通用 |
| tar.xz | 超高压缩率 | 慢 | 最小 | 长期归档、空间不足时 |
| tar | 无压缩原始打包 | 快 | 巨大 | 不推荐日常使用 结论:日常备份首选 VHD 格式,兼顾速度、完整性、恢复便捷性。 |
三、最优方案:VHD 完整备份 WSL2 Debian
1. 关闭 WSL(关键,避免文件占用损坏备份)
wsl --shutdown
执行后可再次 wsl --list -v 确认状态为 Stopped。2. 执行 VHD 备份命令
自动按日期命名,避免覆盖旧备份,路径可自行修改:
# 创建备份目录(不存在则自动创建)
mkdir D:\WSL_Backup -ErrorAction SilentlyContinue
# 导出 VHD 完整备份
wsl --export Debian D:\WSL_Backup\Debian_$(Get-Date -Format "yyyyMMdd").vhd --format vhd
备份内容包含:- 完整系统环境、所有安装的 apt 包
- 用户目录、配置文件、ssh 密钥、shell 配置
- 所有项目代码、全局环境变量
四、极速恢复 VHD 备份(核心优势)
VHD 备份最大优势:无需重新导入分区,原地秒恢复。
1. 关闭 WSL
wsl --shutdown2. 注销原有损坏/旧环境
wsl --unregister Debian
⚠️ 执行后原有 WSL 环境清空,务必确认已备份!3. 原地恢复 VHD 备份
wsl --import-in-place Debian D:\WSL_Backup\你的备份文件.vhd
替换为你实际的备份文件名,恢复仅需 5–20 秒。五、备选:压缩备份 tar.gz / tar.xz
如果需要节省磁盘空间,可使用压缩格式备份:
# tar.gz 均衡备份
wsl --export Debian D:\WSL_Backup\Debian_$(Get-Date -Format "yyyyMMdd").tar.gz --format tar.gz
# tar.xz 极致压缩备份
wsl --export Debian D:\WSL_Backup\Debian_$(Get-Date -Format "yyyyMMdd").tar.xz --format tar.xz压缩包恢复方式
# 自定义 WSL 存放路径
wsl --import Debian D:\WSL\Debian D:\WSL_Backup\备份文件.tar.gz六、恢复后修复默认用户(必看避坑)
部分情况下恢复后 WSL 会默认进入 root 用户,需要手动还原普通用户:
debian config --default-user 你的用户名
之后重新进入 WSL 即为正常普通用户环境。七、一键自动备份 PowerShell 脚本
日常使用可直接保存为 WSL-Backup.ps1,双击即可自动备份:
<#
WSL Debian 一键 VHD 备份脚本
自动日期命名、自动创建目录、静默备份
#>
wsl --shutdown
$bkPath = "D:\WSL_Backup"
$fileName = "Debian_$(Get-Date -Format 'yyyyMMdd_HHmm').vhd"
$fullPath = Join-Path $bkPath $fileName
if (!(Test-Path $bkPath)) { New-Item -ItemType Directory $bkPath | Out-Null }
Write-Host "开始备份 WSL Debian 到:$fullPath"
wsl --export Debian $fullPath --format vhd
Write-Host "✅ WSL 备份完成!"八、日常备份策略推荐
- 重大环境变更前:手动执行一次 VHD 全量备份
- 每周固定:运行一键 VHD 备份,留存环境快照
- 长期存档:每月保存一次 tar.gz 压缩备份,节省空间
九、常见问题避坑
1. 备份失败、文件占用
解决:务必先执行 wsl --shutdown 停止所有 WSL 进程。
2. 恢复后变成 root 用户
解决:使用 debian config --default-user 用户名 重置默认用户。
3. 提示路径不存在
解决:手动创建 D:\WSL_Backup 目录,或使用脚本自动创建。
总结
WSL2 最优备份方案不再是老旧的 tar 打包,而是官方原生 VHD 磁盘快照备份:速度快、完整性高、恢复极简,完美适配日常开发环境迁移、重装、防丢档需求。本文全套命令适配 Debian,可无缝迁移至 Ubuntu 等所有 WSL2 发行版。
评论 (0)
暂无评论,快来发表第一条评论吧!
登录后发表评论