시스템 재설정 또는 재설치 전에 Windows 10 용 WSL (Linux Subsystem) 백업 방법?


24

내 문제는 몇 가지 문제로 인해 창을 재설정하거나 다시 설치해야하지만 개발을 위해 WSL을 구성하는 데 많은 시간을 소비했으며 잃고 싶지는 않습니다.

설정 및 설치된 모듈, 플러그인, 사용자 등을 사용하여 전체 WSL을 백업하고 창을 재설정하거나 다시 설치 한 후 복원하는 방법이 있습니까? 이 주제를 많이 검색했지만 유용한 정보를 찾을 수 없습니다.

그렇지 않으면 백업 방법이 없다면 Windows 10 재설정으로 WSL이 완전히 삭제됩니까?


백업하는 것만 큼 상상할 수 %USERPROFILE%/AppData/Local/lxss있습니다. 당신은 그것을 시도 했습니까?
Ramhound

예, 시도했지만 많은 오류가 발생하여 부분적으로 만 작동합니다.
emipac

답변:


15

백업하는 방법?

여러 가지 방법이 있지만 한 가지 일반적인 방법은 tar를 사용하여 백업 할 파일의 아카이브를 작성하는 것입니다 (환경을 다시 작성할 때 모든 것을 다시 설치하기 위해). 간단한 backup.sh스크립트를 작성하면 정기적 인 일정에 따라 반복적으로 백업하기가 쉬워집니다.

무엇을 백업할까요?

대부분의 구성은 Linux ~ .___ 구성 파일, ~~ 폴더에 저장됩니다. /etc/ssh/ssh_config인스턴스 별 키 / 데이터 / 등을 포함하는 복잡한 구성 파일에주의해야하지만 다른 시스템 구성 파일과 다른 유사한 시스템 구성 파일 을 백업 할 수도 있습니다.

사용하여 apt 패키지 목록생성dpkg-query -f '${binary:Package}\n' -W 하고 파일로 에코하여 백업 할 수도 있습니다.

어디에 백업해야합니까?

그런 다음이 tar 아카이브를 별도의 위치로 복사 할 수 있습니다. /mnt/c/backupsOneDrive, DropBox, 외장 HDD, FTP 등으로 복사 할 수 있는 Windows 액세스 가능 폴더 (예 :)에 복사하는 것이 좋습니다 .

HTH.


22

Windows 10 v1903 에는 내장 WSL 내보내기 / 가져 오기 명령이 포함되어 있습니다. 특히, wsl --export하는 생산되는 tarwsl --import이전에 내 보낸 수입하는 tar. 그런 다음이 파일을 컴퓨터간에 이동할 수 있습니다.

로 stdin / stdout을 지정할 수도 있습니다. 그러면 -다른 시스템으로 직접 전송하고 같은 원격 셸을 사용하여 가져올 수 ssh있습니다.


wsl --importtar.gz파일 을 가져올 수도 있습니다. 이러한 명령은 내부적으로 %SystemRoot%\System32\lxss\tools\bsdtarELF64 바이너리를 시작 합니다.
Biswapriyo '12

불안한 성향의 사람들을 돕기 위해 일화 : wsl --export예상보다 오래 걸릴 수 있습니다. 내 컴퓨터에서는 약 10 분 동안 몇 메가 바이트 만 쓴 다음 3.2GB tar 파일을 작성했습니다.
scruss

2

완전한 WSL Linux 배포를 백업 및 복원하려면 (1) .tar.gz파일 시스템으로 파일을 작성 하고 (2) 인터넷에서 사용 가능한 일부 설치 프로그램 도구를 사용하여 사본을 복원하십시오.

  • LxRunOffline 에는 커스텀 리눅스 배포판을 복제하고 설치하는 옵션이 있습니다. .tar.gz파일 에서 배포판을 설치할 수 있습니다 .
  • WSL-DistroLauncher를 사용하면에서 배포본을 설치할 수 있습니다 rootfs.tar.gz.
  • WSLInstall , 다른 WSL 용 Linux 설치 프로그램.

백업 생성

을 바탕으로 문제를보고 , 당신은을 사용하여 백업 생성 할 수 있습니다 tarWSL에 있습니다. 사본에서 일부 폴더 (예 : / mnt)를 무시해야합니다.

# cd /
# tar vzcpf /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.tar.gz --exclude=/proc --exclude=/dev --exclude=/mnt --exclude=/media --exclude=/lost+found  --exclude=/tmp --exclude=/sys  --exclude=/run / > /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.log 2> /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.error

백업 파일을 생성하거나 나중에 올바른 /mnt/c하위 폴더 로 이동해야합니다 . 이 예에서 파일은에 생성됩니다 /mnt/c/tmp.


lxRunOffline을 사용하여 복원

사용 lxRunOffline을 , 당신은 Windows 명령 줄을 사용하여 WSL의 새로운 유통으로 인한 타르를 설치할 수 있습니다.

# lxrunoffline install -n <distro name> -d <installation folder> -f <file>
C:\wsl> lxrunoffline install -n mybackup -d c:\wsl\mybackup -f c:\tmp\ubuntu_20180729_00.tar.gz

백업을 실행하려면 동일한 lxRunOffline을 사용할 수 있습니다

# lxrunoffline run -n <distro name> -w
C:\wsl> lxrunoffline run -n mybackup  -w

DistroLauncher를 사용하여 복원

마이크로 소프트 예제를 기반으로 리눅스 배포판을위한 많은 런처가있다 . 나는 당신이 Yuk7 버전을 시도 할 수 있다고 생각합니다 .

배포 파일과을 다운로드해야합니다 launcher.exe. 위에서 언급 한 것과 동일한 배포 파일을 사용하려면 백업 파일 이름을 바꾸고 rootfs.tar.gz실행기를 원하는 배포 이름으로 바꿔야합니다 . 나중에 관리자로 시작 관리자를 실행해야합니다 (일반 사용자로 실행하는 중에 오류가 발생했습니다)

c:\wsl> ren launcher.exe mybackup.exe
c:\wsl> ren .\ubuntu_20180729_00.tar.gz rootfs.tar.gz
c:\wsl> .\mybackup.exe

실행기를 처음 실행하면 배포가 설치 및 실행됩니다. 다음에 리눅스 배포판을 실행합니다.


감사합니다! -Yuk7의 wsdl 실행기가 시작시 계속 실패했으며 lxRunOffline 문제가 표시되지 않았습니다. 이것이 wsldl 문제를 해결 한 올바른 tar 명령을 문서화 한 유일한 장소입니다.
AndrewD

0

Jaime의 대답은 완벽하지만 /tmplauncher.exe를 사용하여 tar ball을 설치할 때 폴더가 다시 생성되지 않습니다 (특히 WSL 설치를 한 시스템에서 다른 시스템으로 이동하는 것에 대해 이야기하고 있습니다).

따라서 /tmp필요한 권한을 생성 하고 할당해야합니다.

나를 위해 일한 한 가지 접근법은 다음과 같습니다.

https://www.cyberciti.biz/faq/mysqld-innodb-error-unable-to-create-temporary-file/

# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.