Existe a possibilidade de "desfragmentar" uma imagem de pacote esparsa e recuperar (a maioria) do espaço livre?
Aqui está o plano de fundo: estou usando pacotes esparsos e, de vez em quando, quero recuperar espaço deles para executar:
hdiutil compact image.sparsebundle
No entanto, conforme explicado na página de manual, ele apenas recupera arquivos de banda completamente não utilizados; portanto, no meu caso, diz:
Reclaimed 0 bytes out of 90.4 GB possible.
Obviamente, existe a possibilidade de copiar o conteúdo desta imagem para um novo pacote esparso que é usado no lugar, mas isso é complicado e requer espaço livre suficiente para esta operação.
Enquanto isso, descobri que a saída do comando compact é um pouco enganadora (atualmente estou executando o OS X 10.5.7), pois às vezes lista um tamanho possível maior do que o tamanho atualmente ocupado pelo pacote de imagens no disco rígido dirigir. Eu não olhei mais de perto, mas a saída parece ser o tamanho máximo ou "tamanho máximo" - "tamanho usado".
Respostas:
Interessante!
Pelo que ouvi, o pacote esparso divide os dados em faixas de 8Mb. Alterar o tamanho da banda pode ajudar, se você tiver sorte. Quero dizer, você nunca terá 100% de espaço recuperado, mas talvez seja melhor do que o que recebe agora. (Dependendo dos dados da imagem, etc.)
Fiz um teste simples e sujo com dois pacotes esparsos de 500Mb, um com tamanho de banda de 8Mb (padrão) e outro com 1Mb (o menor tamanho permitido do que eu sei). Copiei mais de 400mb de arquivos mp3 e, em seguida, removi todos os outros arquivos e depois
hdiutil compact
os executei.O comando para converter seu pacote esparso é
O tamanho da banda está na unidade de 512 bytes. Portanto, o exemplo acima define o tamanho da banda para 512 * 2048 = 1Mb. Apenas tome cuidado se estiver lidando com imagens do TimeMachine ou imagens da pasta inicial do usuário, etc. Você está se desviando do caminho da Apple :) Mantenha um backup sem falhas!
Quanto à desfragmentação: tenho uma sensação engraçada de que é tão rápido (ou mais rápido!) Usar o hdiutil para converter o arquivo esparso em um novo arquivo esparso com o mesmo formato. Eu acho que ele tenta ser inteligente. Mas eu não sei.
(Observe que a desfragmentação de um pacote esparso apenas desfragmenta os dados do disco, não as bandas esparsas do pacote, a menos que seja um desfragmentador com reconhecimento de pacote esparso.
hdiutil convert
Faz uma 'desfragmentação' da banda, acredito.)fonte
-o
devem estar diretamente antesdst.sparsebundle
, nãosrc.sparsebundle
(-o
denota 'saída').-encryption
opção ao comandoEu acho que os 90,4 GB possíveis estão completamente errados. Quando eu corri:
... liberou 16 GB de espaço, o que é aproximadamente o que eu esperava. Curiosamente, ele disse aproximadamente "800 GB possíveis", o que é muito mais do que a capacidade do meu HD. Então, suponho que a segunda figura seja apenas um número teórico (defeituoso).
fonte
@Oscar nos apontou na direção certa. Mas você não precisa converter para 1 MB e compactar, esperando recuperar espaço.
Em vez disso, basta copiar seu pacote esparso para outro novo pacote esparso. Isso, por sua vez, desfragmenta a imagem para você. E, ao mesmo tempo, você pode alterar o sistema de arquivos, o tamanho e até as bandas.
Aqui está um exemplo que fiz recentemente, convertendo minha imagem de "código" de 20 GB que sincronizo entre dispositivos.
Veja todas as opções com
hdiutil create -help
.Este comando gera:
Você pode ver a
-attach
opção montada abaixo/Volumes/code
.Nota: Uso
HSFX
para HFS + com distinção entre maiúsculas e minúsculas, porque também sincronizo minhas imagens com o Linux e as monto. É provável que você queira usá-loHFS+
, pois o macOS normalmente não diferencia maiúsculas de minúsculas.Agora tudo o que preciso fazer é copiar tudo para o meu novo pacote esparso:
E agora para comparar:
Yay. Meu pacote esparso de 15 GB agora está com 3 GB, desfragmentado e as bandas alteradas!
fonte
Não conheço uma maneira gratuita de fazer isso, mas acredito que o Prosoft Drive Genius fará o que você precisa aqui:
http://www.prosofteng.com/products/drive_genius.php
Você monta o pacote esparso, desfragmenta-o usando o Drive Genius e, em seguida, o
comando deve funcionar.
fonte
Aposto que a unidade que contém o pacote esparso tem cerca de 90 GB de espaço livre? Como pacotes esparsos geralmente podem crescer até o disco ficar cheio, esse espaço é simplesmente relatado como espaço livre disponível ... Você verá as mesmas figuras no Utilitário de Disco. Muito enganador mesmo.
A seguir, algumas dicas:
fonte
Eu tinha um pacote esparso problemático que alegava ter 950 GiB ocupado em 1024 GiB (meu SSD tem apenas 320 GiB de tamanho, o que não poderia acontecer).
hdi compact
não ajudou.Eu executei "Primeiros socorros" do Utilitário de Disco nos pacotes E na partição, e esse medidor de espaço livre ajudou a mostrar 20 GiB reais como deveria, e depois
hdi compact
executei sem problemas.fonte