很多小伙伴安装 WSL2 的时候,默认会把实例安装在 C:\Users\<用户名>\AppData\Local\Packages\... 下,随着使用时间增长,C 盘空间会越来越紧张。 本文将教你如何用 PowerShell 脚本一键迁移 WSL2 Ubuntu 实例到新磁盘(例如 D 盘),同时会自动注销旧实例并完成导入。
📌 前提条件
- 你已经安装了 WSL2 和 Ubuntu 实例。 可以用以下命令确认:wsl -l -v
结果会类似:
NAME STATE VERSION
* Ubuntu Running 2
👉 其中 Ubuntu 就是实例的名字(脚本里用的 $OldName)。
2. 确认目标盘符(例如 D:\WSL\Ubuntu)有足够空间存放整个实例。
📌 脚本内容
把以下脚本保存为 MigrateWSL.ps1:
<#
.SYNOPSIS
一键迁移 WSL2 Ubuntu 实例到新盘符(自动注销旧实例)
.DESCRIPTION
支持迁移目录:CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc
功能:
1. 终止 WSL 实例
2. 导出实例为临时 tar 文件
3. 注销旧实例
4. 创建目标目录(如果不存在)
5. 导入到新位置
6. 删除临时备份
7. 显示迁移后实例状态
#>
# =========================
# 配置部分
# =========================
$OldName = "Ubuntu" # WSL 实例名称(在 wsl -l -v 查看)
$NewLocation = "D:\WSL\Ubuntu" # 新盘符目标路径
$BackupTar = "$env:TEMP\Ubuntu_Backup.tar" # 临时导出文件
# =========================
try {
Write-Host "`n=== 开始迁移 WSL2 Ubuntu 实例 ===`n"
# 1. 终止实例
Write-Host "1. 终止 WSL 实例 $OldName ..."
wsl --terminate $OldName
# 2. 导出实例到临时文件
Write-Host "2. 导出 WSL 实例到临时文件 $BackupTar ..."
wsl --export $OldName $BackupTar
# 3. 注销旧实例
Write-Host "3. 注销旧实例 $OldName ..."
wsl --unregister $OldName
# 4. 创建目标父目录(如果不存在)
$ParentDir = Split-Path $NewLocation -Parent
if (!(Test-Path $ParentDir)) {
Write-Host "4. 创建目标父目录 $ParentDir ..."
New-Item -ItemType Directory -Path $ParentDir | Out-Null
} else {
Write-Host "4. 目标父目录 $ParentDir 已存在"
}
# 5. 导入实例到新位置
Write-Host "5. 导入实例到新位置 $NewLocation ..."
wsl --import $OldName $NewLocation $BackupTar --version 2
# 6. 删除临时备份文件
Write-Host "6. 删除临时备份文件 $BackupTar ..."
Remove-Item $BackupTar -Force
# 7. 显示迁移后实例状态
Write-Host "`n7. 检查 WSL 实例状态 ..."
wsl -l -v
Write-Host "`n=== 迁移完成! ==="
Write-Host "注意:如果新实例正常运行,可以删除原目录释放 C 盘空间:"
Write-Host "C:\Users\<你的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc"
}
catch {
Write-Host "发生错误:" $_.Exception.Message -ForegroundColor Red
}
📌 使用步骤
- 保存脚本 把脚本保存为
D:\MigrateWSL.ps1(路径随意)。 - 以管理员身份运行 PowerShell
- 右键开始菜单 → Windows PowerShell (管理员)
- 允许执行脚本(如果未开启过)Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 执行迁移脚本D:\MigrateWSL.ps1
- 等待迁移完成 脚本会自动:
- 终止实例
- 导出成临时
.tar - 注销旧实例
- 导入到新盘符
- 删除临时文件
- 验证迁移是否成功wsl -l -v你会看到
Ubuntu已经指向新路径。
📌 迁移后的检查
- 默认情况下,新的 Ubuntu 实例目录在:D:\WSL\Ubuntu
- 旧目录在:C:\Users\<你的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc如果新实例运行正常,可以放心删除旧目录释放空间。
📌 常见问题
- 如何重新打开新实例? 在命令行输入:wsl -d Ubuntu
- 旧目录能不能直接删? ✅ 可以,但必须确认新实例运行正常后再删。
- 能不能换名字? 可以,例如把
$OldName改成Ubuntu-24.04,迁移后就是新名字。
这样你就能 一键迁移 WSL2 Ubuntu 到任意磁盘,既省 C 盘空间,也不用手动折腾。 🚀