¿Existe la posibilidad de "desfragmentar" una imagen de paquete dispersa y reclamar (la mayoría) del espacio libre?
Aquí está el trasfondo: estoy usando paquetes dispersos y de vez en cuando quiero recuperar espacio de ellos, así que corro:
hdiutil compact image.sparsebundle
Sin embargo, como se explica en la página del manual, solo reclama archivos de banda completamente no utilizados, por lo que en mi caso dice:
Reclaimed 0 bytes out of 90.4 GB possible.
Por supuesto, existe la posibilidad de copiar el contenido de esta imagen en un nuevo paquete disperso que luego se utiliza en lugar de eso, pero que es engorroso y requiere suficiente espacio libre para esta operación.
Mientras tanto, descubrí que la salida del comando compacto es algo engañosa (actualmente estoy ejecutando OS X 10.5.7) ya que a veces enumera un tamaño posible que es más grande que el tamaño actualmente ocupado por el paquete de imágenes en el disco duro manejar. No miré más de cerca, pero el resultado parece ser el tamaño máximo o el "tamaño máximo" - "tamaño usado".
Respuestas:
¡Interesante!
Por lo que he escuchado, el paquete disperso divide los datos en bandas de 8Mb. Cambiar el tamaño de la banda podría ayudar, si tienes suerte. Quiero decir, nunca obtendrás un 100% de espacio recuperado, pero tal vez sea mejor que lo que obtienes ahora. (Dependiendo de los datos en la imagen, etc.)
Hice una prueba simple y sucia con dos paquetes dispersos de 500Mb, uno con un tamaño de banda de 8Mb (predeterminado) y otro con 1Mb (el tamaño más pequeño permitido por lo que puedo decir). Copié más de 400 MB de archivos mp3 y luego eliminé todos los demás archivos y luego
hdiutil compact
los ejecuté.El comando para convertir su paquete disperso es
El tamaño de la banda está en la unidad 512byte. Entonces, el ejemplo anterior establece el tamaño de la banda en 512 * 2048 = 1Mb. Solo tenga cuidado si está tratando con imágenes de TimeMachine o imágenes de la carpeta de inicio del usuario, etc. Se está desviando de la ruta de Apple :) ¡Mantenga una copia de seguridad a prueba de fallas!
En cuanto a la desfragmentación: tengo la extraña sensación de que es igual de rápido (¡o más rápido!) Usar hdiutil para convertir el archivo disperso en un nuevo archivo disperso con el mismo formato. Creo que trata de ser inteligente al respecto. Pero no lo se.
(Tenga en cuenta que la desfragmentación de un paquete disperso solo desfragmenta los datos del disco, no las bandas del paquete disperso, a menos que sea un desfragmentador consciente del paquete disperso
hdiutil convert
. Creo que una desfragmentación de banda).fuente
-o
deben estar directamente antesdst.sparsebundle
, nosrc.sparsebundle
(-o
denota 'salida').-encryption
interruptor al comando.Creo que los 90.4 GB posibles son simplemente incorrectos. Cuando corrí:
... liberó 16 GB de espacio, que es aproximadamente lo que esperaba. Curiosamente, dijo aproximadamente "800 GB posibles", que es mucho más que la capacidad de mi HD. Así que supongo que la segunda cifra es solo un número teórico (defectuoso).
fuente
@Oscar nos señaló en la dirección correcta. Pero no necesita convertir a 1 MB y compacto, con la esperanza de recuperar espacio.
En cambio, simplemente copie su sparsebundle a otro nuevo sparsebundle. Esto, a su vez, desfragmenta la imagen por ti. Y al mismo tiempo, puede cambiar el sistema de archivos, el tamaño e incluso las bandas.
Aquí hay un ejemplo que hice recientemente, convirtiendo mi imagen de "código" de 20GB que sincronizo en todos los dispositivos.
Ver todas las opciones con
hdiutil create -help
.Este comando genera:
Puede ver la
-attach
opción montada debajo/Volumes/code
.Nota: Uso
HSFX
para HFS + sensible a mayúsculas y minúsculas porque también sincronizo mis imágenes con Linux y las monto. Lo más probable es que quieras usarloHFS+
, ya que macOS normalmente no distingue entre mayúsculas y minúsculas.Ahora todo lo que tengo que hacer es copiar todo a mi nuevo sparsebundle:
Y ahora para comparar:
Hurra. ¡Mi paquete disperso de 15 GB ahora tiene 3 GB, desfragmentado y las bandas cambiaron!
fuente
No conozco una forma gratuita de hacerlo, pero creo que Prosoft Drive Genius hará lo que necesita aquí:
http://www.prosofteng.com/products/drive_genius.php
Usted monta el paquete disperso, lo desfragmenta con Drive Genius y luego el
El comando debería funcionar.
fuente
¿Apuesto a que la unidad que contiene el paquete disperso tiene aproximadamente 90 GB de espacio libre? Como los paquetes dispersos a menudo pueden crecer hasta que el disco esté lleno, este espacio simplemente se informa como espacio libre disponible ... Verá las mismas cifras en la Utilidad de Discos. Muy engañoso de hecho.
Lo siguiente podría darle una idea:
fuente
Tenía un paquete disperso problemático que decía tener 950 GiB ocupados de 1024 GiB (mi SSD tiene un tamaño de solo 320 GiB, por lo que eso no podría suceder).
hdi compact
no ayudóEjecuté "Primeros auxilios" desde Disk Utility en el paquete Y la partición, y eso ayudó: el medidor de espacio libre comenzó a mostrar 20 GiB reales como debería, y luego se
hdi compact
ejecutó sin problemas.fuente