我刚刚在机器上安装了wsl 2(使用Windows 10 pro)。我下载了ubuntu发行版20.04。我想知道是否可以像Vmware那样制作快照和克隆。谢谢!
发布于 2022-06-30 19:18:08
@Esther的评论指向超级用户是一个好的,但我认为这是一个值得有自己的答案在这里问Ubuntu。它也需要一个更新的答案,因为WSL在这方面有新的功能。
超级用户的问题也只涉及克隆/备份,而不是真正的“快照”,我认为这通常是指“增量”备份。因此,我也将尝试在这个答案中触及“快照”。
支持“备份”WSL1或WSL2发行版的机制是使用wsl --export。与大多数备份一样,最好先关闭正在使用的文件,所以最好从PowerShell执行这些操作。
通过使用wsl --import命令创建克隆,可以从上一步的备份中创建一个新实例。
同样,来自PowerShell:
# Adjust paths and names to your preference
mkdir "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone"
wsl --import Ubuntu20.04_TestClone "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone" --version 2WSL并不“记住”--imported实例的默认用户,因此您需要手动设置它。有关如何使用这个超级用户的答案文件执行此操作,请参见/etc/wsl.conf。
中的较短选项
在最新版本的WSL (目前处于预览版)中,wsl --import (以及--export)还有几个附加选项。
如果您正在运行Windows 11 (我知道您没有运行Windows 11,但其他人可能运行,最终您可能运行),那么您可以从Microsoft安装它。它被列为“Linux预览的Windows子系统”。
使用此版本,可以使用WSL2直接将VHDX文件( wsl --import --vhd实例的虚拟磁盘)从现有实例导入到新实例中。首先,您需要知道现有的VHDX驻留在哪里。
来自PowerShell:
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object { (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath }然后使用以下方法从该位置导入:
# Adjust paths and names to your preference
mkdir "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone"
wsl --import Ubuntu20.04_TestClone "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone" \ext4.vhdx> --vhd --version 2注意,如果收到以下错误:
The process cannot access the file because it is being used by another process...。然后按以下顺序试一试:
wsl --terminate 现有实例,然后再次尝试--import。--import。wsl --shutdown,然后再尝试--import。这种方法有一个缺点,因为这纯粹是现有WSL2 vhdx文件的“副本”。这意味着,如果它占用的空间比需要的多,那么新映像将具有相同的“浪费空间”(更多信息请参见这个答案 )。
WSL还没有一个可以进行增量快照以节省空间的功能。这可能是可以手工破解这一点,但我还没有亲自测试这一技术。高层次的想法是:
tar's 增量转储特性创建现有实例的tarball。--one-file-system和--xattrs来捕获实际文件系统中的正确文件(以及它们的扩展属性,如果在您的发行版中使用)。wsl --import还原它。这是我想尝试的一段时间,但我只是还没有时间。
https://askubuntu.com/questions/1416476
复制相似问题