把 Ubuntu-22.04 从 C 盘搬到其他盘:小白操作手册

1. 开始前,必读的三件事

① 你要搬的其实只是「一个文件」

WSL2 把整个 Linux 系统(你的项目、装的软件、配置、SSH 密钥)都装在 ext4.vhdx 这一个虚拟磁盘文件里

。所谓迁移,就是把这个文件挪到 F 盘,并让 WSL 知道它搬去哪了。只要文件完整过去,数据就完整过去。

② 绝对不要用文件资源管理器「剪切 / 粘贴」

手动搬 .vhdx 会丢失注册表项和分发元数据,导致 WSL 完全识别不出这个实例,甚至损坏文件系统

。必须用下面的命令行方式。

③ 全程只有一处不可逆风险

wsl --unregister 会永久删除原发行版的数据、设置和已装软件

。所以本手册把它放在「备份确认无误」之后,且有备份兜底。


2. 第一步:做一次完整备份(别跳过)

这一步哪怕一切顺利也用不上,但 72 GB 的东西,多一层保险不亏

。

打开 PowerShell(普通权限即可,不必管理员)

,逐条执行:

perl 复制代码
powershell
# ① 先建好存放备份的文件夹
mkdir F:\wsl_backup

# ② 彻底关闭 WSL(必须!否则导出不完整)
wsl --shutdown

# ③ 确认已经关掉
wsl -l -v

第 ③ 步的输出应该看到 Ubuntu-22.04 的 STATE 是 Stopped

。不是 Stopped 就别往下做,导出前必须先终止并关闭 WSL,否则 tar 包可能不完整。

bash 复制代码
powershell
# ④ 导出为 tar 备份包
wsl --export Ubuntu-22.04 F:\wsl_backup\ubuntu2204_backup.tar
  • 耐心等:72 GB 可能需要十几分钟到半小时,屏幕会像卡住一样,这是正常的。
  • 完成后检查 F:\wsl_backup\ubuntu2204_backup.tar 是否存在、大小是否在 50 GB 以上。
  • ✅ 看到这个文件且体积合理,才可以继续。

3. 第二步:确认你的 WSL 支不支持「一条命令搬家」

css 复制代码
powershell
wsl --version
wsl --help

在 wsl --help 的输出里找有没有 --move。

  • 有 --move → 走下面的 路线 A(推荐,最省事)
  • 没有 --move → 走 路线 B

不同来源对最低版本要求说法不一(2.0.4 / 2.3.11 等)

,唯一可靠的判断标准就是 wsl --help 里实际列出了 --move 。如果没列出来,先执行 wsl --update 升级再试。


4. 路线 A:一条命令搞定(推荐)

用官方 --move 命令的好处是:发行版名字不变、默认用户不变、所有配置不变 ,你那些写死了 Ubuntu-22.04 的脚本一个字都不用改

。它会直接移动 .vhdx 文件并自动更新注册表,几乎不丢数据、速度也最快。而且是从 WSL 2.3.11 起微软引入的官方方案,不再需要导出注销导入那套。

务必先关闭 WSL,避免文件被锁定

:

perl 复制代码
powershell
# ① 关闭
wsl --shutdown

# ② 确认状态是 Stopped
wsl -l -v

# ③ 执行迁移
wsl --manage Ubuntu-22.04 --move F:\Ubuntu_System

执行时会看到什么: 一条进度条,几十 GB 大概十几秒到几分钟

。

关于目标目录: 有的版本会自动创建目录

,有的版本要求目标目录不存在或为空。所以不要提前手动去建 F:\Ubuntu_System,让命令自己处理;如果报「目录已存在」,就把这个空目录删掉再重跑。

然后跳到 第 6 步:验证。


5. 路线 B:导出 / 注销 / 导入(--move 不可用时用)

⚠️ 这条路会「换个名字重新注册发行版」------如果只按原样操作,你可能需要重新确认一遍配置

。按下面的步骤走就行。

bash 复制代码
powershell
# ① 关闭 WSL
wsl --shutdown
wsl -l -v          # 确认 Stopped

# ② 建目标目录
mkdir F:\Ubuntu_System

# ③ 给目标目录授予当前用户的完全控制权限(避免导入后报「拒绝访问」)
icacls "F:\Ubuntu_System" /grant "%USERNAME%:(F)" /t

# ④ 从备份导入(复用第 2 步导出的 tar)
wsl --import Ubuntu-22.04 F:\Ubuntu_System F:\wsl_backup\ubuntu2204_backup.tar --version 2

导入后必须处理的两件事:

  1. 恢复默认用户(导入后默认会变成 root 登录):
arduino 复制代码
powershell
Ubuntu-2204 config --default-user ganjunhao

