有没有办法备份我的 WSL Ubuntu 20.04 环境并在我的 Ubuntu 20.04 系统上恢复它?

有没有办法备份我的 WSL Ubuntu 20.04 环境并在我的 Ubuntu 20.04 系统上恢复它?

有没有办法备份我的 WSL ubuntu 20.04 环境并在我的 Ibuntu 20.04 系统上恢复它?

我目前正在通过 WSL 工作,但我想我快要转向普通 Linux 系统了。

如何将所有已安装的服务和文件备份到新系统?

答案1

这可能不是 1-1 匹配,但由于“一切都是文件”,在 Linux 上更容易一些。我还没有弄清楚如何备份基于 snap 的软件。我有一个旧答案在这里需要一些更新,但本质上

在 Ubuntu 或 Debian 上,使用 dpkg --get-selections 转储已安装软件包的列表,然后使用 dpkg --set-selections 安装它们

我并不需要用 snap 来做这件事。

这尚未测试,但您可以用它snap list来列出快照。然后,您可以将snap save每个快照制作成快照 snap export-snapshot然后snap import-snapshot应该备份和恢复特定的快照

如果有必要,创建与源系统相同的用户 -cat /etc/passwd应该列出他们,然后您可以使用 diff 检查两个列表是否相同。

然后使用 rsync 复制/etc/设置文件夹、/home/用户的各种文件夹(并在此处检查权限)和其他文件夹,如/var/www/。测试,确保所有内容都已存在并正常工作,并根据需要启动,然后您就大功告成了。这比设置新服务器花费的时间还少。

如果您使用其他方法,则需要确保权限和属性正确

这应该覆盖你的整个环境。

答案2

虽然(大多数)一切都@JourneymanGeek 的回答是正确的,我想我会以不同的方式看待它。我认为这值得一试,但你可能需要多次尝试才能“做到恰到好处”。

一些用户在 WSL 中执行的一些操作最终会在“真正的”Ubuntu 中导致问题。我将在下面列举其中的一些。

备份 WSL2 Ubuntu 发行版并将其恢复为“真实” Ubuntu 安装将涉及以下几个步骤:

  • 您会使用 Ubuntu 和 Windows 双启动还是完全替换 Windows 安装?如果使用双启动,那么您可以使用 Windows 驱动器上的文件夹来保存需要传输的任何文件。否则,您需要将它们移动到 USB 驱动器之类的东西上。

  • 可以如果是双启动,则可能直接使用rsync,但您需要ext4.vhdx在 Ubuntu 中访问 WSL2 虚拟磁盘。此功能默认不安装,因此您需要找到解决方案——如果您想使用rsync,请参阅询问 Ubuntu问题。

  • 我可能只是tar传输您需要的任何文件,但请确保以 /root 身份进行传输,sudo以便保留权限和所有权(或者tar如果使用非 root 用户,请使用适当的标志)。

  • 识别您在 WSL2/Ubuntu 下安装的软件包,正如 JG 在链接的答案中指出的那样。将其保存到文件中以进行传输。

    消除任何 WSL 特定的软件包,例如wslu。这些可能会在“真正的”Ubuntu 上引起问题(尽管我现在不记得我遇到的与此问题有关的问题)。

  • tar您的用户的/home/username。这可能是最直接的传输方式,尽管可以删除您对 shell 启动所做的任何“特定于 WSL”的更改(例如~/.bashrc)。

    例如,由于 WSL 没有systemctl enable,因此通常在用户中启动服务~/.bashrc。您应该恢复该设置并计划在实际安装下使用 Systemd。

  • tar您的/etc目录,但在恢复到“真实”Ubuntu 时要格外小心。这是最容易引起问题的区域,原因如下:

    • 首先,这可能是也可能不是一个问题,但 WSL Ubuntu 发行版是基于 Ubuntu服务器. 你可能会安装 Ubuntu桌面/etc两者之间的配置可能大不相同。我无法直接指出在新安装的“桌面”配置上恢复“服务器”配置的任何问题,但我也不知道这是否是经过测试或支持的方案。您可能最终用更“最小”的服务器配置覆盖一些“特定于桌面”的配置。

    • 更重要的是,如果你曾经尝试在 WSL 上启用 Systemd,我可能会忽略 ( tar --exclude-from)/etc/systemd和中的任何内容/etc/tmpfiles.d。你为了使 WSL 正常工作而进行的更改 (或启用脚本) 几乎肯定会破坏真正的 Ubuntu 安装。

    • 此外,从您的/etctarball 中排除以下内容:

      • /etc/passwd/etc/group/etc/shadow。这些将由 Ubuntu 安装本身(包括您的默认用户)或您安装的软件包创建。如果您用 WSL2 副本覆盖这些文件的 Ubuntu 桌面安装版本,则会出现问题。

      • /etc/fstab,因为您不想覆盖物理机器的配置。

      • /etc/resolv.conf,因为 WSL 将其配置为使用 Windows 主机解析器

      • /etc/hosts,它也是由 WSL 生成的,具有内部 Windows/WSL 名称。

    可能还有其他的——这些只是我能想到的,如果你尝试将它们从 WSL 移动到真实的物理机器上,它们会引起问题。

  • 正如@JG 所说,备份您可能有工作文件的任何其他目录,例如下的特定目录/var/

相关内容