Post

WSL2子系统的备份与还原

WSL2子系统的备份与还原

1. 准备工作

打开CMD,输入wsl -l -v查看WSL的名称与状态;

1
2
3
$ wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-24.04    Running         2

本机的WSL全称为Ubuntu-24.04,输入 wsl --shutdown 使其停止运行,再次使用wsl -l -v确保其处于stopped状态。

2. 导出/恢复备份

在D盘创建一个目录用来存放新的WSL,比如我创建了一个 G:\Ubuntu_WSL

①导出它的备份(比如命名为Ubuntu.tar)

1
wsl --export Ubuntu-24.04 G:\Ubuntu_WSL\Ubuntu.tar

②确定在此目录下可以看见备份Ubuntu.tar文件之后,注销原有的wsl

1
wsl --unregister Ubuntu-24.04

③将备份文件恢复到G:\Ubuntu_WSL中去

1
wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSL\Ubuntu.tar

这时候启动WSL,发现好像已经恢复正常了,但是用户变成了root,之前使用过的文件也看不见了。

3. 恢复默认用户

在CMD中,输入 Linux发行版名称 config --default-user 原本用户名

例如:

1
Ubuntu2204 config --default-user xxx

请注意,这里的发行版名称的版本号是纯数字,比如Ubuntu-24.04就是Ubuntu2404;

这时候再次打开WSL,你会发现一切都恢复正常了。

1
wsl --export Ubuntu-24.04 G:\Ubuntu_WSL\Ubuntu.tar

命令记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
C:\Users\Administrator>"G:\DevApp\Git\bin\bash.exe" --login

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-24.04    Running         2

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --shutdown

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-24.04    Stopped         2

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --export Ubuntu-24.04 G:\Ubuntu_WSL\Ubuntu.tar
正在导出,这可能需要几分钟时间。 (3847 MB): ./var/lib/docker/volumes/minikube/_data/lib/kubelet/device-plugins/kubelet.sock: pax
 format cannot archive sockets: ./var/lib/docker/volumes/minikube/_data/lib/kubelet/pod-resources/kubelet.sock: pax format canno
t archi (11016 MB)

操作成功完成。

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --unregister Ubuntu-24.04
正在注销。
操作成功完成。


Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSL\Ubuntu.tar
系统找不到指定的文件。
错误代码: Wsl/ERROR_FILE_NOT_FOUND

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSLUbuntu.tar
系统找不到指定的文件。
错误代码: Wsl/ERROR_FILE_NOT_FOUND

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSLUbuntu.tar
[============              21.8%                           ]

操作成功完成。

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --unregister Ubuntu-24.04
正在注销。
操作成功完成。


Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSL\Ubuntu.tar
系统找不到指定的文件。
错误代码: Wsl/ERROR_FILE_NOT_FOUND

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSLUbuntu.tar
系统找不到指定的文件。
错误代码: Wsl/ERROR_FILE_NOT_FOUND

Administrator@DESKTOP-THB59EH MINGW64 ~
$ wsl --import Ubuntu-24.04 G:\Ubuntu_WSL G:\Ubuntu_WSLUbuntu.tar
操作成功完成。

Administrator@DESKTOP-THB59EH MINGW64 ~
$ ubuntu2404.exe config --default-user xxxx

Administrator@DESKTOP-THB59EH MINGW64 ~
$
This post is licensed under CC BY 4.0 by the author.