Aktivieren / Deaktivieren von Time Machine je nach Netzwerkverbindungstyp

9

Ich habe hier zu Hause kein großartiges Wi-Fi-Setup und es führt manchmal zu fehlgeschlagenen Time Machine-Backups. Gibt es eine Möglichkeit anzugeben, dass Time Machine nur unter bestimmten Umständen eine Sicherung durchführt - dh die Ethernet-Verbindung ist aktiv ...?

Babelmonk
quelle
Wäre eine manuelle Laufzeitmaschine eine Option?
Thorbjørn Ravn Andersen
Ich bin mir nicht sicher, was "manuell ausführen" bedeutet. Wenn es aktiviert ist, wird es trotzdem ausgeführt. Im Idealfall muss ich es gemäß den Netzwerkkonfigurationen ein- und ausschalten.
Babelmonk
Das Time Machine-Symbol in der Statusleiste enthält beim Klicken mit der rechten Maustaste den Menüeintrag "Jetzt sichern".
Thorbjørn Ravn Andersen

Antworten:

6

Dies ist eine Alternative zu dem anderen Skript, das ich gepostet habe. Dieser wird im Hintergrund ausgeführt und testet die Netzwerkverbindung alle zwei Minuten, um festzustellen, ob eine Ethernet-Verbindung oder eine drahtlose Verbindung verwendet wird. Bei Ethernet wird Time Machine aktiviert. Wenn die Verbindung auf drahtlos umgeschaltet wird, wird Time Machine deaktiviert.

Schritt 1: Systemprüfung

Während Sie mit Ethernet verbunden sind, müssen Sie einen Befehl manuell ausführen, um zu bestätigen, welcher Schnittstelle Ethernet zugewiesen ist. Führen Sie diesen Befehl aus:

ifconfig

Es sollte ein Bildschirm voller Informationen ausgegeben werden. Was Sie suchen, ist ein Abschnitt, der enmit einer Zahl danach gekennzeichnet ist und dessen letzte Zeile status: activewie folgt lautet :

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether 00:25:00:ef:30:3c 
    inet6 fe80::225:ff:feef:303c%en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.68 netmask 0xffffff00 broadcast 192.168.1.255
    media: autoselect (100baseTX <full-duplex>)
    status: active

Notieren Sie sich die Nummer enam Anfang - dies ist die Schnittstelle, auf der Ihre Ethernet-Verbindung ausgeführt wird.

Schritt 2: Erstellen Sie die AppleScript-Anwendung

set wired_interface to "0"Ändern Sie im 0folgenden Skript, wo es steht , die Zahl in die Nummer neben ender obigen Ausgabe. (Es sollte 0 sein; wenn Sie auf einem Mac Pro arbeiten, kann es 1 sein.) myusernameErsetzen Sie auch im folgenden Skript oben dort, wo es steht , Ihren eigenen Mac-Benutzernamen.

-- Edit variables here --
global current_username
set current_username to "myusername"
global wired_interface
set wired_interface to "0"

-- DO NOT EDIT BELOW THIS LINE --
global last_connection
set last_connection to "wireless"

on idle
    if (do shell script "ifconfig en" & wired_interface & " | awk '/inet/ {print $2}'") is not equal to "" then
        -- on ethernet
        if last_connection is equal to "wireless" then
            -- turn TM on
            -- else do nothing, we're still on ethernet
            set last_connection to "ethernet"
            do shell script "sudo /Users/" & current_username & "/TMSwitch/TM_On.csh"
        end if
    else
        -- on wireless
        if last_connection is equal to "ethernet" then
            -- turn tm off
            -- else do nothing, we're still on wireless
            set last_connection to "wireless"
            do shell script "sudo /Users/" & current_username & "/TMSwitch/TM_Off.csh"
        end if
    end if
    return 120
end idle

+ szu speichern. Im Speichern Kartei setzt die File Formatwie Application, und das Kontrollkästchen Stay open after run handler. Speichern Sie es, wo immer Sie möchten - Desktop oder Anwendungsordner - es spielt wirklich keine Rolle, wissen Sie nur, wo Sie es gespeichert haben.

Dialogfeld "AppleScript Editor speichern" mit dem auf "Anwendung" festgelegten Dateiformat und aktiviertem Kontrollkästchen "Nach dem Ausführen des Handlers geöffnet bleiben"

Schritt 3: Erstellen Sie die Shell-Skripte

