Увімкнення / вимкнення Time Machine залежно від типу підключення до мережі


9

У мене вдома немає чудового налаштування Wi-Fi, а іноді це призводить до невдалого резервного копіювання Time Machine. Чи є спосіб вказати, що Time Machine створює резервну копію лише за певних обставин - тобто, Ethernet-з'єднання активне ...?


Чи буде варіант роботи машини вручну вручну?
Thorbjørn Ravn Andersen

Я не впевнений, що означає "запущений вручну" - якщо це ввімкнено, він все одно запуститься, мені потрібно вмикати / вимикати відповідно до мережевих конфігурацій, в ідеалі.
babelmonk

Піктограма Time Machine на панелі стану містить запис меню "Резервне копіювання зараз" при натисканні правою кнопкою миші.
Thorbjørn Ravn Andersen

Відповіді:


6

Це альтернатива іншому сценарію, який я опублікував. Цей запуск працює у фоновому режимі і перевіряє мережеве з'єднання кожні дві хвилини, щоб визначити, використовує він Ethernet-з'єднання або бездротовий зв'язок. Якщо в Ethernet, він дозволяє Time Machine; коли з'єднання переходить на бездротовий зв'язок, він відключає Time Machine.

Крок 1: Перевірка системи

Підключившись до 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.

Крок 2: Створіть програму AppleScript

У нижченаведеному скрипті, де зазначено 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. Зберігайте його куди завгодно - настільний ПК або папку програм - це насправді не має значення, просто знайте, де ви зберегли його.

Діалогове вікно Збереження редактора AppleScript, у якому вказано формат файлу, встановлений у програмі, та встановлено прапорець Залишатись відкритим після запуску обробника

Крок 3: Створіть сценарії оболонок

Далі відкрийте Термінал. Введіть такі команди:

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

Крок 4: Налаштування 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

І машину часу слід знову включити.

І Off You Go

Запустіть додаток, яке ви створили в редакторі AppleScript вище, і воно залишатиметься відкритим, включаючи та відключаючи Time Machine, коли ваше з'єднання перемикається з Ethernet на бездротовий і назад. Щоб відключити перемикання, просто закрийте програму AppleScript (клацніть правою кнопкою миші на значку в док-станції та виберіть Вийти).


Ого, це дивовижно - я обов'язково загляну в нього і вставлю свої результати тут - я, можливо, навіть вставлю його в GitHub (з належною заслугою)!
babelmonk

Тут є гоночна умова: коли ви підключаєтесь до WiFi, у вас є двохвилинне вікно, в якому TM може запуститися до того, як скрипт помітить і вимкне його.
Рейд

1
Замість того, щоб запускати це кожні 2 хвилини, ви можете його запускати, коли є зміна конфігурації мережі. Вам просто потрібно скористатися launchdі сказати, щоб шукати будь-які зміни в /Library/Preferences/SystemConfiguration/папці. Я маю приклад цього на веб- сайті github.com/tjluoma/onnetworkchange .
TJ Luoma

6

Цей 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

Потім видаліть доданий вище рядок і виконайте ті ж дії, щоб зберегти та вийти.


Ах - це дивовижно - велике спасибі! Одне питання - чи потрібно відключити машину часу? Або це ввімкнено? Напевно, якщо це ввімкнено, він все одно працюватиме за власним графіком?
babelmonk

Думка про подібні рядки (вибачте за подвійний пост) - чи не могли б ви запустити щось подібне: lwgat.blogspot.co.uk/2013/02/…, щоб увімкнути / вимкнути машину часу та запустити це, а не @hourly, але в мережі змінити подію?
babelmonk

Ви хочете вимкнути Time Machine у ​​його налаштуваннях, перш ніж робити це. Що стосується використання події зміни мережі та / або включення / відключення Time Machine, це, безумовно, можливо. Я сьогодні погляну сьогодні і щось разом підкину в іншу відповідь.
tubedogg

Єдиним недоліком для виявлення зміни мережі є те, що ви повинні мати щось, що постійно працює у фоновому режимі, щоб виявити це.
tubedogg

-1

Ви можете відкрити мережеві налаштування та переконатися, що Ethernet - це верхнє з'єднання в сервісному замовленні. Ви можете побачити, що я маю на увазі на цьому скріншоті, сподіваюся.

Потім, якщо Ethernet підключений, ви завжди повинні використовувати його як основне з'єднання.

Дивіться тут, як встановити пріоритет служби: http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/


Дякую, я розумію цей твір. Проблема полягає в тому, що мені явно потрібно відключити резервне копіювання, коли Ethernet не підключений. Я думаю, я міг би написати AppleScript для того, щоб ввімкнути / вимкнути його (щось подібне: hints.macworld.com/article.php?story=20040222210724156 приспівування від ifconfig en0) ...
babelmonk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.