У мене вдома немає чудового налаштування Wi-Fi, а іноді це призводить до невдалого резервного копіювання Time Machine. Чи є спосіб вказати, що Time Machine створює резервну копію лише за певних обставин - тобто, Ethernet-з'єднання активне ...?
У мене вдома немає чудового налаштування Wi-Fi, а іноді це призводить до невдалого резервного копіювання Time Machine. Чи є спосіб вказати, що Time Machine створює резервну копію лише за певних обставин - тобто, Ethernet-з'єднання активне ...?
Відповіді:
Це альтернатива іншому сценарію, який я опублікував. Цей запуск працює у фоновому режимі і перевіряє мережеве з'єднання кожні дві хвилини, щоб визначити, використовує він Ethernet-з'єднання або бездротовий зв'язок. Якщо в Ethernet, він дозволяє Time Machine; коли з'єднання переходить на бездротовий зв'язок, він відключає Time Machine.
Підключившись до Ethernet, вам потрібно буде виконати одну команду вручну, щоб підтвердити, якому інтерфейсу призначений Ethernet. Виконайте цю команду:
ifconfig
Він повинен вивести екран, повний інформації. Що ви шукаєте, це розділ, позначений en
цифрою після нього, чий останній рядок status: active
такий:
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
Зверніть увагу на номер поруч en
із початком - це інтерфейс, на якому працює ваше з'єднання Ethernet.
У нижченаведеному скрипті, де зазначено set wired_interface to "0"
, змініть 0
на число, розташоване поруч із en
наведеним вище висновком. (Це має бути 0; якщо ви працюєте на Mac Pro, це може бути 1.) Також у нижченаведеному сценарії вгорі, де написано myusername
, замініть власне ім’я користувача 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зберегти. На аркуші "Збереження властивостей" встановіть File Format
як Application
і встановіть прапорець Stay open after run handler
. Зберігайте його куди завгодно - настільний ПК або папку програм - це насправді не має значення, просто знайте, де ви зберегли його.
Далі відкрийте Термінал. Введіть такі команди:
cd ~/
mkdir TMSwitch
cd TMSwitch
pico TM_On.csh
Вставте наступний рядок у:
defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool TRUE
Натисніть control+ x, введіть yта натисніть, returnщоб зберегти та вийти. Потім запустіть цю команду:
pico TM_Off.csh
І в цей файл вставити наступний рядок:
defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool FALSE
Знову control+ x, потім yі returnдля збереження та виходу.
Далі введіть ці команди:
chmod 4555 TM_O*.csh
chown root TM_O*.csh
sudo
для запуску без пароляsudo
Запуск команди Terminal без пароля може бути дуже небезпечним. Ось чому наведені вище кроки створили скрипти оболонки у власному каталозі, тому те, що насправді можна запустити, обмежене.
Введіть таку команду в термінал:
sudo pico /etc/sudoers
Потім введіть пароль свого адміністратора, коли буде запропоновано.
Це може перенести вас на (в основному) порожній екран, або у ньому може бути текст. Якщо він порожній - це добре. Ви просто вставте рядок нижче вгорі. Якщо текст уже існує, це теж добре; скористайтеся стрілкою вниз, щоб перейти прямо під рядки, вже в # User privilege specification
розділі, як показано на знімку екрана нижче.
Тут додайте наступний рядок:
<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*
В обох місцях, де <yourusername>
відображається, замініть його на ваше ім’я користувача Mac. Натисніть control+ x, введіть yта натисніть, returnщоб зберегти та вийти.
Перевірте, що ці файли включають і вимикають Time Machine, виконавши таку команду (якщо припустимо, що Time Machine увімкнено):
sudo ./TM_Off.csh
Через деякий час піктограма Time Machine у меню буде сіріти, що означає, що Time Machine вимкнено. (Вам може знадобитися натиснути на іконку, щоб відобразити зміни). Припускаючи, що це працює, запустіть цю команду:
sudo ./TM_On.csh
І машину часу слід знову включити.
Запустіть додаток, яке ви створили в редакторі AppleScript вище, і воно залишатиметься відкритим, включаючи та відключаючи Time Machine, коли ваше з'єднання перемикається з Ethernet на бездротовий і назад. Щоб відключити перемикання, просто закрийте програму AppleScript (клацніть правою кнопкою миші на значку в док-станції та виберіть Вийти).
launchd
і сказати, щоб шукати будь-які зміни в /Library/Preferences/SystemConfiguration/
папці. Я маю приклад цього на веб- сайті github.com/tjluoma/onnetworkchange .
Цей AppleScript перевірить, чи активне підключення до Ethernet, і запустить резервну копію Time Machine, якщо так.
По-перше, відключіть машину часу в системних налаштуваннях. Наведений нижче метод запустить його автоматично.
Підключившись до Ethernet , вам потрібно буде виконати одну команду вручну, щоб підтвердити, якому інтерфейсу призначений Ethernet. Виконайте цю команду:
ifconfig
Він повинен вивести екран, повний інформації. Що ви шукаєте, це розділ, позначений en
цифрою після нього, чий останній рядок status: active
такий:
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
Зверніть увагу на номер поруч en
із початком - це інтерфейс, на якому працює ваше з'єднання Ethernet. У нижченаведеному сценарії, де написано en9
, замініть 9
числом зверху. (Якщо у вас є Mac Pro, це, швидше за все, буде en0
або en1
. Інакше, швидше за все, буде 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
Збережіть це як EthernetTimeMachine.scpt
у своїй домашній папці ( /Users/<yourusername>/
).
Далі відкрийте термінал і введіть таку команду:
pico ~/crontab
Це відкриє текстовий редактор, який дозволить вам планувати виконання цього сценарію щогодини, як і за замовчуванням. Вставити цей рядок:
@hourly osascript ~/<yourusername>/EthernetTimeMachine.scpt
Натисніть control+, Xпотім введіть y
та натисніть, returnщоб зберегти та вийти.
Щоб відключити його, поверніться до терміналу, знову використовуйте команду:
pico ~/crontab
Потім видаліть доданий вище рядок і виконайте ті ж дії, щоб зберегти та вийти.
Ви можете відкрити мережеві налаштування та переконатися, що Ethernet - це верхнє з'єднання в сервісному замовленні. Ви можете побачити, що я маю на увазі на цьому скріншоті, сподіваюся.
Потім, якщо Ethernet підключений, ви завжди повинні використовувати його як основне з'єднання.
Дивіться тут, як встановити пріоритет служби: http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/