Öffnen Sie als Nächstes das Terminal. Geben Sie die folgenden Befehle ein:

cd ~/
mkdir TMSwitch
cd TMSwitch
pico TM_On.csh

Fügen Sie die folgende Zeile ein:

defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool TRUE

Drücken Sie control+ x, Typ yund drücken Sie returnzum Speichern und Beenden. Führen Sie dann diesen Befehl aus:

pico TM_Off.csh

Fügen Sie in diese Datei die folgende Zeile ein:

defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool FALSE

Wieder control+ x, dann yund returnzum Speichern und Beenden.

Geben Sie als Nächstes die folgenden Befehle ein:

chmod 4555 TM_O*.csh
chown root TM_O*.csh

Schritt 4: Einrichten sudofür die Ausführung ohne Kennwort

Das sudoAusführen des Terminalbefehls ohne Kennwort kann sehr gefährlich sein. Aus diesem Grund haben die obigen Schritte die Shell-Skripte in einem eigenen Verzeichnis erstellt, sodass die tatsächlich ausgeführten Funktionen begrenzt sind.

Geben Sie im Terminal den folgenden Befehl ein:

sudo pico /etc/sudoers

Geben Sie dann Ihr Administratorkennwort ein, wenn Sie dazu aufgefordert werden.

Dies kann Sie zu einem (meistens) leeren Bildschirm führen, oder es kann Text enthalten. Wenn es leer ist, ist das in Ordnung. Fügen Sie einfach die folgende Zeile oben ein. Wenn bereits Text vorhanden ist, ist das auch in Ordnung. Verwenden Sie Ihren Abwärtspfeil, um direkt unter die Linien zu gelangen, die sich bereits im # User privilege specificationAbschnitt befinden (siehe Abbildung unten).

Terminal-Screenshot mit der in Pico geöffneten Sudoers-Datei

Fügen Sie hier die folgende Zeile hinzu:

<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*

<yourusername>Ersetzen Sie ihn an beiden Stellen, an denen er angezeigt wird, durch Ihren Mac-Benutzernamen. Drücken Sie control+ x, Typ yund drücken Sie returnzum Speichern und Beenden.

Testen Sie, ob diese Dateien Time Machine ein- und ausschalten, indem Sie den folgenden Befehl ausführen (vorausgesetzt, Time Machine ist derzeit aktiviert):

sudo ./TM_Off.csh

Nach einem Moment sollte das Time Machine-Symbol in der Menüleiste grau werden, um anzuzeigen, dass Time Machine ausgeschaltet ist. (Möglicherweise müssen Sie auf das Symbol klicken, um die Änderung wiederzugeben.) Wenn dies funktioniert, führen Sie den folgenden Befehl aus:

sudo ./TM_On.csh

Und Time Machine sollte wieder aktiviert werden.

Und los geht's

Führen Sie die Anwendung aus, die Sie oben im AppleScript-Editor erstellt haben. Sie bleibt geöffnet und aktiviert und deaktiviert Time Machine, wenn Ihre Verbindung von Ethernet zu Wireless und zurück wechselt. Um die Umschaltung zu deaktivieren, schließen Sie einfach die AppleScript-Anwendung (klicken Sie mit der rechten Maustaste auf das Symbol im Dock und wählen Sie Beenden).

tubedogg
quelle
Wow, das ist erstaunlich - ich werde es mir sicher ansehen und meine Ergebnisse hier einfügen - ich kann es sogar in GitHub stecken (natürlich mit gebührender Anerkennung)!
Babelmonk
Hier gibt es eine Race-Bedingung: Wenn Sie eine Verbindung zu WiFi herstellen, haben Sie ein zweiminütiges Fenster, in dem TM möglicherweise gestartet wird, bevor das Skript es bemerkt und ausschaltet.
Reid
1
Anstatt dies alle 2 Minuten auszulösen, können Sie es auslösen, wenn sich die Netzwerkkonfiguration ändert. Sie müssen es nur verwenden launchdund anweisen, nach Änderungen am /Library/Preferences/SystemConfiguration/Ordner zu suchen . Ich habe ein Beispiel dafür unter github.com/tjluoma/onnetworkchange .
TJ Luoma
6

Dieses AppleScript prüft, ob die Ethernet-Verbindung aktiv ist, und führt in diesem Fall eine Time Machine-Sicherung durch.

