Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

How do I set Time Machine to eject my external Time Machine backup drive automatically after each backup?

share|improve this question
3  
An interesting observation: when doing a TimeMachine backup to a network drive TimeMachine will automatically mount, backup and then unmount the remote TimeMachine share on the network drive. I wonder if you could exploit that to achieve what you want? –  Ian C. May 25 '11 at 14:39

3 Answers 3

~/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>

Make the script executable, unload the default plist, and load the new one:

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

Any time you want to make changes to the plist file, you have to unload and load it:

launchctl unload ~/Library/LaunchAgents/timemachine_eject.plist
launchctl load ~/Library/LaunchAgents/timemachine_eject.plist
share|improve this answer
    
I love this solution, I further automated this process to mount and unmount work when I plug my drive and on a schedule. Visit my post here: somethinginteractive.com/blog/2013/07/24/… –  Mike Kormendy Jul 31 '13 at 6:07

Haven't tried this, but it looks like it might work:

Jettison (Mac App Store link)

Ejects external drives when going to sleep and remounts them waking from sleep.

share|improve this answer

There might be a better way, but one solution might be to Applescript it. I haven't yet found any way to run an applescript after a backup, but you could:

  1. Turn off automatic TM backup
  2. Set up an applescript to run TM
    • Some googling turned up this line to force an immediate TM build: do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
  3. Add a line to eject the disk afterwards.
    • eject disk somedrivename

If you want this to happen on a regular basis, you could attach it to a cron job.

share|improve this answer
1  
Looks promising, but there needs to be some way to start #3 only after #2 ends. –  Adam A Aug 30 '10 at 14:27
    
If I remember, I'll try to rig this up and test it when I get home tonight (and try to enforce waiting for the backup to finish before ejecting). –  Fishtoaster Aug 30 '10 at 14:49
    
Here is a similar idea at Mac OS X Hints, using a python script. –  Nathan Grigg Jun 24 '11 at 21:31

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.