Compacta com segurança o tamanho das imagens WSL VHDX sempre crescente.
(Você gosta deste utilitário? Dê um e compartilhe)
O Subsistema do Windows para Linux (WSL) usa arquivos de imagem VHDX para armazenar o sistema de arquivos EXT4, mas não possui uma maneira eficaz de diminuir a imagem quando os arquivos são removidos. Esse utilitário não requer credenciais elevadas, compactando as unidades virtuais VHDX das distritos WSL2 e atingindo o tamanho mínimo possível. Por padrão, ele será executado no modo de informação, nenhuma ação sobre imagens, fornecendo as seguintes informações para todas as distros instaladas:
Se nenhuma distro for especificada, ele terá como alvo todas as imagens instaladas sequencialmente. Opera no modo de segurança durante o processo compacto, impedindo qualquer efeito colateral indesejado em caso de falha. Este é um caso de uso típico: compactação da imagem do Ubuntu com confirmação:
PS> wslcompact -c Ubuntu
WSL compact, v5.0 2023.02.02 (Groundhog edition)
(C) 2023 Oscar Lopez
wslcompact -h for help. For more information visit: https://github.com/okibcn/wslcompact
Distro's name: Ubuntu
Image file: C:UsersOkiWSLUbuntuext4.vhdx
Current size: 12864 MB
Estimated size: 7700 ± 188 MB
The estimated process time using an SSD is about 2 minutes.
NOTE: You can safely cancel at any time by pressing Ctrl-C
Import in progress, this may take a few minutes.
The operation completed successfully.
New Image compacted from 12864 MB to 7728 MB
Do you want to apply changes and use the new image (y/N): y
Image replaced for distro: Ubuntu
Antes de instalar o WSLCompact, verifique se sua instalação WSL está atualizada. Você pode fazer isso digitando wsl --update no PowerShell. O WSLCompact requer pelo menos WSL versão 1.0.0.
Existem duas maneiras de instalar o WSLCompact, escolha o seu favorito:
Requer uma configuração especial para executar um script remoto. Se você o definiu no passado, não precisa mais. Se você não tem certeza, no PowerShell, apenas digite:
Set-ExecutionPolicy RemoteSigned - Scope CurrentUserPara instalar ou atualizar o utilitário, feche todas as suas instâncias do PowerShell, abra uma nova e digite:
iwr - useb https: // raw.githubusercontent.com / okibcn / wslcompact / main / setup | iexPara remover o utilitário, feche todas as suas instâncias do PowerShell, abra uma nova e digite:
Remove-Item " $ ( $ env: PSModulePath .split ( ' ; ' )[ 0 ] ) /WslCompact " - Recurse - ForceSe você usar o Scoop Package Manager , poderá adicionar o utilitário WSLCompact diretamente do seu balde. Digite PowerShell Estas duas linhas:
scoop bucket add .oki https: // github.com / okibcn / Bucket
scoop install wslcompactPara atualizar o aplicativo, basta digitar:
scoop update wslcompactPara remover o aplicativo, apenas digite:
scoop uninstall wslcompactApós a instalação, o uso é direto:
wslcompact sem argumentos lista todas as imagens e informações do WSL. Nenhuma ação nas imagens será executada.wslcompact Ubuntu .-c compacta, o WSLCompact modificará as imagens após a confirmação.-d permite o compacto de partições de dados. O utilitário garante um tamanho mínimo e você acaba com arquivos contíguos para acesso mais rápido em sistemas antigos baseados em HD. Se você precisar da lista de nomes de suas distritos, ela é acessível digitando wsl -l .
Usage: wslcompact [OPTIONS] [DISTROS]
wslcompact compacts the images of WSL distros by removing unsused space.
If no option is provided, it will default to info mode, without modifying any image.
If no distro is provided it will process all the installed images.
NOTE: WSL will be shutdown for compacting the images.
Options:
no opt. Provides name, image file path, current size, and estimated new size information.
-c Compacting mode: process the selected distros compacting the images.
-y replaces selected images without asking for confirmation.
-d Enable the processing of data images. Default is disabled.
-h Prints this help
Examples:
wslcompact
wslcompact -c -d
wslcompact -c -y Ubuntu Kali
Se o seu C: A unidade não tiver espaço livre temporal suficiente, o programa não compactará essa distro. Basta alterar a pasta temp antes de chamar a função. Então, em vez de um simples wslcompact , basta fazer:
$ env: TEMP = " Z:your tempfolder "
wslcompactA nova pasta temp estará ativa apenas para a sessão do terminal PowerShell, portanto, não há problema pelo restante do sistema e não deixará o lixo.
Uma operação típica seria:
PS> wslcompact
WSL compact, v5.0 2023.02.02 (Groundhog edition)
(C) 2023 Oscar Lopez
wslcompact -h for help. For more information visit: https://github.com/okibcn/wslcompact
Distro's name: Ubuntu
Image file: C:UsersOkiWSLUbuntuext4.vhdx
Current size: 12864 MB
Estimated size: 7700 ± 188 MB
The estimated process time using an SSD is about 2 minutes.
Distro's name: Kali
Image file: C:UsersOkiWSLKaliext4.vhdx
Current size: 1579 MB
Estimated size: 723 ± 18 MB
The estimated process time using an SSD is about 1 minutes.
Distro's name: Arch
Image file: C:UsersOkiWSLArchext4.vhdx
Current size: 1075 MB
Estimated size: 860 ± 21 MB
The estimated process time using an SSD is about 1 minutes.
Compactando a imagem do Ubuntu com confirmação:
PS> wslcompact -c Ubuntu
WSL compact, v5.0 2023.02.02 (Groundhog edition)
(C) 2023 Oscar Lopez
wslcompact -h for help. For more information visit: https://github.com/okibcn/wslcompact
Distro's name: Ubuntu
Image file: C:UsersOkiWSLUbuntuext4.vhdx
Current size: 12864 MB
Estimated size: 7700 ± 188 MB
The estimated process time using an SSD is about 2 minutes.
NOTE: You can safely cancel at any time by pressing Ctrl-C
Import in progress, this may take a few minutes.
The operation completed successfully.
New Image compacted from 12864 MB to 7728 MB
Do you want to apply changes and use the new image (y/N): y
Image replaced for distro: Ubuntu