WSL虚拟机整体迁移教程(如何将WSL从C盘迁移到其他盘)

文章目录

WSL虚拟机迁移教程

一、查看当前主机的子系统

(查看自己的子系统)指令:

复制代码
wsl -l 

二、导出 WSL 子系统

  1. 打开 PowerShell(管理员身份)

  2. 输入以下命令导出

    wsl --export <系统名字> <导出位置//导出名字.tar>

    复制代码
    (假设子系统名为 `Ubuntu-20.04`):
    wsl --export Ubuntu-20.04 D:\backup\ubuntu_backup.tar
    • Ubuntu-20.04 是当前安装的 WSL 名称(可通过 wsl -l -v 查看)
    • D:\backup\ubuntu_backup.tar 是导出的路径和文件名

导出的是整个 WSL 子系统,包括所有安装的软件、配置、环境变量等,适合打包迁移。

三、将打包好的文件发送给另一个人

  • ubuntu_backup.tar 文件通过硬盘、U盘、局域网等方式发给另一个人;
  • 不需要网络重新安装环境,只需导入即可。

四、在另一台机器导入并恢复子系统

  1. 仍在 PowerShell 中输入:

    wsl --import <系统名字> <要搬到的位置> <之前导出包的位置>

    复制代码
    wsl --import MyUbuntu D:\wsl\MyUbuntu D:\backup\ubuntu_backup.tar
    • MyUbuntu 是新导入的子系统名字
    • D:\wsl\MyUbuntu 是你想要存储子系统根目录的位置
    • ubuntu_backup.tar 是你导入的 .tar 文件
  2. 运行新的子系统:

    复制代码
    wsl -d MyUbuntu

五、附加命令

  • 查看所有子系统:

    复制代码
    wsl -l -v
  • 删除旧的子系统(慎用):

    复制代码
    wsl --unregister Ubuntu-20.04

六、注意事项和导出文件信息

6.1 注意事项

项目 说明
权限 必须用管理员 PowerShell进行导出/导入
空间 .tar 文件大小约等于整个 WSL 的体积
路径 导入路径不能是已有 WSL 的安装路径,否则会失败
同步 不包括 Windows ↔ WSL 的绑定配置(如启动任务计划)
版本兼容 WSL1/WSL2 建议在同一版本之间导出导入,避免版本不一致

6.2 导出文件信息

使用 wsl --export 命令导出整个 WSL 子系统时,它会完整打包该子系统中的全部内容,包括:
内容 是否打包
在 WSL 里安装的所有软件 ✅ 会
写的所有代码/项目文件 ✅ 会
下载的数据集/模型 ✅ 会
配置的 .bashrc.zshrc 等配置文件 ✅ 会
安装的 Python 虚拟环境(venv/conda 等) ✅ 会
/home/你的用户名/ 目录下的所有文件 ✅ 会
/opt//usr/local/ 下自定义安装的工具 ✅ 会
不会被打包的内容:
内容 是否打包 说明
Windows 本地的文件 ❌ 不会 比如 C:\Users\你的名字\Desktop\... 的内容不会被打包
Windows 和 WSL 的挂载点 /mnt/c, /mnt/d ❌ 不会 这些是挂载路径,属于 Windows
WSL 设置(如是否为 WSL2、是否自动启动等) ❌ 不会 这是系统级配置,不包含在 .tar
使用 wsl.conf 配置的挂载参数(/etc/wsl.conf) ✅ 包含文件,但配置在新环境不一定自动生效

七、一些建议

7.1 确保完整性:

  1. 提前清理不需要的缓存、临时文件 (减少 .tar 体积):

    复制代码
    sudo apt clean
    pip cache purge
    conda clean --all
  2. 确保项目代码位于 /home/xxx/ 或其他 Linux 内部路径 ,而不是 /mnt/c/... 这样的 Windows 路径。

7.2 如果只想打包 WSL 子系统中的环境(软件/依赖/工具),而不打包下载的项目代码、数据、临时文件等,可以采用以下三种策略


7.2.1 手动清理非环境类文件(推荐)

这是最直接的方法 ------ 在导出前,清理掉项目文件,只保留安装的系统工具和依赖环境。

操作步骤:
  1. 删除个人项目文件:

    复制代码
    rm -rf ~/my_project/
    rm -rf ~/Downloads/
    rm -rf ~/notebooks/

    只保留必要配置(比如 .bashrc, .condarc 等)

  2. 清理 pip / conda 缓存:

    复制代码
    pip cache purge
    conda clean --all
  3. 导出子系统环境:

    复制代码
    wsl --export Ubuntu-20.04 D:\clean_env.tar

这样导出的文件就是一个干净的环境模板



7.2.2 复制并清理一个临时环境后打包

避免动当前 WSL,可以用 wsl --export--import 创建一个副本,然后在副本中删掉项目内容:

操作步骤:
  1. 导出现有系统:

    复制代码
    wsl --export Ubuntu-20.04 D:\ubuntu_temp.tar
  2. 导入成临时副本:

    复制代码
    wsl --import Ubuntu-Clean D:\WSL\Ubuntu-Clean D:\ubuntu_temp.tar
  3. 进入临时系统并清理项目代码:

    复制代码
    wsl -d Ubuntu-Clean
    # 然后执行 rm -rf ~/your_projects 之类
  4. 退出临时系统,再次导出干净版本:

    复制代码
    wsl --export Ubuntu-Clean D:\clean_env.tar
  5. 删除临时环境(可选):

    复制代码
    wsl --unregister Ubuntu-Clean

优点:不会你主用的系统,风险最低。



7.2.3 新建一个"纯净环境",只安装依赖

如果只是想交付一份"干净的、带好开发环境"的 WSL 子系统,也可以从头开始:

操作步骤:
  1. 安装全新系统:

    复制代码
    wsl --install -d Ubuntu-20.04
  2. 安装需要的环境:

    复制代码
    sudo apt update && sudo apt install python3 python3-pip
    pip install flask numpy pandas  # 举例
  3. 导出它即可:

    复制代码
    wsl --export Ubuntu-20.04 D:\env_template.tar

适合做通用部署模板,比如交给其他同学或团队使用。


7.3 总结对比

方法 适合场景 是否改动现有系统 优点
方法一:手动清理 你了解项目目录结构 快速直接
方法二:复制后清理 不想动主系统 更安全
方法三:新建系统 想交付纯净系统 最干净、体积最小
相关推荐
zl_dfq28 分钟前
Linux 之 【进程等待】
linux
遇见火星30 分钟前
Linux性能调优:理解CPU中的平均负载和使用率
linux·运维·服务器·cpu
Chennnng2 小时前
Ubuntu 安装过程的 6 大常见问题类型
linux·运维·ubuntu
阿干tkl2 小时前
传统网络与NetworkManager对比
linux·网络
Evan芙3 小时前
Linux 进程状态与进程管理命令
linux·运维·服务器
码农12138号3 小时前
Bugku HackINI 2022 Whois 详解
linux·web安全·ctf·命令执行·bugku·换行符
Joren的学习记录4 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
用户2190326527354 小时前
Java后端必须的Docker 部署 Redis 集群完整指南
linux·后端
胡先生不姓胡4 小时前
如何获取跨系统调用的函数调用栈
linux
里纽斯6 小时前
RK平台Watchdog硬件看门狗验证
android·linux·rk3588·watchdog·看门狗·rk平台·wtd