Skip to content

Instantly share code, notes, and snippets.

@arvati
Last active December 16, 2023 17:08
Show Gist options
  • Save arvati/90b6d4fbf7fc2f5fd71bd26fe9ea1bb8 to your computer and use it in GitHub Desktop.
Save arvati/90b6d4fbf7fc2f5fd71bd26fe9ea1bb8 to your computer and use it in GitHub Desktop.
Transferir WSL de uma máquina para outra

Instruções originais: https://murrahjm.github.io/Exporting-WSL-data/

Exportar da máquina fonte

Liste as distribuições WSL disponíveis:

wsl.exe -l
Distribuições do Subsistema do Windows para Linux:
Alpine (Padrão)
WLinux
docker-desktop-data
docker-desktop

Exporte a distribuição desejada:

mkdir c:\temp
wsl.exe --export WLinux c:\temp\wsl-backup.tar

Tranfira o arquivo de backup para outra máquina com ssh.

Primeiro instale o servidor na máquina destino:

Start-Process powershell.exe -Verb runAs
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Start-Service sshd
Get-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-NetFirewallRule -Name *ssh*

Transfira o arquivo:

scp.exe c:\temp\wsl-backup.tar arvati@master:c\temp\

Importar na máquina destino

Preparar a máquina

Instale sua distribuição na nova máquina, veja o link: https://docs.microsoft.com/en-us/windows/wsl/install-on-server

Ou se preferir:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
cd c:\temp\
Invoke-WebRequest -Uri https://aka.ms/wsl-debian-gnulinux -OutFile Debian.appx -UseBasicParsing
Add-AppxPackage .\Debian.appx

Voce pode instalar com mais opções assim:

cd c:\temp\
Copy-Item c:\temp\Debian.appx -Destination c:\Users\arvati\
cd c:\Users\arvati\
Rename-Item .\Debian.appx .\Debian.zip
Expand-Archive .\Debian.zip .\Debian
cd .\Debian
debian.exe

E coloque acrescente este diretório no PATH:

$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";C:\Users\arvati\Debian", "User")

Procure o local de instalação da mesma no windows explorer: %localappdata%\packages

A minha estava em : C:\Users\arvati\AppData\Local\Packages\WhitewaterFoundryLtd.Co.16571368D6CFF_kd1vv0z0vy70w

Liste as distribuições WSL disponíveis:

wsl.exe -l
Distribuições do Subsistema do Windows para Linux:
WLinux (Padrão)
docker-desktop-data
Alpine
docker-desktop

Retire a distribuição que será importada:

wsl.exe --unregister WLinux

Importar a distribuição

Use o comando abaixo para importar:

wsl.exe --import WLinux C:\Users\arvati\AppData\Local\Packages\WhitewaterFoundryLtd.Co.16571368D6CFF_kd1vv0z0vy70w\LocalState C:\temp\wsl-backup.tar

Defina o usuário padrão a ser utilizado na distribuição:

pengwin.exe config --default-user manager

Outras opções:

pengwin.exe help
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment