
Esta postagemmenciona simplesmente restaurar o diretório WSL WSL parcialmente restaurado, mas com alguns problemas de funcionalidade.Esta postagemfornece informações genéricas sobre como fazer backup e recuperar uma instalação do Linux.Esta postagemdiz que% appdata% é de fato movido para a pasta Windows.old, que é criada após a redefinição e contém seus arquivos "antigos". ) Que informações podem ter se perdido no primeiro experimento com cartazes? Existem algumas configurações de registro ou arquivos de configuração que permitiriam simplesmente restaurar o diretório raiz do Linux ( %USERPROFILE%/AppData/Local/lxss
) para funcionar?
EDITAR
Minha pergunta foi marcada como uma duplicata deComo fazer backup do subsistema Linux (WSL) para Windows 10, antes de redefinir ou reinstalar o sistema?.
No entanto, essa questão era apenas sobre como fazer backup da instalação - basicamente, tar e salvá-la em algum lugar. Eu pergunto explicitamente sobre como restaurá-lo.
Responder1
Pergunta muito antiga que foi respondida hoje, e as coisas mudaram muito nos 4 anos desde que a pergunta foi feita. Na verdade, fiz um "Reset" no meu driver diário há alguns anos e tive uma situação semelhante.
Naquela época, o melhor que você poderia fazer seria copiar qualquerdadosfora do antigo sistema de arquivos. Quando esta pergunta foi feita, esse sistema de arquivos normalmente estava (como você mencionou na pergunta) em algum lugar abaixo de %USERPROFILE%\AppData\Local\lxss
. Vou acreditar na sua palavra, já que não me lembro exatamente e não tenho mais instalações tão antigas por aí.
Em algum momento, provavelmente quando o WSL começou a oferecer suporte a múltiplas distribuições, a pasta WSL1 mudou para %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs
. Quando fiz uma redefinição no meu PC há vários anos, criei tar
esse diretório e restaurei arquivos individuais (mas não todo o sistema de arquivos, como você pediu) após a redefinição e a reinstalação do WSL. Eu não considerei o Windows.old
, mas essa também teria sido uma maneira válida de obter esses arquivos.
Hoje em dia, sim,antesfazendo um reset, um wsl --export
pode ser executado conforme mencionado na outra resposta aqui.
Mas se o usuário não pensar em fazer isso,poderiaainda será possível restaurar completamente o sistema de arquivos após a redefinição usando Windows.old
. Existem dois cenários:
O WSL2 torna isso bastante fácil, pois todo o sistema de arquivos é armazenado em uma unidade virtual no formato
%USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs\ext4.vhdx
. Veresta respostapara obter detalhes, mas você pode basicamente copiar issoext4.vhdx
deWindows.old
e para uma nova instalação.Com WSL1, estou90% confianteque você pode recuperar uma instalação WSL
Windows.old
usando o método a seguir.Primeiro, instale uma distribuição da Loja. Eu sei, você quer recuperar seuvelhoinstall, mas vamos usar esta nova instalação para fazer isso. Você sempre pode desinstalar a distribuição da Loja quando terminarmos.
Lance essa distribuição.
Crie
/etc/wsl.conf
com o seguinte:[automount] options = "metadata"
Próximo,
cd /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/Packages/<PackageName>/LocalState/rootfs
<PackageName>
dependerá da sua distribuição, mas será inicialCanonical...
para distribuições Ubuntu. Se a sua instalação do WSL for antiga o suficiente, pode ser/mnt/C/Windows.old/Users/<yourusername>/AppData/Local/lxss
. Ao fazerls
isso, você deseja ver o/
diretório dessa instalação.Dentro desse diretório,
tar cvf recovery.tar .
. A instalação do WSL1 demorará um pouco.sudo mv recovery.tar <somewhere>
mais naC:
unidade; algo como/mnt/c/Users/<youruser>/Documents/wsl
(é próximo do que eu uso para isso). Este será o novo local de distribuição quando terminarmos.Sair do WSL
No PowerShell, navegue até o diretório onde você colocou o arquivo
recovery.tar
.mkdir OldUbuntu
(ou como você quiser chamar)wsl --import OldUbuntu .\OldUbuntu .\recovery.tar
. O comando também opcionalmente leva um--version 1/2
(no final) para forçar a versão WSL.Se desejar, torne esta sua instalação WSL padrão com
wsl --set-default OldUbuntu
.Inicie a distribuição com
wsl ~ -d OldUbuntu
. O-d/--distribution
argumento só é necessário se você não o definiu como padrão acima.Crie um
/etc/wsl.conf
com o seguinte conteúdo:[user] default=username
Edite
username
para ser o seu nome de usuário na distribuição antes de redefinir o Windows.Opcionalmente, desinstale a distribuição que instalamos e usamos para criar o tarball.
Deveria ser isso. Na verdade, testei isso com um cenário um pouco diferente. Instalei uma instância WSL1 e passei pelo processo acima em outra instância. Consegui fazer
--import
isso com sucesso depois de seguir as etapas acima. A propriedade e as permissões de arquivos/diretórios parecem corretas, assim como os links simbólicos. Minha única preocupação é se uma distribuição WSL realmente antiga pode usar metadados diferentes.Aviso: Por favor, tente fazer isso apenas em um sistema de arquivos WSL1 se não tiver outra maneira de recuperá-lo. Acessar arquivos em um sistema de arquivos WSL1 por meio de
%AppData%
(ou equivalente) éconhecido por causar corrupção. É por isso que eu mesmo criei uma instância descartável para testar isso.Nota: você pode pensar em
tar
transferir os arquivosWindows.old
de dentro do Windows, em vez de se preocupar em instalar outra instância do WSL. A minha preocupação aqui é que isto não capte oLinuxpropriedade e permissões, o que provavelmente resultará em uma instalação corrompida durantewsl --import
o 'ing.