¿Cómo expulso la unidad de copia de seguridad de Time Machine automáticamente después de cada copia de seguridad?

25

¿Cómo configuro Time Machine para expulsar mi unidad de copia de seguridad externa de Time Machine automáticamente después de cada copia de seguridad?

Adam A
fuente
44
Una observación interesante: al hacer una copia de seguridad de TimeMachine en una unidad de red, TimeMachine automáticamente montará, realizará una copia de seguridad y luego desmontará el recurso compartido remoto de TimeMachine en la unidad de red. Me pregunto si podrías explotar eso para lograr lo que quieres.
Ian C.

Respuestas:

19

~ / bin / timemachine:

#!/bin/bash

d="Time Machine"  # (change this to match the name of your backup drive)
diskutil mount "$d" && tmutil startbackup -b && diskutil eject "$d"

~ / Library / LaunchAgents / timemachine_eject.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>timemachine_eject</string>
    <key>Program</key>
    <string>/Users/username/bin/timemachine</string> <!-- Replace "username" with your username. "~/bin/timemachine" doesn't work -->
    <key>StartInterval</key>
    <integer>120</integer> <!-- run every two minutes for testing. -->
        <!-- Change this to a higher number like 43200 (run every 12 hours) once you've confirmed it works. -->
</dict>
</plist>

Haga que el script sea ejecutable, descargue el plist predeterminado y cargue el nuevo:

chmod +x ~/bin/timemachine
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.backupd-auto.plist
launchctl load ~/Library/LaunchAgents/timemachine_eject.plist

Cada vez que desee realizar cambios en el archivo plist, debe descargarlo y cargarlo:

launchctl unload ~/Library/LaunchAgents/timemachine_eject.plist
launchctl load ~/Library/LaunchAgents/timemachine_eject.plist
Lri
fuente
1
Me encanta esta solución, automaticé aún más este proceso para montar y desmontar el trabajo cuando conecto mi unidad y en un horario. Visita mi publicación aquí: somethinginteractive.com/blog/2013/07/24/…
Mike Kormendy
En Maveriks esto no funcionó para mí, curiosamente, el script se repitió y la copia de seguridad se realizó de forma continua. Sin embargo, el siguiente cambio funciona: <key> ProgramArguments </key> <array> <string> / Users / martin / bin / timemachine </string> </array>
Martin
somethinginteractive.com está caído, versión archivada: web.archive.org/web/20160409130936/http://…
Pro Backup el
6

Puede haber una mejor manera, pero una solución podría ser Applescript. Todavía no he encontrado ninguna manera de ejecutar un AppleScript después de una copia de seguridad, pero podría:

  1. Desactiva la copia de seguridad automática de TM
  2. Configurar un AppleScript para ejecutar TM
    • Al buscar en Google apareció esta línea para forzar una compilación inmediata de TM: do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
  3. Agregue una línea para expulsar el disco después.
    • eject disk somedrivename

Si desea que esto suceda regularmente, puede adjuntarlo a un trabajo cron.

Fishtoaster
fuente
1
Parece prometedor, pero debe haber alguna forma de comenzar el n. ° 3 solo después de que finalice el n. ° 2.
Adam A
Si recuerdo, intentaré arreglar esto y probarlo cuando llegue a casa esta noche (y trataré de hacer cumplir la espera de que termine la copia de seguridad antes de expulsarla).
Fishtoaster
Aquí hay una idea similar en Mac OS X Hints , usando un script python.
Nathan Grigg
6

No he intentado esto, pero parece que podría funcionar:

Jettison (enlace de Mac App Store)

Expulsa las unidades externas cuando se va a dormir y las vuelve a montar despertando del sueño.

Jim Greer
fuente