
Acabo de instalar wsl 2 en la máquina (usando Windows 10 pro). Descargué la distribución ubuntu 20.04. Me pregunto si se pueden hacer instantáneas y clones como en Vmware. Gracias !
Respuesta1
El comentario de @Esther que apunta a Superusuario es bueno, pero creo que es una pregunta digna de tener su propia respuesta aquí en Ask Ubuntu. También necesita unactualizadoResponda ya que WSL tiene nuevas características en esta área.
La pregunta de superusuario también solo cubreclonación/copias de seguridad, pero no verdaderas "instantáneas", que considero que normalmente significan copias de seguridad "incrementales". entonces lo haréintentarTocar también las "instantáneas" en esta respuesta.
Copia de seguridad de una distribución WSL1 o WSL2
El mecanismo admitido para "hacer una copia de seguridad" de una distribución WSL1 o WSL2 es utilizar wsl --export
. Como ocurre con la mayoría de las copias de seguridad, es mejor cerrar primero los archivos en uso, por lo que también es mejor realizar estas acciones desde PowerShell.
Salir de Ubuntu en WSL
Desde PowerShell:
wsl -l -v # Confirm your distribution name for the following commands wsl --terminate <distro_name> # Create directory structure, adjust to preference: mkdir "$env:userprofile\WSL\images" # You can hardcode the backup name below if you wish. # This example creates it with a date/timestamp-prefix on the tarball: wsl --export <distroname> "$env:userprofile\WSL\images\$(date -f yyyyMMdd_HHmmss)_Ubuntu.tar"
Restaurar la copia de seguridad anterior en una nueva instancia (crear una instancia clonada)
La creación del clon se puede realizar con el wsl --import
comando para crear una nueva instancia a partir de la copia de seguridad realizada en el paso anterior.
Nuevamente, desde 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" <path_to_previous_backup.tar> --version 2
WSL no "recuerda" el usuario predeterminado para --import
las instancias ed, por lo que deberá configurarlo manualmente. Veresta respuesta de superusuariopara saber cómo hacerlo usando un /etc/wsl.conf
archivo.
Nueva opción más corta para WSL2 en WSL Preview
En la última versión de WSL (actualmente en Vista previa), hay varias opciones adicionales para wsl --import
(además de --export
).
Si está ejecutando Windows 11 (lo cual sé que no es así, pero otros pueden hacerlo, y eventualmente usted podrá hacerlo), entonces puede instalarlo desde Microsoft Store. Allí figura como"Vista previa del subsistema de Windows para Linux".
Con esta versión, puede importar directamente un archivo VHDX (el disco virtual de una instancia WSL2) desde una instancia existente a una instancia nueva usando wsl --import --vhd
. Primero, necesitará saber dónde reside su VHDX existente.
Desde PowerShell:
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object { (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath }
Luego simplemente importe desde esa ubicación con:
# 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" <path_to_main_distro>\ext4.vhdx> --vhd --version 2
Tenga en cuenta que si recibe el siguiente error:
The process cannot access the file because it is being used by another process.
... entonces prueba esto en orden:
wsl --terminate <distro>
la instancia existente, luego intente--import
nuevamente.- Detenga Docker Desktop si se está ejecutando y vuelva a intentarlo
--import
. wsl --shutdown
, luego intente--import
nuevamente.
Hay una desventaja de este método, ya que es puramente una "copia" del archivo WSL2 vhdx existente. Eso significa que si consume más espacio del necesario, la nueva imagen tendrá el mismo "espacio desperdiciado" (veresta respuestapara más información).
Instantáneas incrementales
WSL aún no tiene una función que realice instantáneas incrementales para ahorrar espacio. ÉlpuedeSería posible hackear esto manualmente, pero todavía no he probado esta técnica personalmente. La idea, a alto nivel es:
- Cree un tarball de la instancia existente usando
tar
Gnuvolcado incrementalcaracterística. - Especifique
--one-file-system
y--xattrs
capture los archivos correctos en el sistema de archivos real (y sus atributos extendidos, si se usan en su distribución). - Reconstruya un archivo tar "no incremental" a partir del archivo tar incremental.
- Restaurarlo usando
wsl --import
.
Ha sido algo que quería probar desde hace tiempo, pero aún no he tenido tiempo.