Non ho una grande configurazione Wi-Fi qui a casa e a volte risulta in backup di Time Machine falliti. C'è un modo per specificare che Time Machine esegue il backup solo in determinate circostanze, ad esempio la connessione Ethernet è attiva ...?
Questa è un'alternativa all'altra sceneggiatura che ho postato. Questo viene eseguito in background e verifica la connessione di rete ogni due minuti per determinare se sta utilizzando una connessione Ethernet o wireless. Se su Ethernet, abilita Time Machine; quando la connessione passa a wireless disattiva Time Machine.
Durante la connessione a Ethernet, è necessario eseguire manualmente un comando per confermare a quale interfaccia è assegnato Ethernet. Esegui questo comando:
ifconfig
Dovrebbe produrre uno schermo pieno di informazioni. Quello che stai cercando è una sezione con etichetta en
con un numero dopo di essa e la cui ultima riga è status: active
, come questa:
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
Nota il numero accanto a en
all'inizio: questa è l'interfaccia su cui è in esecuzione la tua connessione Ethernet.
Nello script seguente, dove viene indicato set wired_interface to "0"
, modifica 0
nel numero accanto a en
nell'output precedente. (Dovrebbe essere 0; se sei su un Mac Pro, potrebbe essere 1.) Inoltre nello script seguente, nella parte superiore dove si dice myusername
, sostituisci il tuo nome utente Mac.
-- 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
⌘ + s per salvare. Nella finestra di dialogo Salva, imposta File Format
come Application
e seleziona la casella per Stay open after run handler
. Salva dove vuoi - Desktop o Cartella delle applicazioni: non importa, basta sapere dove l'hai salvato.
Quindi,apriTerminale.Digitaiseguenticomandi:
cd~/mkdirTMSwitchcdTMSwitchpicoTM_On.csh
incollalaseguenterigain:
defaultswrite/Library/Preferences/com.apple.TimeMachineAutoBackup-boolTRUE
Premerecontrollo+x,digitareyepremerereturnpersalvareeduscire.Quindieseguiquestocomando:
picoTM_Off.csh
Einquestofileincollarelaseguenteriga:
defaultswrite/Library/Preferences/com.apple.TimeMachineAutoBackup-boolFALSE
Ancora,controllo+x,quindiyeritornopersalvareeduscire.
Successivamente,inserisciquesticomandi:
chmod4555TM_O*.cshchownrootTM_O*.csh
sudo
perl'esecuzionesenzapasswordLasciandocheilcomandoTerminalesudo
funzionisenzapasswordpuòesseremoltopericoloso.Eccoperchéipassaggiprecedentihannocreatogliscriptdellashellnellapropriadirectory,quindiciòchepuòessereeffettivamenteeseguitoèlimitato.
InserisciilseguentecomandonelTerminale:
sudopico/etc/sudoers
Quindiinseriscilapassworddell'amministratorequandorichiesto.
Questopotrebbeportartiaunoschermo(prevalentemente)vuoto,opotrebbeconteneredeltesto.Seèvuoto,vabene.Dovraisemplicementeincollarelarigainbassonellapartesuperiore.Seiltestoesistegià,vabeneanchequesto;usalatuafrecciagiùperandaredirettamentesottolelineegiànellasezione#Userprivilegespecification
,comemostratonelloscreenshotquisotto.
Qui, aggiungi la seguente riga:
<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*
In entrambi i casi in cui viene visualizzato <yourusername>
, sostituiscilo con il tuo nome utente Mac. Premi controllo + x , digita y e premi return per salvare ed uscire.
Verifica che questi file accendano e spengano la Time Machine eseguendo il seguente comando (supponendo che Time Machine sia attivo):
sudo ./TM_Off.csh
Dopo un attimo, l'icona Time Machine nella barra dei menu dovrebbe diventare grigia, ad indicare che Time Machine è disattivata. (Potrebbe essere necessario fare clic sull'icona per riflettere la modifica). Supponendo che funzioni, esegui questo comando:
sudo ./TM_On.csh
E Time Machine dovrebbe essere riattivato.
Eseguire l'applicazione creata in AppleScript Editor in alto, e rimarrà aperta, abilitando e disabilitando Time Machine mentre la connessione passa da Ethernet a wireless e viceversa. Per disabilitare il passaggio, basta chiudere l'applicazione AppleScript (fai clic con il pulsante destro del mouse sull'icona nel Dock e scegli Esci).
Questo AppleScript controllerà se la connessione Ethernet è attiva, quindi eseguirà un backup di Time Machine in caso affermativo.
Per prima cosa, disattiva Time Machine in Preferenze di Sistema. Il metodo seguente lo eseguirà automaticamente.
Mentre è connesso a Ethernet , è necessario eseguire manualmente un comando per confermare a quale interfaccia è assegnato Ethernet. Esegui questo comando:
ifconfig
Dovrebbe produrre uno schermo pieno di informazioni. Quello che stai cercando è una sezione con etichetta en
con un numero dopo di essa e la cui ultima riga è status: active
, come questa:
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
Nota il numero accanto a en
all'inizio: questa è l'interfaccia su cui è in esecuzione la tua connessione Ethernet. Nello script seguente, dove dice en9
, sostituisci 9
con il numero di sopra. (Se hai un Mac Pro, molto probabilmente sarà en0
o en1
. Altrimenti, sarà probabilmente 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
Salva questo come EthernetTimeMachine.scpt
nella tua cartella Inizio ( /Users/<yourusername>/
).
Quindi apri Terminale e digita il seguente comando:
pico ~/crontab
Questo aprirà un editor di testo per consentirti di programmare questo script in modo che venga eseguito su base oraria, proprio come fa Time Machine per impostazione predefinita. Incolla questa riga:
@hourly osascript ~/<yourusername>/EthernetTimeMachine.scpt
Premi controllo + X quindi digita y
e premi ritorno per salvare ed uscire.
Per disattivarlo, torna in Terminale, usa di nuovo il comando:
pico ~/crontab
Quindi elimina la riga che hai aggiunto sopra e usa gli stessi passaggi per salvare ed uscire.
Puoi aprire le tue Preferenze di rete e assicurarti che Ethernet sia la connessione superiore nell'ordine di servizio. Puoi vedere cosa intendo in questo screenshot, spero.
Quindi, se Ethernet è connessa, dovresti sempre utilizzarla come connessione principale.
Vedi qui per come impostare la priorità del servizio: link
Leggi altre domande sui tag automation network time-machine script