Interessante!
Pelo que ouvi, o pacote esparso divide os dados em bandas de 8Mb. Mudar 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 você recebe agora. (Dependendo dos dados da imagem, etc.)
Eu fiz um teste simples sujo com dois pacotes esparsos de 500Mb, um com tamanho de banda de 8Mb (padrão) e outro com 1Mb (menor tamanho permitido do que eu posso dizer). Eu copiei mais de 400MB de arquivos mp3 e, em seguida, removi todos os outros arquivos e, em seguida, execute hdiutil compact
em suas bundas.
Size after compact
8Mb bands: 271Mb
1Mb bands: 215Mb
O comando para converter seu pacote esparso é
hdiutil convert src.sparsebundle -format UDSB -tgtimagekey sparse-band-size=2048 -o dst.sparsebundle
O tamanho da banda está na unidade 512 bytes. Portanto, o exemplo acima define o tamanho da banda para 512 * 2048 = 1Mb. Só tome cuidado se você está lidando com imagens TimeMachine ou imagens de pasta de usuário, etc Você está se desviando do caminho da Apple :) Mantenha um backup com segurança!
Quanto à desfragmentação: Eu tenho uma sensação engraçada de que é tão rápido (ou mais rápido!) apenas usar o hdiutil para converter o arquivo esparso para um novo arquivo esparso com o mesmo formato. Eu acho que tenta ser esperto sobre isso. Mas eu não sei.
(Observe que a desfragmentação de um pacote esparso apenas desfragmenta os dados do disco, não as bandas de pacote esparso, a menos que seja um desfragmentador ou uma desfragmentação esparsa do pacote. hdiutil convert
faz uma desfragmentação da banda, acredito).