Windows 10 시스템 "재설정"을 수행하는 동안 WSL Linux 환경을 보존하려면 어떻게 해야 합니까?

Windows 10 시스템 "재설정"을 수행하는 동안 WSL Linux 환경을 보존하려면 어떻게 해야 합니까?

이 게시물단순히 WSL 디렉터리를 복원하면 WSL이 부분적으로 복원되지만 일부 기능 문제가 있다고 언급합니다.이 게시물Linux 설치를 백업하고 복구하는 방법에 대한 일반적인 정보를 제공합니다.이 게시물%appdata%는 실제로 재설정 후 생성되고 "이전" 파일을 포함하는 Windows.old 폴더로 이동되었다고 합니다. ) 첫 번째 포스터 실험에서 어떤 정보가 손실되었을 수 있나요? 단순히 Linux 루트 디렉터리( %USERPROFILE%/AppData/Local/lxss)를 복원하여 작동하도록 허용하는 일부 레지스트리 설정이나 구성 파일이 있습니까 ?

편집하다

내 질문이 다음과 중복된 것으로 표시되었습니다.시스템 재설정 또는 재설치 전에 Windows 10용 Linux 하위 시스템(WSL)을 백업하는 방법은 무엇입니까?.

그러나 그 질문은 설치를 백업하는 방법에 관한 것이었습니다. 즉, 기본적으로 tar하고 어딘가에 저장하는 것이었습니다. 복원 방법에 대해 명시 적으로 묻습니다.

답변1

오늘 부딪힌 아주 오래된 질문인데, 그 질문을 받은 후 4년 동안 상황이 많이 바뀌었습니다. 실제로 몇 년 전에 일일 드라이버를 "재설정"했는데 비슷한 상황이 발생했습니다.

그 당시에는 당신이 할 수 있는 최선의 방법은 무엇이든 복사하는 것이었습니다.데이터이전 파일 시스템에서 벗어났습니다. 이 질문을 받았을 때 해당 파일 시스템은 일반적으로 (질문에서 언급한 대로) 아래 어딘가에 있었습니다 %USERPROFILE%\AppData\Local\lxss. 정확히 기억나지 않고 더 이상 그렇게 오래된 설치물도 없기 때문에 귀하의 말을 그대로 받아들이겠습니다.

어느 시점에서 WSL이 여러 배포판을 지원하기 시작했을 때 WSL1 폴더가 %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs. 몇 년 전 PC를 재설정했을 때 tar해당 디렉터리를 복구한 다음 재설정 및 WSL 재설치 후에 개별 파일을 복원했습니다(요청한 대로 전체 파일 시스템은 아님). 나는 을 고려하지 않았지만 Windows.old그 파일도 얻을 수 있는 유효한 방법이었을 것입니다.

요즘은 그렇습니다.~ 전에재설정을 수행하면 wsl --export여기의 다른 답변에서 언급한 대로 수행할 수 있습니다.

하지만 사용자가 이 작업을 수행할 생각이 없다면5월를 사용하여 재설정한 후에도 파일 시스템을 완전히 복원할 수 있습니다 Windows.old. 두 가지 시나리오가 있습니다.

  • WSL2에서는 전체 파일 시스템이 %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs\ext4.vhdx. 보다이 답변자세한 내용은 기본적으로 새 설치에 복사하면 ext4.vhdx됩니다 Windows.old.

  • WSL1을 사용하면90% 자신감Windows.old다음 방법을 사용하여 WSL 설치를 복구할 수 있습니다 .

    1. 먼저 Store에서 배포판을 설치합니다. 알아요, 당신은 당신의 회복을 원합니다오래된하지만 우리는 이 새로운 설치를 사용하여 이를 수행할 것입니다. 완료되면 언제든지 Store 배포를 제거할 수 있습니다.

    2. 해당 배포판을 시작하십시오.

    3. /etc/wsl.conf다음을 사용 하여 만듭니다 .

      [automount]
      options = "metadata"
      
    4. 다음,

      cd /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/Packages/<PackageName>/LocalState/rootfs
      

      <PackageName>배포판에 따라 다르지만 Canonical...Ubuntu 배포판부터 시작됩니다. WSL 설치가 충분히 오래된 경우 /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/lxss. 거기에서 해당 설치 디렉토리를 ls보고 싶을 것입니다 ./

    5. 해당 디렉토리 내에서 tar cvf recovery.tar .. WSL1 설치에는 시간이 걸립니다.

    6. sudo mv recovery.tar <somewhere>그렇지 않으면 드라이브에 C:; /mnt/c/Users/<youruser>/Documents/wsl(내가 이것을 위해 사용하는 것과 비슷합니다) . 완료되면 이것이 배포의 새로운 위치가 됩니다.

    7. WSL 종료

    8. PowerShell에서 recovery.tar.

    9. mkdir OldUbuntu(또는 당신이 부르고 싶은대로)

    10. wsl --import OldUbuntu .\OldUbuntu .\recovery.tar. 또한 이 명령은 선택적으로 --version 1/2(끝에서) WSL 버전을 강제 적용합니다.

    11. 원하는 경우 이를 기본 WSL 설치로 설정합니다 wsl --set-default OldUbuntu.

    12. 으로 배포를 시작하십시오 wsl ~ -d OldUbuntu. 인수 -d/--distribution는 위에서 기본값으로 설정하지 않은 경우에만 필요합니다.

    13. /etc/wsl.conf다음 내용으로 를 만듭니다 .

      [user]
      default=username
      

      usernameWindows를 재설정하기 전에 배포판에 있던 사용자 이름을 편집하세요 .

    14. 선택적으로 tarball 생성에 설치하고 사용한 배포판을 제거합니다.

    그게 다야. 저는 실제로 이것을 약간 다른 시나리오로 테스트했습니다. WSL1 인스턴스를 설치한 다음 다른 인스턴스에서 위의 프로세스를 진행했습니다. --import위의 단계를 거친 후 성공적으로 완료할 수 있었습니다 . 파일/디렉터리 소유권 및 권한은 심볼릭 링크와 마찬가지로 올바른 것으로 보입니다. 내 유일한 관심사는 정말 오래된 WSL 배포판이 다른 메타데이터를 사용할 수 있는지 여부입니다.

    경고: 복구할 수 있는 다른 방법이 없는 경우에만 WSL1 파일 시스템에서 이 작업을 시도하십시오. %AppData%(또는 이에 상응하는 방법)을 통해 WSL1 파일 시스템의 파일에 액세스하는 것은부패를 일으키는 것으로 알려진. 그래서 이것을 시험해 보기 위해 일회용 인스턴스를 직접 만들었습니다.

    참고 사항: 다른 WSL 인스턴스를 설치하는 번거로움을 겪는 대신 Windows 내에서 tar파일을 가져오는 것을 고려할 수도 있습니다 . Windows.old여기서 내 관심사는 이것이 캡처되지 않을 것이라는 것입니다.리눅스소유권 및 사용 권한으로 인해 'ing' 시 설치가 손상될 수 있습니다 wsl --import.

관련 정보