Je n'ai pas une excellente installation Wi-Fi à la maison et cela entraîne parfois l'échec des sauvegardes Time Machine. Existe-t-il un moyen de spécifier que Time Machine ne sauvegarde que dans certaines circonstances - par exemple, si la connexion Ethernet est active... ?
Réponses
Trop de publicités?Cet AppleScript vérifie si la connexion Ethernet est active, puis lance une sauvegarde Time Machine si c'est le cas.
Tout d'abord, désactivez Time Machine dans les préférences système. La méthode ci-dessous le lancera automatiquement.
En cas de connexion à l'Ethernet Vous devrez exécuter une commande manuellement pour confirmer l'interface à laquelle Ethernet est assigné. Exécutez cette commande :
ifconfig
Il devrait afficher un écran rempli d'informations. Ce que vous recherchez, c'est une section intitulée en
suivi d'un numéro, et dont la dernière ligne est status: active
comme ceci :
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
Notez le numéro à côté de en
au début - il s'agit de l'interface sur laquelle fonctionne votre connexion Ethernet. Dans le script ci-dessous, où il est dit en9
, remplacer 9
avec le numéro ci-dessus. (Si vous avez un Mac Pro, il s'agira probablement de en0
ou en1
. Dans le cas contraire, il sera probablement 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
Enregistrer sous EthernetTimeMachine.scpt
dans votre dossier personnel ( /Users/<yourusername>/
).
Ouvrez ensuite Terminal et tapez la commande suivante :
pico ~/crontab
Cela ouvrira un éditeur de texte qui vous permettra de programmer ce script pour qu'il s'exécute toutes les heures, tout comme Time Machine le fait par défaut. Collez cette ligne :
@hourly osascript ~/<yourusername>/EthernetTimeMachine.scpt
Presse control + X puis tapez y
et appuyez sur return pour enregistrer et quitter.
Pour le désactiver, retournez dans le terminal et utilisez à nouveau la commande :
pico ~/crontab
Ensuite, supprimez la ligne que vous avez ajoutée ci-dessus et procédez de la même manière pour enregistrer et quitter.
Il s'agit d'une alternative à l'autre script que j'ai posté. Celui-ci s'exécute en arrière-plan et teste la connexion réseau toutes les deux minutes pour déterminer s'il s'agit d'une connexion Ethernet ou sans fil. S'il s'agit d'une connexion Ethernet, il active Time Machine ; lorsque la connexion passe à une connexion sans fil, il désactive Time Machine.
Étape 1 : Vérification du système
Lorsque vous êtes connecté à Ethernet, vous devez exécuter une commande manuellement pour confirmer l'interface à laquelle Ethernet est assigné. Exécutez cette commande :
ifconfig
Il devrait afficher un écran rempli d'informations. Ce que vous recherchez, c'est une section intitulée en
suivi d'un numéro, et dont la dernière ligne est status: active
comme ceci :
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
Notez le numéro à côté de en
au début - il s'agit de l'interface sur laquelle fonctionne votre connexion Ethernet.
Étape 2 : Création de l'application AppleScript
Dans le script ci-dessous, où il est dit set wired_interface to "0"
, modifier le 0
jusqu'au numéro situé à côté de en
dans le résultat ci-dessus. (Ce devrait être 0 ; si vous êtes sur un Mac Pro, il se peut que ce soit 1.) Dans le script ci-dessous, en haut, là où il est dit myusername
, remplacez votre propre nom d'utilisateur 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 à épargner. Dans la feuille de propriétés Enregistrer, définissez le champ File Format
comme Application
et cochez la case Stay open after run handler
. Enregistrez-la où vous le souhaitez - Bureau ou dossier d'applications - peu importe, il suffit de savoir où vous l'avez enregistrée.
Étape 3 : Créer les scripts du shell
Ensuite, ouvrez Terminal. Tapez les commandes suivantes :
cd ~/
mkdir TMSwitch
cd TMSwitch
pico TM_On.csh
Collez la ligne suivante :
defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool TRUE
Presse control + x , type y et appuyez sur return pour enregistrer et quitter. Exécutez ensuite la commande suivante :
pico TM_Off.csh
Et dans ce fichier, collez la ligne suivante :
defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool FALSE
Encore une fois, control + x alors y y return pour enregistrer et quitter.
Entrez ensuite les commandes suivantes :
chmod 4555 TM_O*.csh
chown root TM_O*.csh
Étape 4 : Mise en place sudo
pour fonctionner sans mot de passe
Laisser la commande Terminal sudo
L'exécution d'un programme sans mot de passe peut être très dangereuse. C'est pourquoi les étapes ci-dessus ont créé les scripts de l'interpréteur de commandes dans leur propre répertoire, de sorte que ce qui peut être exécuté est limité.
Entrez la commande suivante dans Terminal :
sudo pico /etc/sudoers
Saisissez ensuite votre mot de passe d'administrateur lorsque vous y êtes invité.
Il se peut que vous arriviez à un écran (en grande partie) vierge, ou qu'il contienne du texte. Si l'écran est vide, ce n'est pas grave. Vous collerez simplement la ligne ci-dessous en haut de l'écran. Si du texte existe déjà, c'est également bien ; utilisez votre flèche vers le bas pour aller juste en dessous des lignes déjà présentes dans l'écran. # User privilege specification
comme le montre la capture d'écran ci-dessous.
Ici, ajoutez la ligne suivante :
<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*
Dans les deux endroits où <yourusername>
apparaît, remplacez-le par votre nom d'utilisateur Mac. Appuyez sur control + x , type y et appuyez sur return pour enregistrer et quitter.
Testez que ces fichiers activent et désactivent Time Machine en exécutant la commande suivante (en supposant que Time Machine est actuellement activé) :
sudo ./TM_Off.csh
Au bout d'un moment, l'icône Time Machine de la barre de menus devient grise, ce qui indique que Time Machine est désactivé. (Il se peut que vous deviez cliquer sur l'icône pour qu'elle reflète le changement). Si cela fonctionne, exécutez la commande suivante :
sudo ./TM_On.csh
Et Time Machine devrait être réactivé.
Et c'est parti
Exécutez l'application que vous avez créée dans l'Éditeur AppleScript ci-dessus, et elle restera ouverte, activant et désactivant Time Machine lorsque votre connexion passera d'Ethernet à sans fil et vice-versa. Pour désactiver la commutation, il suffit de fermer l'application AppleScript (cliquez avec le bouton droit de la souris sur l'icône dans le Dock et choisissez Quitter).
Vous pouvez ouvrir vos préférences réseau et vous assurer qu'Ethernet est la première connexion dans l'ordre des services. Vous pouvez voir ce que je veux dire sur cette capture d'écran, j'espère.
Ensuite, si Ethernet est connecté, vous devez toujours l'utiliser comme connexion principale.
Voir ici comment définir la priorité du service : http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/