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

方法 适合场景 是否改动现有系统 优点
方法一:手动清理 你了解项目目录结构 快速直接
方法二:复制后清理 不想动主系统 更安全
方法三:新建系统 想交付纯净系统 最干净、体积最小
相关推荐
sinizu6 分钟前
搭建阅读linux源码的舒适环境(vscode+clangd)
linux·vscode·计算机·clangd
付出不多6 分钟前
linux——mysql故障排查与生产环境优化
linux·运维·mysql
。puppy26 分钟前
下载Ubuntu 64 位
linux
前行居士28 分钟前
ubuntu下实时检测机械硬盘和固态硬盘温度
linux·服务器·ubuntu
鸠摩智首席音效师2 小时前
Linux Bash 中 $? 的详细用法
linux·chrome·bash
白毛大侠2 小时前
解决 Linux Bash 脚本因换行符问题导致的 “bash^M: No such file or directory“ 错误
linux·运维·bash
一眼青苔2 小时前
如何查看 Ubuntu开机是否需要密码
linux·运维·ubuntu
YOYO--小天2 小时前
RK3588查看板卡系统信息
linux·嵌入式硬件
一个学Java小白2 小时前
ARM-Linux 完全入门
linux·运维·arm开发
Hi-Dison3 小时前
什么是Rootfs
linux·服务器