Linux 和 Ubuntu 新手。我正在尝试将旧的 Ubuntu WSL 文件传输到我的新 Windows 11 笔记本电脑。
我也遇到过类似的问题,但似乎都没有对我的情况有帮助。
我正在尝试在 USB 硬盘上克隆旧笔记本电脑的 WSL,以便将其传输到新笔记本电脑,但是当我输入lsblk
或任何其他列出笔记本电脑上的驱动器的命令时,USB 均未列出。
wsl -l -v
来自评论的结果:
NAME STATE VERSION
docker-desktop-data Running 2
* Ubuntu Running 2
docker-desktop Running 2
我需要从Ubuntu
和传输文件docker-desktop-data
。
答案1
如果你只是想从 Ubuntu 复制一些文件,那么你当然可以使用\\wsl$\Ubuntu
@Android776 在其他答案。但是,这几乎只适用于 Linux 用户创建并拥有的文件。其他文件将失去其权限和/或所有者(通常root
),并且某些系统文件将完全无法读取(例如/etc/shadow
)。
既然您说要将 Docker 数据移到新笔记本电脑上,那么--export
无论如何您都需要使用下面描述的方法,因此您不妨将它用于 Ubuntu 文件系统和 Docker 文件系统。
备份是比较简单的部分——WSL 提供了导出分发版的功能,这会创建一个tar
文件,然后可以再次导入该文件,无论是在同一台计算机上(作为新分发版)还是在另一个系统上。
我假设您的 USB 驱动器是D:
,但请在下面替换您需要的任何驱动器号。
从 PowerShell:
wsl --export Ubuntu D:\ubuntu.tar
wsl --export docker-desktop-data D:\docker-desktop-data.tar
无需导出docker-desktop
,因为当您在新笔记本电脑上安装 Docker Desktop 时它将被自动重新创建。
弹出 USB 驱动器(正确地,使用任务栏中的弹出命令)并将其移动到另一台计算机。
在新计算机上的 Windows 11 上:
启动管理 PowerShell。
wsl --install
(如果你还没有)按提示重新启动。
完成安装,将会安装一个新的 Ubuntu —— 您不会使用这个。
删除这个新安装的 Ubuntu。从非-管理员 PowerShell:
wsl --unregister Ubuntu
重要的:仅在新电脑上执行此操作,并且仅在安装后立即执行此操作。这将从新安装Ubuntu 版本。
接下来,我们将备份的 Ubuntu 发行版恢复到 USB 驱动器。连接 USB 驱动器(再次假设
D:
)。再次,从非-管理员 PowerShell:
# Adjust paths and names below as desired mkdir $env:USERPROFILE\WSL\instances\Ubuntu_WSL2 wsl --import Ubuntu_WSL2 $env:USERPROFILE\WSL\instances\Ubuntu_WSL2 D:\ubuntu.tar --version 2 wsl --set-default Ubuntu_WSL2 wsl ~
请注意,您需要为新的 Ubuntu 命名,而不是“Ubuntu”或“Ubuntu-20.04”等。这些是 Store 安装程序使用的名称,此安装将与 Store 安装程序“分开”。如果您再次运行 Store 安装程序(无论是有意还是无意),最好不要“混淆”它们。
在这个 Ubuntu 中,您的所有文件都应该存在,但您将
root
不再是普通用户。您需要通过以下方式设置“默认”用户:sudo -e /etc/wsl.conf
并添加:
[user] default=your_username
your_username
应该是您在旧笔记本电脑上的 Ubuntu 上使用的用户名。现在退出
然后重新启动 WSL,你应该恢复正常
请让我知道您的效果如何,然后我也会努力添加恢复的方向docker-desktop-data
。
答案2
好问题——我想我可能有一个解决方案。
传输 WSL 文件的方法如下:
在老的PC,确保您的 Ubuntu WSL 正在运行并启动。然后,打开 RUN(只需转到开始并输入运行)并输入\\wsl$\Ubuntu
这是存储 WSL VM 文件的地方。您可以复制在那里看到的所有文件夹,以复制所有内容,尽管可能会出现一些问题。我建议您只复制 的内容\\wsl$\Ubuntu\home\your-username
,但您可以尝试复制整个\\wsl$\Ubuntu
目录。
然后,在新的PC,创建一个新的 WSL 环境,并将之前复制的文件复制到 Windows 中的某个位置,例如C:\Users\yourusername\Documents
。然后使用 RUN 导航到\\wsl$\Ubuntu
。
如果您复制了整个 WSL 目录,请选择其中的所有文件\\wsl$\Ubuntu
,然后从中粘贴复制的文件C:\Users\yourusername\Documents
。
如果您刚刚复制了您的主目录,只需导航到\\wsl$\Ubuntu\home\username
,删除所有其他文件并粘贴您现有的文件。
为了使此功能有效,您的新旧用户名必须相同。
我希望这有帮助, Android776