目录

睡前读物第4期: WSL与WT的备份使用

前言

Windows Subsystem for Linux (WSL) 是一个在 Windows 上运行 Linux 发行版的方便工具, 本文旨在介绍如何备份和迁移 WSL 发行版, 防止数据丢失和快速恢复,同时也会展示 如何在 Windows Terminal 中配置定制化的 WSL 终端的示例。

导出 WSL 为 tar 格式

把 WSL 发行版导出为 tar 格式, 不仅可以作为原 WSL 发行版的一个备份, 也是后面迁移 WSL 的第一个步骤

wsl --shutdown
wsl -t {distro}
# 关闭对应的 WSL 发行版

wsl --export {distro} {filepath} [--format tar]
# {distro} 表示所安装的WSL发行版名称 如 Ubuntu-24.04
# {filepath} 表示想导出到的文件路径 如 D:\Ubuntu-24.04.tar
# {filepath} 用 - 表示导出到 stdout

导入或迁移 WSL

以下的指令可以方便地完成 WSL 同设备或是跨设备之间的导入

wsl --import {distro} {location} {filepath} --version 2
# {distro} 表示所导入WSL发行版名称 如 Ubuntu-24.04
# {location} 表示导入的WSL的安装路径 如 D:\WSL 则 D:\WSL 下会有ext4.vhdx以及WSL相关配置文件
# {filepath} 表示想导入的tar文件路径 如 D:\Ubuntu-24.04.tar

导入完成后,通过以下指令可以查看是否导入成功

wsl -l -v

WSL 默认是安装在 C 盘中的, 而随着不断的使用, WSL 会占据更多的硬盘空间, 此时将 WSL 迁移到其他硬盘就有必要了。

迁移的步骤也就是 导出/备份 - 删除 - 导入, 以下是删除的方式

wsl --unregister {distro}
# {distro} 表示所导入WSL发行版名称 如 Ubuntu-24.04

恢复 WSL 的配置

对于直接导入的 WSL 发行版, 其默认用户会被重置为 root, 可以通过以下指令来修改默认用户

wsl --manage {distro} --set-default-user {username}
# {distro} 表示所导入WSL发行版名称 如 Ubuntu-24.04
# {username} 表示想设置的默认用户名

在 Windows Terminal 中配置

以下是我个人的一个 WSL 发行版在 Windows Terminal 中的配置 仅供参考

{
    // 以下两项是外观配置 可根据个人喜好修改
    "colorScheme": "Ubuntu",
    "font": 
    {
        "face": "Ubuntu Mono, Symbols Nerd Font Mono"
    },

    // 对于 无法识别的 WSL 发行版 可以手动指定 commandLine
    "commandLine": "C:\\WINDOWS\\system32\\wsl.exe -d Ubuntu-22.04 --cd ~",
    
    // 对于 可以识别的 WSL 发行版 可以省略 commandLine 而采用 source
    "source": "Microsoft.WSL",
    
    // guid 只要与其他配置项不同即可 可以随意填写 或是使用 "New-Guid" 在 Powershell 中生成
    "guid": "{54f2f77f-3a2d-5205-a7be-6202238a704a}",

    // 以下三项关于 WSL 发行版在 Windows Terminal 中的显示
    "hidden": false, // 是否在终端列表中隐藏
    "icon": "D:\\Virtual Machines\\ubuntu.ico", // 图标路径 用于替换默认图标
    "name": "Ubuntu-22.04", // 终端显示的名称
}

参考文献