如果这条命令提示找不到,就进入 WSL 编辑 /etc/wsl.conf,加上:

ini 复制代码
ini
[user]
default=ganjunhao

然后 wsl --shutdown 再重新进入

。

  1. 设为默认发行版:
arduino 复制代码
powershell
wsl --set-default Ubuntu-22.04

6. 第六步:验证迁移结果

bash 复制代码
powershell
# ① 确认发行版还在、还是默认(带 *)
wsl -l -v

# ② 进入 Ubuntu
wsl -d Ubuntu-22.04

# ③ 进去后确认身份没变
whoami
df -h

逐项对照:

  • wsl -l -v 里 Ubuntu-22.04 存在、VERSION 是 2
  • whoami 显示的是 ganjunhao,不是 root(是 root 就回看第 5 步的修法)
  • df -h 正常显示磁盘
  • 打开你常用的项目,能编译能跑
  • Docker 能起来(如果你用 Docker)、ssh 能连

再打开「此电脑」,看 C 盘容量是不是回来了约 72 GB。


7. 第七步:顺手瘦身(建议做)

迁移不会自动压缩已经膨胀的磁盘,只是换了个位置

。所以趁现在压一次,把腾出来的空间留在 F 盘而不是又还回 C 盘:

arduino 复制代码
powershell
wsl --shutdown
wsl --manage Ubuntu-22.04 --set-sparse true

注意 :如果第 3 步发现你的 WSL 不支持 --move,这一条可能也不支持,跳过即可,不影响迁移本身。


8. 出问题怎么办(排查表)

表格

现象 原因 处理
wsl --export 报错 / 卡住 WSL 没完全关闭 重跑 wsl --shutdown,确认 wsl -l -v 是 Stopped
报「无法找到指定分发版」 名字写错 用 wsl -l -v 里的准确名称,一个字都不能差
「无法将磁盘附加到 WSL2:拒绝访问」 目标目录权限不足 重跑第 5 步的 icacls 命令给目录授权
迁移后登录成了 root 导入方式的固有后遗症 用 config --default-user 你的用户名 或改 /etc/wsl.conf
--move 报「目标目录已存在」 有的版本要求目录为空 删掉这个空目录,或在命令里换成别的目录名
「找不到 --move / 版本过旧」 WSL 版本太老 wsl --update 升级后再试

9. 万一失败,怎么退回去

你第 2 步导出的 F:\wsl_backup\ubuntu2204_backup.tar 就是「后悔药」:

r 复制代码
powershell
wsl --import Ubuntu-22.04 F:\Ubuntu_System F:\wsl_backup\ubuntu2204_backup.tar --version 2

这套导出/导入流程本身就是标准的「备份---恢复」机制,适合用来把 WSL 环境存下来

。

建议:备份 tar 包至少保留一到两周,确认新环境稳定后再删(它占 70 GB 左右)。


10. 最终检查清单

动手前

  • 备份 tar 已生成,大小合理
  • wsl -l -v 显示发行版名为 Ubuntu-22.04、VERSION 为 2
  • F 盘空间足够(你的 575 GB 完全够)
  • 已确认 wsl --help 里有没有 --move

动手时

  • 已执行 wsl --shutdown 并确认 Stopped
  • 如果开了 Docker Desktop,已先退出

动手后

  • wsl -l -v 能看到发行版且仍是默认
  • whoami 是你原来的用户名,不是 root
  • 项目能编译 / Docker 能起 / ssh 能连
  • C 盘释放了约 72 GB
  • 已执行 --set-sparse true 瘦身

一句话总结

先备份 → wsl --shutdown → wsl --manage Ubuntu-22.04 --move F:\Ubuntu_System → 验证 → 压缩瘦身。

有 --move 就用它,没有就走导出/注销/导入。

相关推荐
炫酷的大高个2 小时前
3.2TB 权重开源了,我算了 4bit 之后还要几张卡
人工智能·架构·开源
ZhengEnCi3 小时前
AI Agent 时代前端项目怎么组织:按页面纵向切块,替代按类型分层目录
架构·前端框架·前端工程化
得物技术4 小时前
压测AI Agent 治理与评测调优实践
程序员·架构·测试
挖掘狂人6 小时前
负载均衡到底在干嘛?7 个场景给你说明白
架构·负载均衡
codigger6 小时前
负载均衡到底在干嘛?7 个场景给你说明白
网络·架构·负载均衡
Learn_PLC7 小时前
现代制造业转型下的自动化人才市场需求与职业教育法的影响
架构
一心同学7 小时前
Hermes架构拆解之Profiles
ai·架构·agent·profiles·hermes
IT规划师8 小时前
HybridCache-缓存架构决策框架落地
架构·.net