Как автоматически извлечь диск резервного копирования Time Machine после каждого резервного копирования?

25

Как настроить Time Machine на автоматическое извлечение внешнего резервного диска Time Machine после каждого резервного копирования?

Адам А
источник
4
Интересное наблюдение: при выполнении резервного копирования TimeMachine на сетевой диск TimeMachine автоматически монтирует, выполняет резервное копирование, а затем отключает удаленный общий ресурс TimeMachine на сетевом диске. Интересно, вы могли бы использовать это для достижения того, что вы хотите?
Ян С.

Ответы:

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>

Сделайте скрипт исполняемым, выгрузите plist по умолчанию и загрузите новый:

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

Каждый раз, когда вы хотите внести изменения в файл plist, вы должны выгрузить и загрузить его:

launchctl unload ~/Library/LaunchAgents/timemachine_eject.plist
launchctl load ~/Library/LaunchAgents/timemachine_eject.plist
LRI
источник
1
Мне нравится это решение, я дополнительно автоматизировал этот процесс, чтобы подключать и отключать работу, когда я подключаю свой диск и по расписанию. Посетите мой пост здесь : thinginteractive.com/blog/2013/07/24/…
Майк Корменди
На Маверикс у меня это не сработало, как ни странно, скрипт зацикливался и резервное копирование выполнялось непрерывно. Следующее изменение работает: <key> ProgramArguments </ key> <array> <string> / Users / martin / bin / timemachine </ string> </ array>
Martin
Pro Backup
6

Возможно, есть лучший способ, но одним из решений может быть его применение в Applescript. Я еще не нашел способа запустить яблочный скрипт после резервного копирования, но вы могли бы:

  1. Отключить автоматическое резервное копирование ТМ
  2. Настройте яблочный скрипт для запуска ТМ
    • Некоторые прибегали к помощи этой строки, чтобы немедленно начать сборку ТМ: do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
  3. Добавьте строку, чтобы извлечь диск впоследствии.
    • eject disk somedrivename

Если вы хотите, чтобы это происходило регулярно, вы можете прикрепить его к заданию cron.

Fishtoaster
источник
1
Выглядит многообещающе, но должен быть какой-то способ начать # 3 только после окончания # 2.
Адам
Если я помню, я постараюсь настроить это и протестировать, когда вернусь домой сегодня вечером (и постараюсь принудительно дождаться окончания резервного копирования перед извлечением).
Fishtoaster
Вот аналогичная идея в Mac OS X Hints , использующая скрипт на python.
Натан Григг
6

Не пробовал это, но похоже, что это может сработать:

Jettison (ссылка на Mac App Store)

Извлекает внешние диски перед сном и перемонтирует их после пробуждения.

Джим Грир
источник