मुझे यहाँ घर पर एक बढ़िया वाई-फाई सेटअप नहीं मिला है और कभी-कभी यह असफल समय मशीन बैकअप में परिणाम देता है। क्या यह निर्दिष्ट करने का एक तरीका है कि टाइम मशीन केवल कुछ विशेष परिस्थितियों में ही बैकअप लेती है - अर्थात ईथरनेट कनेक्शन सक्रिय है ...?
मुझे यहाँ घर पर एक बढ़िया वाई-फाई सेटअप नहीं मिला है और कभी-कभी यह असफल समय मशीन बैकअप में परिणाम देता है। क्या यह निर्दिष्ट करने का एक तरीका है कि टाइम मशीन केवल कुछ विशेष परिस्थितियों में ही बैकअप लेती है - अर्थात ईथरनेट कनेक्शन सक्रिय है ...?
जवाबों:
यह मेरे द्वारा पोस्ट की गई अन्य स्क्रिप्ट का एक विकल्प है। यह एक पृष्ठभूमि में चलता है और नेटवर्क कनेक्शन का हर दो मिनट में यह निर्धारित करने के लिए परीक्षण करता है कि क्या यह ईथरनेट कनेक्शन या वायरलेस का उपयोग कर रहा है। यदि ईथरनेट पर, यह टाइम मशीन को सक्षम करता है; जब कनेक्शन वायरलेस पर स्विच होता है तो यह टाइम मशीन को निष्क्रिय कर देता है।
ईथरनेट से कनेक्ट होने के दौरान, आपको यह पुष्टि करने के लिए मैन्युअल रूप से एक कमांड चलाने की आवश्यकता होगी कि ईथरनेट किस इंटरफेस को सौंपा गया है। यह आदेश चलाएँ:
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 होना चाहिए; यदि आप एक मैक प्रो पर हैं, तो यह 1 हो सकता है।) इसके अलावा नीचे की स्क्रिप्ट में, शीर्ष पर जहां यह कहता है myusername
, अपने स्वयं के मैक उपयोगकर्ता नाम को प्रतिस्थापित करें।
-- 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
पासवर्ड के बिना टर्मिनल कमांड को चलने देना बहुत खतरनाक हो सकता है। यही कारण है कि ऊपर दिए गए चरणों ने अपनी स्वयं की निर्देशिका में शेल स्क्रिप्ट बनाई, इसलिए वास्तव में जो चलाया जा सकता है वह सीमित है।
टर्मिनल में निम्नलिखित कमांड दर्ज करें:
sudo pico /etc/sudoers
फिर संकेत दिए जाने पर अपना व्यवस्थापक पासवर्ड दर्ज करें।
यह आपको एक (अधिकतर) खाली स्क्रीन पर ला सकता है, या इसमें कुछ पाठ हो सकता है। अगर यह खाली है - यह ठीक है। आप बस नीचे की रेखा को सबसे ऊपर चिपकाएँगे। यदि पाठ पहले से मौजूद है, तो यह भी ठीक है; # User privilege specification
नीचे दिए गए स्क्रीनशॉट में देखा गया है कि अनुभाग में पहले से ही लाइनों के ठीक नीचे जाने के लिए अपने नीचे तीर का उपयोग करें ।
यहां, निम्नलिखित पंक्ति जोड़ें:
<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*
दोनों जगहों पर, जहां <yourusername>
यह दिखाई देता है, इसे अपने मैक उपयोगकर्ता नाम से बदलें। प्रेस control+ x, टाइप करें yऔर returnसहेजने और बाहर निकलने के लिए दबाएं ।
परीक्षण करें कि ये फाइलें निम्नलिखित कमांड चलाकर टाइम मशीन को चालू करती हैं (वर्तमान में टाइम मशीन चालू है):
sudo ./TM_Off.csh
एक पल के बाद मेनूबार में टाइम मशीन का आइकन ग्रे हो जाना चाहिए, यह दर्शाता है कि टाइम मशीन बंद है। (आपको परिवर्तन को प्रतिबिंबित करने के लिए आइकन पर क्लिक करने की आवश्यकता हो सकती है)। इस कार्य को मानते हुए, यह कमांड चलाएँ:
sudo ./TM_On.csh
और टाइम मशीन को फिर से सक्षम होना चाहिए।
ऊपर दिए गए AppleScript संपादक में आपके द्वारा बनाए गए एप्लिकेशन को चलाएं, और यह खुलेगा, सक्षम करने और टाइम मशीन को सक्षम करने से और आपके कनेक्शन को ईथरनेट से वायरलेस और बैक पर स्विच करने के रूप में। स्विचिंग को अक्षम करने के लिए, बस AppleScript एप्लिकेशन को बंद करें (डॉक में आइकन पर राइट-क्लिक करें और क्विट चुनें)।
launchd
किसी भी परिवर्तन को देखने के लिए इसका उपयोग करना और उसे बताना है /Library/Preferences/SystemConfiguration/
। इसका एक उदाहरण github.com/tjluoma/onnetworkchange पर उपलब्ध है ।
यह AppleScript जाँच करेगा कि ईथरनेट कनेक्शन सक्रिय है या नहीं, और यदि ऐसा है तो टाइम मशीन बैकअप चलाएं।
सबसे पहले, सिस्टम प्राथमिकता में टाइम मशीन को अक्षम करें। नीचे दी गई विधि इसे स्वचालित रूप से चलाएगी।
ईथरनेट से कनेक्ट होने के दौरान , आपको यह पुष्टि करने के लिए मैन्युअल रूप से एक कमांड चलाने की आवश्यकता होगी कि ईथरनेट किस इंटरफेस को सौंपा गया है। यह आदेश चलाएँ:
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
ऊपर से संख्या के साथ बदलें । (यदि आपके पास एक मैक प्रो है, तो यह सबसे अधिक संभावना होगी 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
फिर आपके द्वारा ऊपर दी गई लाइन को हटा दें और सहेजने और बाहर निकलने के लिए समान चरणों का उपयोग करें।
आप नेटवर्क वरीयताएँ खोल सकते हैं और सुनिश्चित कर सकते हैं कि ईथरनेट सेवा क्रम में शीर्ष कनेक्शन है। आप देख सकते हैं कि इस स्क्रीनशॉट में मेरा क्या मतलब है, मुझे उम्मीद है।
फिर, यदि ईथरनेट जुड़ा हुआ है, तो आपको इसे हमेशा अपने प्राथमिक कनेक्शन के रूप में उपयोग करना चाहिए।
सेवा प्राथमिकता निर्धारित करने के तरीके के लिए यहां देखें: http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/