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 总结对比

方法 适合场景 是否改动现有系统 优点
方法一:手动清理 你了解项目目录结构 快速直接
方法二:复制后清理 不想动主系统 更安全
方法三:新建系统 想交付纯净系统 最干净、体积最小
相关推荐
苏州向日葵1 小时前
virtualBox安装ubuntu,常用知识点
linux·运维·ubuntu
阿福不是狗1 小时前
Python使用总结之Linux部署python3环境
linux·开发语言·python
张海森-1688202 小时前
基于sample_aiisp例子,创建3路编码流,记录
linux
飞凌嵌入式2 小时前
基于RK3588,飞凌教育品牌推出嵌入式人工智能实验箱EDU-AIoT ELF 2
linux·人工智能·嵌入式硬件·arm·nxp
大连好光景7 小时前
你管这玩意叫网络?网络图解
linux·服务器·网络
ZZH1120KQ10 小时前
Linux 进程和计划任务管理
linux
Linux运维技术栈13 小时前
Vim 命令大全:从入门到精通
linux·编辑器·vim
c7_ln13 小时前
Linux基本指令(包含vim,用户,文件等方面)超详细
linux·操作系统·vim
晨曦backend13 小时前
Vim 撤销 / 重做 / 操作历史命令汇总
linux·编辑器·vim
晨曦backend13 小时前
Vim 插件管理:MiniBufExplorer 使用指南
linux·编辑器·vim