Meu problema é que tenho que redefinir ou reinstalar o Windows por causa de alguns problemas, mas gastei muito tempo para configurar o WSL para desenvolvimento e não quero perdê-lo.
Existe alguma maneira de fazer backup de todo o WSL com suas configurações e módulos instalados, plugins, usuários etc. e restaurá-lo depois de redefinir ou reinstalar o Windows? Pesquisei bastante este tópico, mas não encontrei nenhuma informação útil.
Caso contrário, se não houver como fazer backup, a redefinição do Windows 10 excluirá totalmente o WSL?
%USERPROFILE%/AppData/Local/lxss
. Você já tentou isso?Respostas:
Como fazer backup?
De várias maneiras, mas uma prática comum é usar o tar para criar um arquivo morto dos arquivos que você deseja fazer backup (para reinstalar tudo quando você recriar seu ambiente). Escrever um
backup.sh
script simples deve facilitar o backup repetido regularmente.O que fazer backup?
A maior parte da sua configuração é armazenada nos arquivos de configuração .___ do Linux, geralmente na sua pasta ~ /. Você também pode fazer backup de seus
/etc/ssh/ssh_config
arquivos de configuração do sistema e de outros similares, embora tenha cuidado com arquivos de configuração complexos que contêm chaves / dados / etc específicos da instância.Você pode gerar sua lista de pacotes apt usando
dpkg-query -f '${binary:Package}\n' -W
e pode ecoar em um arquivo que você também pode fazer backup.Para onde fazer backup?
Você pode copiar esses arquivos tar para um local separado. Recomendamos copiar para uma pasta acessível pelo Windows (por exemplo
/mnt/c/backups
), da qual você pode copiá-la para o OneDrive, DropBox, HDD externo, FTP em outro lugar, etc.HTH.
fonte
O Windows 10 v1903 inclui um comando WSL de exportação / importação interno . Especificamente,
wsl --export
que produz umtar
ewsl --import
, que importa um exportado anteriormentetar
. Você pode então mover este arquivo entre computadores.Você também pode especificar stdin / stdout com
-
, o que deve permitir a transferência direta para outra máquina e a importação usando um shell remoto comossh
.fonte
wsl --import
também pode importartar.gz
arquivos. Esses comandos lançam%SystemRoot%\System32\lxss\tools\bsdtar
internamente o binário ELF64.wsl --export
pode levar mais tempo do que você poderia esperar. Na minha máquina, permaneceu por cerca de 10 minutos gravando apenas alguns megabytes e, finalmente, gravando um arquivo tar de 3,2 GB.Para fazer backup e restaurar uma distribuição Linux completa da WSL, você pode tentar (1) criar um
.tar.gz
com seu sistema de arquivos e (2) restaurar a cópia usando algumas ferramentas instaladoras disponíveis na Internet:.tar.gz
arquivo.rootfs.tar.gz
.Criando o backup
Com base em um relatório de problemas , você pode criar um backup usando o
tar
na WSL. Observe que você deve ignorar algumas pastas (por exemplo, / mnt) na cópia.Você deve criar ou mover posteriormente o arquivo de backup para uma
/mnt/c
subpasta válida . No exemplo, os arquivos são criados no/mnt/c/tmp
.Restaurando usando lxRunOffline
Usando lxRunOffline , você pode instalar o tar resultante como uma nova distribuição no WSL usando a linha de comando do Windows.
Para executar o backup, você pode usar o mesmo lxRunOffline
Restaurando usando um DistroLauncher
Existem muitos lançadores para distribuições linux com base no exemplo da Microsoft . Eu acho que você pode tentar a versão Yuk7 .
Você deve baixar um arquivo de distribuição e o
launcher.exe
. Para usar o mesmo arquivo de distribuição mencionado acima, você deve renomear o arquivo de backuprootfs.tar.gz
e o iniciador para o nome da distribuição que deseja. Posteriormente, você deve executar o iniciador como administrador (obtive erros ao executá-lo como usuário normal)A primeira vez que você executa o iniciador, ele instala e executa a distribuição. Na próxima vez, ele executa a distribuição linux.
fonte
Embora a resposta de Jaime seja perfeita, de alguma forma a
/tmp
pasta não é recriada quando o launcher.exe é usado para instalar a bola tar (estou falando especificamente sobre mover a instalação da WSL de uma máquina para outra).Portanto, é preciso criar
/tmp
e atribuir os direitos necessários.A única abordagem que funcionou para mim é:
https://www.cyberciti.biz/faq/mysqld-innodb-error-unable-to-create-temporary-file/
fonte