Как автоматически извлечь диск резервного копирования 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

1
Мне нравится это решение, я дополнительно автоматизировал этот процесс, чтобы подключать и отключать работу, когда я подключаю свой диск и по расписанию. Посетите мой пост здесь : thinginteractive.com/blog/2013/07/24/…
Майк Корменди

На Маверикс у меня это не сработало, как ни странно, скрипт зацикливался и резервное копирование выполнялось непрерывно. Следующее изменение работает: <key> ProgramArguments </ key> <array> <string> / Users / martin / bin / timemachine </ string> </ array>
Martin


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.


1
Выглядит многообещающе, но должен быть какой-то способ начать # 3 только после окончания # 2.
Адам

Если я помню, я постараюсь настроить это и протестировать, когда вернусь домой сегодня вечером (и постараюсь принудительно дождаться окончания резервного копирования перед извлечением).
Fishtoaster

Вот аналогичная идея в Mac OS X Hints , использующая скрипт на python.
Натан Григг

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.