[MacOS Mojave 10.14.6]
Recientemente he descubierto las imágenes de disco r/w y el particularmente fascinante sparse bundle.
Según tengo entendido, una imagen (el propio .dmg o .sparsebundle) se "conecta" y se "desconecta" de la misma manera que un disco externo, por ejemplo, se "conecta" o "desconecta". Los volúmenes contenidos en cualquiera de los dos casos estarían "montados" y "desmontados". Pero aquí está el problema:
caffeinatedbits ~$ hdiutil create -size 1g -layout GPTSPUD -fs APFS -volname temp -type SPARSEBUNDLE -nospotlight -encryption AES-256 temp.sparsebundle
Enter a new password to secure "temp.sparsebundle":
Re-enter new password:
created: /Users/caffeinatedbits/temp.sparsebundle
caffeinatedbits ~$
caffeinatedbits ~$ hdiutil attach temp.sparsebundle -mountroot .
Enter password to access "temp.sparsebundle":
/dev/disk8 GUID_partition_scheme
/dev/disk8s1 Apple_APFS
/dev/disk9 EF57347C-0000-11AA-AA11-0030654
/dev/disk9s1 41504653-0000-11AA-AA11-0030654 /Users/caffeinatedbits/temp
Aquí observé que al adjuntar la imagen aparentemente se monta automáticamente el volumen. Genial.
Me imagino que tal vez haría lo mismo a la inversa, pero al intentar separar la imagen, sólo expulsa el volumen:
caffeinatedbits ~$ hdiutil detach temp
"disk9" ejected.
caffeinatedbits ~$ diskutil list | grep disk8
/dev/disk8 (disk image):
0: GUID_partition_scheme +1.1 GB disk8
1: Apple_APFS Container disk9 1.1 GB disk8s1
Physical Store disk8s1
La imagen propiamente dicha (/dev/disk8) permanece unida y debe separarse del volumen propiamente dicho (antes /dev/disk9s1).
En este punto, empecé a preguntarme si es seguro hacer un rsync/copia de seguridad de la imagen ya que todavía está conectada. ¿O eso podría causar corrupción? Así que quise averiguar cómo separar completamente la imagen...
caffeinatedbits ~$ hdiutil detach disk8
"disk8" ejected.
Entonces me pregunté si podría haber hecho eso desde el principio. Resulta que puedo...
caffeinatedbits ~$ hdiutil attach temp.sparsebundle -mountroot .
Enter password to access "temp.sparsebundle":
/dev/disk8 GUID_partition_scheme
/dev/disk8s1 Apple_APFS
/dev/disk9 EF57347C-0000-11AA-AA11-0030654
/dev/disk9s1 41504653-0000-11AA-AA11-0030654 /Users/caffeinatedbits/temp
caffeinatedbits ~$ hdiutil detach disk8
"disk8" ejected.
Pero entonces me pregunté si se podría dañar el volumen al no haber sido desmontado primero. ¿Debo desmontar el volumen primero, o la separación de la imagen (disco8) lo hace automáticamente?
caffeinatedbits ~$ hdiutil attach temp.sparsebundle -mountroot .
Enter password to access "temp.sparsebundle":
/dev/disk8 GUID_partition_scheme
/dev/disk8s1 Apple_APFS
/dev/disk9 EF57347C-0000-11AA-AA11-0030654
/dev/disk9s1 41504653-0000-11AA-AA11-0030654 /Users/caffeinatedbits/temp
caffeinatedbits ~$ umount disk9s1
caffeinatedbits ~$ hdiutil detach disk8
"disk8" ejected.
¿Alguien sabe por qué llamar a hdiutil detach <mountpoint>
no desprende la imagen? Me imagino que es porque sólo el volumen (disk9s1) está montado en ese punto de montaje y sólo se detiene allí.
Una vez desprendido, estoy usando rsync -ai --inplace image.sparsebundle -e ssh u@x.x.x.x::share/
para hacer una copia de seguridad de la imagen en mi NAS. Según tengo entendido, es una muy mala idea hacer esto mientras el volumen sigue montado, pero ¿qué pasa con la imagen en sí misma que permanece conectada? ¿Importa?
¿Cuál es la forma correcta de hacerlo para asegurarme de no corromper mis imágenes?
Actualización @ Gordon Davisson
caffeinatedbits ~$ hdiutil attach temp.sparsebundle -mountroot .
Enter password to access "temp.sparsebundle":
/dev/disk8 GUID_partition_scheme
/dev/disk8s1 Apple_APFS
/dev/disk9 EF57347C-0000-11AA-AA11-0030654
/dev/disk9s1 41504653-0000-11AA-AA11-0030654 /Users/caffeinatedbits/temp
caffeinatedbits ~$ cd temp
caffeinatedbits temp$ hdiutil detach disk8
hdiutil: couln't unmount "disk8" - Resource busy
caffeinatedbits temp$ cd ..
caffeinatedbits ~$ hdiutil detach disk8
"disk8" ejected.
Basándome en tu comentario, supongo que esto muestra que el volumen se desmonta al separar la imagen padre.