방금 컴퓨터에 wsl 2를 설치했습니다(Windows 10 pro 사용). 우분투 배포판 20.04를 다운로드했습니다. Vmware에서처럼 스냅샷과 클론을 만들 수 있는지 궁금합니다. 감사합니다 !
답변1
슈퍼 유저를 가리키는 @Esther의 의견은 좋은 것이지만 여기 Ask Ubuntu에서 자체 답변을 얻을 가치가 있는 질문이라고 생각합니다. 그것은 또한업데이트됨WSL에는 이 영역에 새로운 기능이 있으므로 대답해 보세요.
슈퍼 유저 질문은 또한복제/백업, 그러나 일반적으로 "증분" 백업을 의미하는 진정한 "스냅샷"은 아닙니다. 그래서 나는시도이 답변에서도 "스냅샷"을 다루겠습니다.
WSL1 또는 WSL2 배포 백업
WSL1 또는 WSL2 배포판을 "백업"하기 위해 지원되는 메커니즘은 wsl --export
. 대부분의 백업과 마찬가지로 사용 중인 파일을 먼저 닫는 것이 가장 좋으므로 PowerShell에서 이러한 작업을 수행하는 것도 가장 좋습니다.
WSL에서 Ubuntu 종료
PowerShell에서:
wsl -l -v # Confirm your distribution name for the following commands wsl --terminate <distro_name> # Create directory structure, adjust to preference: mkdir "$env:userprofile\WSL\images" # You can hardcode the backup name below if you wish. # This example creates it with a date/timestamp-prefix on the tarball: wsl --export <distroname> "$env:userprofile\WSL\images\$(date -f yyyyMMdd_HHmmss)_Ubuntu.tar"
이전 백업을 새 인스턴스로 복원(복제된 인스턴스 생성)
복제본 생성은 wsl --import
이전 단계에서 만든 백업에서 새 인스턴스를 생성하는 명령을 사용하여 수행할 수 있습니다.
이번에도 PowerShell에서 다음을 수행합니다.
# Adjust paths and names to your preference
mkdir "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone"
wsl --import Ubuntu20.04_TestClone "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone" <path_to_previous_backup.tar> --version 2
WSL은 ed 인스턴스의 기본 사용자를 "기억"하지 않으므로 --import
이를 수동으로 설정해야 합니다. 보다이 슈퍼유저 답변파일 을 사용하여 이를 수행하는 방법에 대해 알아보세요 /etc/wsl.conf
.
WSL 미리 보기의 WSL2에 대한 새롭고 더 짧은 옵션
wsl --import
최신 버전의 WSL(현재 미리 보기)에는 (및 --export
) 에 대한 몇 가지 추가 옵션이 있습니다 .
Windows 11을 실행 중인 경우(당신은 그렇지 않지만 다른 사람들은 그럴 수도 있고 결국에는 그럴 수도 있음) Microsoft Store에서 설치할 수 있습니다. 거기에는 다음과 같이 나열되어 있습니다."Linux 미리보기용 Windows 하위 시스템".
이 버전에서는 를 사용하여 VHDX 파일(WSL2 인스턴스의 가상 디스크)을 기존 인스턴스에서 새 인스턴스로 직접 가져올 수 있습니다 wsl --import --vhd
. 먼저 기존 VHDX가 어디에 있는지 알아야 합니다.
PowerShell에서:
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object { (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath }
그런 다음 다음을 사용하여 해당 위치에서 가져옵니다.
# Adjust paths and names to your preference
mkdir "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone"
wsl --import Ubuntu20.04_TestClone "$env:userprofile\WSL\instances\Ubuntu20.04_TestClone" <path_to_main_distro>\ext4.vhdx> --vhd --version 2
다음 오류가 발생하는 경우 참고하세요.
The process cannot access the file because it is being used by another process.
... 그런 다음 순서대로 시도해 보세요.
wsl --terminate <distro>
기존 인스턴스를 삭제한 후--import
다시 시도하세요.- Docker Desktop이 실행 중인 경우 중지한 후
--import
다시 시도하십시오. wsl --shutdown
을 탭한 다음--import
다시 시도하세요.
이 방법에는 기존 WSL2 vhdx 파일의 "복사본"이라는 점에서 한 가지 단점이 있습니다. 이는 필요한 것보다 더 많은 공간을 소비하는 경우 새 이미지도 동일한 "낭비된 공간"을 갖게 된다는 것을 의미합니다(참조이 답변더 많은 정보를 위해서).
증분 스냅샷
WSL에는 공간을 절약하기 위해 증분 스냅샷을 수행하는 기능이 아직 없습니다. 그것5월이것을 수동으로 함께 해킹하는 것이 가능하지만 아직 개인적으로 이 기술을 테스트하지 않았습니다. 높은 수준의 아이디어는 다음과 같습니다.
tar
Gnu 를 사용하여 기존 인스턴스의 tarball을 만듭니다.증분 덤프특징.- 실제 파일 시스템에서 올바른 파일(및 배포판에서 사용되는 경우 해당 확장 속성)을 지정
--one-file-system
하고 캡처합니다.--xattrs
- 증분 타르볼에서 "비증분" 타르볼을 재구성합니다.
- 를 사용하여 복원합니다
wsl --import
.
예전부터 해보고 싶었던 일이었지만 아직 시간이 없었어요.