我家里没有很棒的Wi-Fi设置,有时会导致Time Machine备份失败。是否有一种方法可以指定Time Machine仅在某些情况下备份 - 即以太网连接是否有效......?
我家里没有很棒的Wi-Fi设置,有时会导致Time Machine备份失败。是否有一种方法可以指定Time Machine仅在某些情况下备份 - 即以太网连接是否有效......?
Answers:
这是我发布的其他脚本的替代方案。这个在后台运行并每两分钟测试一次网络连接,以确定它是使用以太网连接还是无线连接。如果在以太网上,它启用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
在开头 - 这是运行以太网连接的接口。
在下面的脚本中,它说的是 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
⌘ + 小号 保存。在“保存”属性表中,设置 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
按 控制 + X ,键入 ÿ 并按 返回 保存并退出。然后运行以下命令:
pico TM_Off.csh
并在此文件中粘贴以下行:
defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool FALSE
再次, 控制 + X , 然后 ÿ 和 返回 保存并退出。
接下来,输入以下命令:
chmod 4555 TM_O*.csh
chown root TM_O*.csh
sudo
没有密码运行 让终端命令 sudo
没有密码运行可能非常危险。这就是为什么上面的步骤在他们自己的目录中创建了shell脚本,所以实际上可以运行的是有限的。
在终端中输入以下命令:
sudo pico /etc/sudoers
然后在出现提示时输入管理员密码。
这可能会将您带到(大部分)空白屏幕,或者它可能包含一些文本。如果它是空白的 - 那没关系。您只需将下面的行粘贴在顶部即可。如果文本已经存在,那也没关系;用你的向下箭头直接在已经在的线下方 # User privilege specification
部分,如下面的截图所示。
在这里,添加以下行:
<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*
在这两个地方 <yourusername>
出现,将其替换为您的Mac用户名。按 控制 + X ,键入 ÿ 并按 返回 保存并退出。
通过运行以下命令测试这些文件打开和关闭Time Machine(假设Time Machine当前处于打开状态):
sudo ./TM_Off.csh
片刻之后,菜单栏中的Time Machine图标应变为灰色,表示Time Machine已关闭。 (您可能需要单击其图标以反映更改)。假设这有效,请运行以下命令:
sudo ./TM_On.csh
并且应该重新启用Time Machine。
运行您在上面的AppleScript编辑器中创建的应用程序,它将保持打开状态,启用和禁用Time Machine,因为您的连接从以太网切换到无线并返回。要禁用切换,只需关闭AppleScript应用程序(右键单击Dock中的图标并选择退出)。
launchd
并告诉它寻找任何改变 /Library/Preferences/SystemConfiguration/
夹。我有一个这方面的例子 github.com/tjluoma/onnetworkchange 。
此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
按 控制 + X 然后键入 y
并按 返回 保存并退出。
要禁用它,请返回终端,再次使用命令:
pico ~/crontab
然后删除上面添加的行并使用相同的步骤进行保存和退出。
您可以打开网络首选项,并确保以太网是服务订单中的顶级连接。我希望你可以在这个截图中看到我的意思。
然后,如果连接了以太网,则应始终将其用作主连接。
请参阅此处了解如何设置服务优先级: http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/