WSL Ubuntu数据迁移

将 WSL 中的 Ubuntu 迁移到其他磁盘可有效释放 C 盘空间并优化系统性能。以下是详细步骤及注意事项:


📍 ​​迁移步骤​

  1. ​备份 WSL 数据(防止意外丢失)​

    • 以管理员身份打开 PowerShell 或命令提示符。

    • 导出 Ubuntu 实例为压缩包(替换 <目标路径>为备份位置,如 D:\backup\ubuntu.tar):

      复制代码
      wsl --export Ubuntu <目标路径>.tar

      ​示例​​:

      复制代码
      wsl --export Ubuntu D:\backup\ubuntu.tar
  2. ​注销原 Ubuntu 实例​

    • 关闭所有 WSL 进程:

      复制代码
      wsl --shutdown
    • 注销 Ubuntu(​​此操作将删除 C 盘的原数据​​):

      复制代码
      wsl --unregister Ubuntu
  3. ​在新磁盘创建安装目录​

    • 在目标磁盘(如 D 盘)新建文件夹(如 D:\WSL\Ubuntu)。

      复制代码
      New-Item -ItemType Directory -Path "D:\WSL\Ubuntu" -Force
  4. ​导入 Ubuntu 到新位置​

    • 使用备份文件导入到新目录(指定 WSL 版本为 2):

      复制代码
      wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\backup\ubuntu.tar" --version 2

      ⚠️ 确保路径无空格或特殊字符,避免导入失败。

  5. ​设置默认用户(可选)​

    • 若迁移后默认登录用户变为 root,需恢复原用户:

      复制代码
      ubuntu.exe config --default-user <原用户名>  # 如 "ubuntu2004.exe" 需替换为实际发行版名称

      ​示例​​:

      复制代码
      ubuntu2004.exe config --default-user jason
  6. ​验证迁移结果​

    • 启动 Ubuntu 并检查磁盘挂载点:

      复制代码
      wsl -d Ubuntu
      df -h  # 查看根目录是否为 `/`,且容量匹配新磁盘空间
    • 在 Windows 中检查新目录(如 D:\WSL\Ubuntu)是否生成 ext4.vhdx虚拟磁盘文件。


⚠️ ​​关键注意事项​

  1. ​权限与路径要求​

    • ​管理员权限​​:所有命令需在管理员权限的终端执行。

    • ​目标磁盘格式​​:必须是 NTFS 或 ReFS,支持大文件存储。

    • ​路径规范​ ​:避免使用中文或空格(如 D:\开发环境可能导致异常)。

  2. ​迁移后清理​

    • 确认迁移成功后,可删除备份文件(如 D:\backup\ubuntu.tar)释放空间。

    • 若原 C 盘残留数据(路径:%LOCALAPPDATA%\Packages\CanonicalGroupLimited*),可手动删除。

  3. ​多发行版处理​

    • 若系统存在多个 WSL 发行版,迁移前通过 wsl -l -v确认名称,避免误操作。

🔧 ​​故障排除​

  • ​导入失败​​:检查备份文件完整性(如通过 SHA256 校验),或重新导出导入。

  • ​用户配置丢失​​:若未执行步骤 5,手动创建用户并迁移数据:

    复制代码
    sudo adduser <新用户名>
    sudo usermod -aG sudo <新用户名>  # 赋予sudo权限
    sudo cp -r /home/<原用户>/* /home/<新用户>/
    sudo chown -R <新用户>:<新用户> /home/<新用户>
  • ​WSL 无法启动​​:尝试重置默认版本:

    复制代码
    wsl --set-default-version 2

💎 ​​总结​

通过导出-注销-导入流程,可安全迁移 Ubuntu 至新磁盘。迁移后需验证文件系统挂载点及用户配置,确保环境完整。若需进一步优化存储,可结合 Docker 数据路径迁移(参考 )全面释放 C 盘压力。