一键迁移 WSL2 Ubuntu 实例到新盘符教程
一键迁移 WSL2 Ubuntu 实例到新盘符教程

一键迁移 WSL2 Ubuntu 实例到新盘符教程

很多小伙伴安装 WSL2 的时候,默认会把实例安装在 C:\Users\<用户名>\AppData\Local\Packages\... 下,随着使用时间增长,C 盘空间会越来越紧张。 本文将教你如何用 PowerShell 脚本一键迁移 WSL2 Ubuntu 实例到新磁盘(例如 D 盘),同时会自动注销旧实例并完成导入。

📌 前提条件

  1. 你已经安装了 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
}

📌 使用步骤

  1. 保存脚本 把脚本保存为 D:\MigrateWSL.ps1(路径随意)。
  2. 以管理员身份运行 PowerShell
    • 右键开始菜单 → Windows PowerShell (管理员)
  3. 允许执行脚本(如果未开启过)Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  4. 执行迁移脚本D:\MigrateWSL.ps1
  5. 等待迁移完成 脚本会自动:
    • 终止实例
    • 导出成临时 .tar
    • 注销旧实例
    • 导入到新盘符
    • 删除临时文件
  6. 验证迁移是否成功wsl -l -v你会看到 Ubuntu 已经指向新路径。

📌 迁移后的检查

  • 默认情况下,新的 Ubuntu 实例目录在:D:\WSL\Ubuntu
  • 旧目录在:C:\Users\<你的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc如果新实例运行正常,可以放心删除旧目录释放空间。

📌 常见问题

  1. 如何重新打开新实例? 在命令行输入:wsl -d Ubuntu
  2. 旧目录能不能直接删? ✅ 可以,但必须确认新实例运行正常后再删。
  3. 能不能换名字? 可以,例如把 $OldName 改成 Ubuntu-24.04,迁移后就是新名字。

这样你就能 一键迁移 WSL2 Ubuntu 到任意磁盘,既省 C 盘空间,也不用手动折腾。 🚀

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Title - Artist
0:00