Deaktivieren Sie zunächst Time Machine in den Systemeinstellungen. Die folgende Methode führt es automatisch aus.

Während Sie mit Ethernet verbunden sind , müssen Sie einen Befehl manuell ausführen, um zu bestätigen, welcher Schnittstelle Ethernet zugewiesen ist. Führen Sie diesen Befehl aus:

ifconfig

Es sollte ein Bildschirm voller Informationen ausgegeben werden. Was Sie suchen, ist ein Abschnitt, der enmit einer Zahl danach gekennzeichnet ist und dessen letzte Zeile status: activewie folgt lautet :

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether 00:25:00:ef:30:3c 
    inet6 fe80::225:ff:feef:303c%en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.68 netmask 0xffffff00 broadcast 192.168.1.255
    media: autoselect (100baseTX <full-duplex>)
    status: active

Notieren Sie sich die Nummer enam Anfang - dies ist die Schnittstelle, auf der Ihre Ethernet-Verbindung ausgeführt wird. en9Ersetzen Sie im folgenden Skript durch 9die Nummer von oben. (Wenn Sie einen Mac Pro haben, wird es höchstwahrscheinlich en0oder sein en1. Andernfalls wird es wahrscheinlich sein en0.)

if (do shell script "ifconfig en9 | awk '/inet/ {print $2}'") is not equal to "" then
    do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper &"
end if

Speichern Sie dies als EthernetTimeMachine.scptin Ihrem Home-Ordner ( /Users/<yourusername>/).

Öffnen Sie als nächstes Terminal und geben Sie den folgenden Befehl ein:

pico ~/crontab

Dadurch wird ein Texteditor geöffnet, mit dem Sie festlegen können, dass dieses Skript stündlich ausgeführt wird, wie dies bei Time Machine standardmäßig der Fall ist. Fügen Sie diese Zeile ein:

@hourly osascript ~/<yourusername>/EthernetTimeMachine.scpt

Drücken Sie control+ Xgeben Sie dann ein yund drücken Sie returnzum Speichern und Beenden.

Um es zu deaktivieren, kehren Sie zum Terminal zurück und verwenden Sie erneut den folgenden Befehl:

pico ~/crontab

Löschen Sie dann die oben hinzugefügte Zeile und führen Sie die gleichen Schritte zum Speichern und Beenden aus.

tubedogg
quelle
Ah - das ist großartig - vielen Dank! Eine Frage - muss ich die Zeitmaschine deaktivieren? Oder haben Sie es aktiviert? Sicher, wenn es aktiviert ist, läuft es immer noch nach seinem eigenen Zeitplan?
Babelmonk
Ein Gedanke in ähnlichen Zeilen (Entschuldigung für den doppelten Beitrag) - könnten Sie so etwas nicht ausführen: lwgat.blogspot.co.uk/2013/02/… , um die Zeitmaschine zu aktivieren / deaktivieren und dies anstelle von @hourly, aber im Netzwerk auszuführen Ereignis ändern?
Babelmonk
Sie möchten Time Machine in den Einstellungen deaktivieren, bevor Sie dies tun. Was die Verwendung eines Netzwerkänderungsereignisses und / oder das Aktivieren / Deaktivieren von Time Machine betrifft, ist dies definitiv machbar. Ich werde heute Abend einen Blick darauf werfen und etwas in einer anderen Antwort zusammenwerfen.
Tubedogg
Der einzige Nachteil beim Erkennen einer Netzwerkänderung besteht darin, dass ständig etwas im Hintergrund ausgeführt wird, um sie zu erkennen.
Tubedogg
-1

Sie können Ihre Netzwerkeinstellungen öffnen und sicherstellen, dass Ethernet die oberste Verbindung im Serviceauftrag ist. Sie können sehen, was ich in diesem Screenshot meine, hoffe ich.

Wenn Ethernet verbunden ist, sollten Sie es immer als primäre Verbindung verwenden.

Informationen zum Festlegen der Dienstpriorität finden Sie hier: http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/

user55785
quelle
Danke, ich verstehe das Stück. Das Problem ist, dass ich Backups explizit deaktivieren muss, wenn kein Ethernet verbunden ist. Ich denke, ich könnte ein AppleScript schreiben, um es zu aktivieren / deaktivieren (so etwas wie: hints.macworld.com/article.php?story=20040222210724156 grepping from ifconfig en0) ...
babelmonk