네트워크 연결 유형에 따라 Time Machine 활성화 / 비활성화


9

집에서 훌륭한 Wi-Fi 설정을 얻지 못하여 Time Machine 백업이 실패하는 경우가 있습니다. 특정 상황에서만 Time Machine이 백업되도록 지정하는 방법이 있습니까? 즉 이더넷 연결이 활성화되어 있습니까?


수동으로 Time Machine을 실행하는 것이 옵션입니까?
Thorbjørn Ravn Andersen

'수동으로 실행 중'이 무엇을 의미하는지 잘 모르겠습니다. 활성화 된 경우 어쨌든 네트워크 구성에 따라 이상적으로 켜거나 꺼야합니다.
babelmonk

마우스 오른쪽 버튼을 클릭하면 상태 표시 줄의 Time Machine 아이콘에 "지금 백업"메뉴 항목이 있습니다.
Thorbjørn Ravn Andersen

답변:


6

이것은 내가 게시 한 다른 스크립트의 대안입니다. 백그라운드에서 실행되며 2 분마다 네트워크 연결을 테스트하여 이더넷 연결 또는 무선을 사용하고 있는지 확인합니다. 이더넷에 있으면 Time Machine이 활성화됩니다. 연결이 무선으로 전환되면 Time Machine이 비활성화됩니다.

1 단계 : 시스템 검사

이더넷에 연결되어있는 동안 어떤 인터페이스 이더넷이 할당되었는지 확인하려면 하나의 명령을 수동으로 실행해야합니다. 이 명령을 실행하십시오 :

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시작 옆에있는 숫자를 참고하십시오. 이것은 이더넷 연결이 실행되는 인터페이스입니다.

2 단계 : AppleScript 응용 프로그램 생성

아래 스크립트 에서이라고 표시된 위의 출력 옆에있는 숫자로 set wired_interface to "0"변경하십시오 . (0이어야합니다. Mac Pro를 사용하는 경우 1 일 수 있습니다.) 또한 아래 스크립트에서 맨 위에있는 고유 한 Mac 사용자 이름으로 바꾸십시오.0enmyusername

-- 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다음 yreturn저장하고 종료합니다.

다음 명령을 입력하십시오.

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

4 단계 : sudo비밀번호없이 실행되도록 설정

sudo비밀번호없이 터미널 명령을 실행하면 매우 위험 할 수 있습니다. 그렇기 때문에 위의 단계가 자체 디렉토리에 쉘 스크립트를 작성했기 때문에 실제로 실행할 수있는 것은 제한되어 있습니다.

터미널에 다음 명령을 입력하십시오.

sudo pico /etc/sudoers

그런 다음 메시지가 표시되면 관리자 암호를 입력하십시오.

빈 화면이 나타나거나 텍스트가 표시 될 수 있습니다. 비어 있으면 괜찮습니다. 아래 줄을 맨 위에 붙여 넣으십시오. 텍스트가 이미 존재하면 괜찮습니다. # User privilege specification아래 스크린 샷에서 볼 수 있듯이 아래쪽 화살표를 사용하여 섹션에 이미있는 줄 바로 아래로 이동하십시오 .

Pico에서 열린 sudoers 파일을 보여주는 터미널 스크린 샷

여기에 다음 줄을 추가하십시오.

<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

Time Machine을 다시 활성화해야합니다.

그리고 당신은 간다

위의 AppleScript 편집기에서 생성 한 응용 프로그램을 실행하면 연결이 이더넷에서 무선으로 또는 다시 전환 될 때 Time Machine을 활성화 및 비활성화 할 수 있습니다. 전환을 비활성화하려면 AppleScript 응용 프로그램을 닫으십시오 (Dock에서 아이콘을 마우스 오른쪽 단추로 클릭하고 종료를 선택하십시오).


와우, 이것은 놀랍습니다-그것을 들여다보고 여기에 결과를 붙여 넣을 것입니다-심지어 GitHub에 넣을 수도 있습니다 (당연히 크레딧이 있습니다)!
babelmonk

여기에는 경쟁 조건이 있습니다. WiFi에 연결하면 스크립트가 통지되기 전에 TM이 시작되어 꺼질 수있는 2 분의 창이 있습니다.
Reid

1
2 분마다이를 트리거하지 않고 네트워크 구성이 변경 될 때마다 트리거 할 수 있습니다. 폴더를 launchd변경하기 위해 사용 하고 알려 주면됩니다 /Library/Preferences/SystemConfiguration/. github.com/tjluoma/onnetworkchange 에서이 예제를 사용할 수 있습니다 .
TJ Luoma

6

이 AppleScript는 이더넷 연결이 활성화되어 있는지 확인한 다음 Time Machine 백업을 실행합니다.

먼저 시스템 환경 설정에서 Time Machine을 비활성화하십시오. 아래 방법은 자동으로 실행됩니다.

이더넷에 연결되어있는 동안 어떤 인터페이스 이더넷이 할당되었는지 확인하려면 하나의 명령을 수동으로 실행해야합니다. 이 명령을 실행하십시오 :

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시작 옆에있는 숫자를 참고하십시오. 이것은 이더넷 연결이 실행되는 인터페이스입니다. 그것이 말하는 아래의 스크립트에서 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

Time Machine처럼 기본적으로이 스크립트가 매시간 실행되도록 예약 할 수있는 텍스트 편집기가 열립니다. 이 줄을 붙여 넣습니다.

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

를 눌러 control+는 X다음 입력 y하고 Enter 키를 눌러 return저장하고 종료합니다.

비활성화하려면 터미널로 돌아가서 다음 명령을 다시 사용하십시오.

pico ~/crontab

그런 다음 위에서 추가 한 행을 삭제하고 동일한 단계를 사용하여 저장하고 종료하십시오.


아-이거 대단해-정말 고마워! 한 가지 질문-타임머신을 비활성화해야합니까? 아니면 사용하도록 설정 했습니까? 확실히 활성화되어 있으면 여전히 자체 일정대로 실행됩니까?
babelmonk

비슷한 줄에 대한 생각 (더블 포스트 죄송합니다) -lwgat.blogspot.co.uk/2013/02/… 타임머신 을 활성화 / 비활성화하고 @hourly가 아닌 네트워크에서이를 실행할 수 있습니다. 이벤트 변경?
babelmonk

이 작업을 수행하기 전에 해당 설정에서 Time Machine을 비활성화하려고합니다. 네트워크 변경 이벤트를 활용하거나 Time Machine을 활성화 / 비활성화하는 한 가능합니다. 오늘 밤 살펴보고 다른 답변으로 함께 무언가를 던질 것입니다.
tubedogg

네트워크 변경 감지의 한 가지 단점은 감지하기 위해 백그라운드에서 지속적으로 실행중인 무언가가 있어야한다는 것입니다.
tubedogg

-1

네트워크 환경 설정을 열고 이더넷이 서비스 순서에서 최상위 연결인지 확인할 수 있습니다. 이 스크린 샷에서 무슨 의미인지 알 수 있기를 바랍니다.

그런 다음 이더넷이 연결되어 있으면 항상 기본 연결로 사용해야합니다.

서비스 우선 순위를 설정하는 방법은 여기를 참조하십시오 : http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/


고마워요, 그 부분을 이해합니다. 문제는 이더넷이 연결되어 있지 않을 때 백업을 명시 적으로 비활성화해야한다는 것입니다. : 나는 EN / 비활성화 그것 (이 같은 애플 스크립트를 작성할 수 추측 hints.macworld.com/article.php?story=20040222210724156 ... ifconfig를 EN0에서 grepping를)
babelmonk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.