Jak automatycznie wysunąć dysk zapasowy Time Machine po każdej kopii zapasowej?

25

Jak ustawić Time Machine, aby automatycznie wysuwał mój zewnętrzny dysk kopii zapasowej Time Machine po każdej kopii zapasowej?

Adam A.
źródło
4
Ciekawa obserwacja: podczas tworzenia kopii zapasowej TimeMachine na dysku sieciowym TimeMachine automatycznie zamontuje, wykona kopię zapasową, a następnie odmontuje zdalny udział TimeMachine na dysku sieciowym. Zastanawiam się, czy możesz to wykorzystać, aby osiągnąć to, czego chcesz?
Ian C.

Odpowiedzi:

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"

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

Ustaw skrypt jako wykonywalny, zwolnij domyślną listę plików i załaduj nową:

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

Za każdym razem, gdy chcesz wprowadzić zmiany w pliku plist, musisz go rozładować i załadować:

launchctl unload ~/Library/LaunchAgents/timemachine_eject.plist
launchctl load ~/Library/LaunchAgents/timemachine_eject.plist
Lri
źródło
1
Podoba mi się to rozwiązanie, dodatkowo zautomatyzowałem ten proces, aby montować i odmontowywać pracę po podłączeniu dysku i zgodnie z harmonogramem. Odwiedź mój post tutaj: somethinginteractive.com/blog/2013/07/24/...
Mike Körmendy
Na Maverikach to nie działało, co dziwne, skrypt zapętlił się, a tworzenie kopii zapasowej odbywało się w sposób ciągły. Następująca zmiana działa jednak: <key> ProgramArguments </key> <array> <string> / Users / martin / bin / timemachine </string> </array>
Martin
cośinteractive.com
Pro Backup
6

Może istnieć lepszy sposób, ale jednym z rozwiązań może być Applescript. Nie znalazłem jeszcze sposobu na uruchomienie skryptu jabłkowego po utworzeniu kopii zapasowej, ale możesz:

  1. Wyłącz automatyczne tworzenie kopii zapasowych TM
  2. Skonfiguruj skrypt jabłkowy, aby uruchomić TM
    • Niektórzy googling podkręcili tę linię, aby wymusić natychmiastową kompilację TM: do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
  3. Dodaj linię, aby później wysunąć dysk.
    • eject disk somedrivename

Jeśli chcesz, aby tak się działo regularnie, możesz dołączyć go do zadania crona.

Fishtoaster
źródło
1
Wygląda obiecująco, ale musi istnieć sposób na rozpoczęcie # 3 dopiero po zakończeniu # 2.
Adam
Jeśli pamiętam, spróbuję to spreparować i przetestować, kiedy wrócę dziś wieczorem do domu (i spróbuję zmusić czekanie na zakończenie tworzenia kopii zapasowej przed wysunięciem).
Fishtoaster
Oto podobny pomysł w Mac OS X Hints , przy użyciu skryptu python.
Nathan Grigg
6

Nie próbowałem tego, ale wygląda na to, że może działać:

Jettison (link do Mac App Store)

Wysuwa dyski zewnętrzne, gdy kładzie się spać, i podłącza je ponownie po przebudzeniu.

Jim Greer
źródło