1 votos

¿Cómo puedo expulsar automáticamente los volúmenes que ya no uso?

Tengo un volumen (guardado como sparsebundle encriptado) que utilizo de vez en cuando. Por razones de seguridad, debería ser expulsado cuando no esté en uso. Por supuesto que debería hacerlo yo mismo, y normalmente me acuerdo. Pero no siempre. ¿Existe alguna forma automatizada de hacer esto como copia de seguridad para mi falible yo?

¿Tal vez una Folder Action que lo expulse tras un determinado periodo de tiempo (o mejor aún, tras un determinado periodo de inactividad) o a una determinada hora del día?

¿Quizás una forma de que se expulse automáticamente cuando el ordenador duerme? Actualmente, todavía está allí después de dormir el ordenador. (No quiero usar el cierre de sesión porque hay otros procesos que quiero mantener en marcha).

1 votos

¿Tienes algún archivo del volumen abierto en alguna aplicación mientras "usas" el volumen? Tal vez un cronjob/LaunchAgent intentando desmontar el volumen cada 15' (y fallando mientras haya un archivo abierto) funcionaría entonces.

1voto

anschauung Puntos 258

Gracias a patrix, ahora lo tengo funcionando. Voy a publicar algo aquí para otros que quieren hacer esto en el futuro.

Parece que cronjob ya no se recomienda, en su lugar launchd . Era la primera vez que escribía un agente de lanzamiento, así que hubo muchos errores antes de conseguir que funcionara. No pude descifrar los mensajes de error en el registro del sistema, pero al menos cuando estaban allí me decía que no estaba funcionando.

He encontrado un tutorial para un agente de lanzamiento en robots.thoughbot.com . Algunas de las formas que utiliza launchctl están marcados como "legacy" por Apple, pero aún así me funcionaron en Sierra.

Aquí está mi plist agente de lanzamiento:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.gae.umount1</string>
    <key>ProgramArguments</key>
    <array>
        <string>diskutil</string>
        <string>unmount</string>
        <string>force</string>
        <string>/Volumes/3D</string>
    </array>
    <key>StartInterval</key>
    <integer>10800</integer>
</dict>
</plist>

Se supone que ejecuta el comando Unix diskutil unmount force /Volumes/3D cada 10800 segundos (= 3 horas).

0 votos

Añadir el plist de LaunchAgent y el script al que llama (si lo hay) sería genial, tanto para futuros visitantes y como una oportunidad para que más ojos revisen tu código (y te den su opinión si es necesario).

0 votos

Sólo una idea.....en lugar de forzar un desmontaje cada tres horas, podrías ejecutar un script cada 30 min que compruebe si /var/sleepimage fue modificado y si lo fue, entonces desmontar el volumen. Esto significaría que acaba de salir del reposo (lo que significa que no hay acceso) y estarías limitado a una ventana de sólo 30 minutos. Por el contrario, si estás trabajando durante 3 horas y 1 minuto, no expulsará el volumen subrepticiamente.

0 votos

De todas formas, el contador duro es complicado. Si empiezas a usar el volumen 5 minutos antes de que se ejecute el agente, lo expulsará incluso cuando aún estés trabajando con su contenido.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X