修改 WSL 的文件保存路径
修改 WSL 的文件保存路径(即将 WSL 的根文件系统从 C 盘移动到其他盘)是一个常见的操作,以节省 C 盘空间。以下是详细的步骤指南:
方法一:使用 WSL 导出/导入命令(推荐)
1. 导出当前 WSL 发行版
# 打开 PowerShell 或 CMD(以管理员身份运行)
wsl --export Ubuntu D:\WSL-Backup\ubuntu.tar
- 将
Ubuntu
替换为你的 WSL 发行版名称
- 将
D:\WSL-Backup\
替换为你想要保存备份的路径
2. 注销并删除原 WSL 发行版
# 注销 WSL
wsl --unregister Ubuntu
# 删除原发行版(会删除 C 盘的 WSL 文件)
3. 在新位置导入 WSL 发行版
# 在新位置导入
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL-Backup\ubuntu.tar
- 第一个
Ubuntu
是发行版名称
D:\WSL\Ubuntu
是新的存储路径
D:\WSL-Backup\ubuntu.tar
是备份文件路径
4. 设置默认发行版
wsl --set-default Ubuntu
5. 验证安装
wsl -l -v
方法二:手动移动文件(适用于已安装的 WSL)
1. 关闭所有 WSL 实例
wsl --shutdown
2. 找到 WSL 文件位置
# 查看 WSL 存储位置
wsl --list --verbose
WSL 文件默认位于:
C:\Users\<用户名>\AppData\Local\Packages\<包名>\LocalState\
3. 复制文件到新位置
# 停止 WSL 服务
net stop LxssManager
# 复制文件到新位置(例如 D:\WSL\)
robocopy "C:\Users\<用户名>\AppData\Local\Packages\<包名>\LocalState" "D:\WSL\Ubuntu" /E /COPYALL
# 删除原文件
rmdir /s "C:\Users\<用户名>\AppData\Local\Packages\<包名>\LocalState"
4. 修改注册表
# 以管理员身份打开注册表编辑器
regedit
# 导航到:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
# 找到你的发行版项,修改 "DistributionName" 对应的路径
5. 创建符号链接
# 创建符号链接指向新位置
mklink /J "C:\Users\<用户名>\AppData\Local\Packages\<包名>\LocalState" "D:\WSL\Ubuntu"
方法三:使用 WSL2 的 vhdx 文件移动
1. 关闭 WSL
wsl --shutdown
2. 找到 vhdx 文件
C:\Users\<用户名>\AppData\Local\Docker\wsl\data\
或
%LOCALAPPDATA%\Packages\<包名>\LocalState\
3. 移动 vhdx 文件
# 移动到新位置
move "C:\Users\<用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx" "D:\WSL\ext4.vhdx"
# 创建符号链接
mklink /H "%LOCALAPPDATA%\Packages\<包名>\LocalState\ext4.vhdx" "D:\WSL\ext4.vhdx"
验证和清理
检查 WSL 状态
wsl -l -v
测试访问
# 启动 WSL
wsl
# 检查文件系统
df -h
清理临时文件
# 删除备份文件(可选)
Remove-Item "D:\WSL-Backup\ubuntu.tar" -Force
注意事项
- 备份重要数据:操作前务必备份重要文件
- 管理员权限:所有 PowerShell 命令需要管理员权限
- 路径格式:使用正确的 Windows 路径格式
- 发行版名称:根据实际情况替换发行版名称
- 磁盘空间:确保目标磁盘有足够空间
推荐的目录结构
D:\WSL\
├── Ubuntu\ # Ubuntu 发行版
├── Debian\ # Debian 发行版(如果有)
├── Backup\ # 备份文件
└── vhdx\ # 虚拟硬盘文件
完成以上操作后,你的 WSL 文件系统将成功移动到指定位置,C 盘空间也会得到释放。