Ayuda para desmontar el disco si el UUID está montado hasta un momento específico

Todas las mañanas tengo la misma rutina.

Entro al trabajo y conecto mis periféricos, incluido mi Time Machine Backup. Tengo mi Time Machine programada para ejecutar solo una copia de seguridad diaria a las 3:30 p. m. Me gustaría ejecutar un script o un .plist LaunchDeamon para verificar automáticamente todos los discos duros externos insertados y desmontarlos si el

UUID = 32E89C07-FFDB-36F3-8CE8-5DC0560AFEC4  

Y luego montarlo a las 3:15 pm. Simplemente no quiero que mi disco esté enchufado todo el día solo para usarlo durante 30 minutos para hacer una copia de seguridad de todo.

Sé que todo esto podría resolverse si conecto manualmente la unidad a las 3:15. Sin embargo, algunos días estoy en una reunión o lejos del escritorio y otras cosas.

Pude encontrar documentación sobre cómo expulsar automáticamente el dispositivo en un momento específico, por lo que no tengo que recordar quitar la unidad de manera segura.

<?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.diskejector.Backup</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/sbin/diskutil</string>
            <string>unmountDisk</string>
            <string>32E89C07-FFDB-36F3-8CE8-5DC0560AFEC4</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
                <integer>16</integer>
            <key>Minute</key>
            <integer>45</integer>
        </dict>
    </dict>
</plist>

Me gustaría recibir ayuda con el lanzamiento automático de un script .sh que también podría incluir el código anterior que tengo para expulsar la unidad al final del día.

Podría usar cronpara ejecutar automáticamente el script .sh. De hecho, si usa cron, no creo que necesite esos archivos plist o sh. Puede especificar directamente el diskutilcomando de montaje y desmontaje en cron y hacer que se ejecute diariamente a una hora específica.

Respuestas (1)

No se necesita un script de shell si usa dos agentes de lanzamiento.

Necesita el UUID de su unidad de copia de seguridad de Time Machine:

diskutil info $VolumeName | grep "Disk / Partition UUID:"

Reemplácelo $VolumeNamepor el nombre del volumen real de su unidad TM. Si el nombre contiene espacios, utilice comillas dobles (p. ej., "Unidad de copia de seguridad de Time Machine".

Cree dos archivos usr.tmvolume.unmount.plist y usr.tmvolume.mount.plist en ~/Library/LaunchAgents/:

nano ~/Library/LaunchAgents/usr.tmvolume.mount.plist

con el contenido

<?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>usr.tmvolume.mount</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/diskutil</string>
        <string>mount</string>
        <string>$UUID</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>15</integer>
            <key>Minute</key>
            <integer>15</integer>
        </dict>
    </array>
</dict>
</plist>

y

nano ~/Library/LaunchAgents/usr.tmvolume.unmount.plist

con el contenido:

<?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>usr.tmvolume.unmount</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/diskutil</string>
        <string>unmount</string>
        <string>$UUID</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>8</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
        <dict>
            <key>Hour</key>
            <integer>15</integer>
            <key>Minute</key>
            <integer>45</integer>
        </dict>
    </array>
</dict>
</plist>

Reemplace $UUID en ambas listas por el UUID de su volumen de Time Machine encontrado anteriormente.

Cargue ambas listas con:

launchctl load ~/Library/LaunchAgents/usr.tmvolume.*

Ahora, la unidad de copia de seguridad TM se desmontará a las 8:30 a. m., se montará a las 3:15 p. m. y se desmontará nuevamente a las 3:45 p. m. Ajuste las fechas según sea necesario.

¡Impresionante! Esto es lo que estaba buscando. ¡Solo necesito asegurarme de conectarme antes de las 8:30! ¡Gracias!