iCloud और Dropbox को ड्राइव इजेक्ट होने से रोकने से कैसे बचाएं
क्लाउड सिंक सर्विसेज़ Mac पर external ड्राइव को eject होने से रोकने के लिए कुख्यात हैं। जानिए ये आपकी ड्राइव को क्यों पकड़े रहती हैं और इसका हल क्या है।
आपने हर ऐप बंद कर दिया। सब कुछ सेव कर लिया। आप eject पर क्लिक करते हैं और macOS कहता है कि ड्राइव अभी भी इस्तेमाल में है। आप lsof चलाते हैं और आउटपुट में bird, cloudd, या Dropbox दिखता है। कोई क्लाउड सिंक सर्विस आपकी ड्राइव को बंधक बनाए हुए है।
Mac पर eject फेल होने के सबसे आम और सबसे कम समझे जाने वाले कारणों में से यह एक है। क्लाउड सिंक सर्विसेज़ बैकग्राउंड में लगातार चलती रहती हैं, और इन्हें फ़ाइलों में होने वाले बदलावों पर नज़र रखने के लिए ही बनाया गया है। इस निगरानी का मतलब है खुले हुए file handles, और खुले हुए file handles का मतलब है कि आपकी ड्राइव eject नहीं होगी।
सिंक सर्विसेज़ eject को क्यों रोकती हैं
क्लाउड सिंक सर्विसेज़ फ़ोल्डरों में बदलावों पर नज़र रखकर काम करती हैं। जब कोई फ़ाइल बनती है, बदलती है, या डिलीट होती है, तो सर्विस इसे पहचान लेती है और बदलाव को क्लाउड पर सिंक कर देती है। इन बदलावों को पहचानने के लिए सर्विस जिन डायरेक्टरीज़ की निगरानी करती है उन पर खुले file handles बनाए रखती है या filesystem event watchers का इस्तेमाल करती है।
समस्या तब होती है जब निगरानी वाले किसी भी path आपकी external ड्राइव पर मौजूद हों। यह कई तरीकों से हो सकता है:
आपने जान-बूझकर ड्राइव पर एक सिंक फ़ोल्डर रखा। शायद आपने जगह बचाने के लिए अपना Dropbox फ़ोल्डर external ड्राइव पर शिफ्ट कर दिया हो, या आप वहाँ कोई प्रोजेक्ट फ़ोल्डर रखते हों जो iCloud Drive के ज़रिए शेयर होता है।
किसी एप्लिकेशन ने ड्राइव पर एक फ़ाइल बनाई जिसे किसी सिंक सर्विस ने अपना लिया। कुछ ऐप्स temporary फ़ाइलें, caches, या प्रोजेक्ट metadata उसी volume पर सेव कर देते हैं जिस पर वे काम कर रहे होते हैं।
Spotlight ने आपकी ड्राइव को index किया और किसी सिंक सर्विस ने उस index डेटा को पकड़ लिया। यह अप्रत्यक्ष है, लेकिन ऐसा होता है।
खास तौर पर iCloud
macOS पर iCloud के सिंक daemon का नाम bird है (हाँ, सच में)। कुछ सिंक ऑपरेशन संभालने के लिए आपको cloudd भी दिखेगा। ये प्रोसेस सिस्टम सर्विसेज़ की तरह चलते हैं और अगर आप इन्हें quit कर दें तो खुद-ब-खुद फिर से चालू हो जाते हैं।
अगर bird आपकी ड्राइव को रोक रहा है, तो इसका मतलब है कि वह उस volume पर किसी फ़ाइल या फ़ोल्डर की निगरानी कर रहा है। आम वजहों में शामिल हैं:
- iCloud Desktop & Documents: अगर यह फ़ीचर चालू है और आपकी external ड्राइव Finder में एक location के रूप में दिखती है, तो iCloud इससे जुड़े paths को index कर सकता है।
- Preview और QuickLook: external ड्राइव से कोई फ़ाइल Preview में खोलने पर iCloud-synced recent file references बन सकते हैं।
- Pages, Numbers, या Keynote: ये ऐप्स डिफ़ॉल्ट रूप से iCloud पर auto-save करते हैं। अगर आपने अपनी external ड्राइव से कोई दस्तावेज़ खोला है, तो ऐप लोकल फ़ाइल और iCloud reference के बीच एक कनेक्शन बनाए रख सकता है।
iCloud आपको रोक रहा है या नहीं, यह जाँचने के लिए:
lsof /Volumes/YourDriveName | grep -i bird
lsof /Volumes/YourDriveName | grep -i cloudd
खास तौर पर Dropbox
Dropbox फ़ाइल निगरानी के मामले में और भी आक्रामक है। आधुनिक macOS वर्ज़न पर, Dropbox क्लाइंट filesystem ऑपरेशन की रियल-टाइम निगरानी के लिए Apple के File Provider framework का इस्तेमाल करता है (पुराना kernel extension वाला तरीका macOS 12.3 में बंद कर दिया गया था)।
अगर आपका Dropbox फ़ोल्डर या कोई भी Dropbox-synced फ़ोल्डर आपकी external ड्राइव पर है, तो Dropbox उस volume से लगातार कनेक्शन बनाए रखेगा। यहाँ तक कि जो फ़ाइलें बहुत पहले सिंक हो चुकी हैं, उन पर भी निगरानी के लिए Dropbox के file handles लगे हो सकते हैं।
आपको Dropbox की तरफ़ से फ़ाइलें खुली रखने वाला Apple का fileproviderd प्रोसेस भी दिख सकता है। यह वह सिस्टम daemon है जो सभी File Provider extensions को मैनेज करता है, जिसमें Dropbox, OneDrive, और Google Drive शामिल हैं। यह उन volumes पर अतिरिक्त file handles बना सकता है जिनकी ये सर्विसेज़ निगरानी कर रही हों।
Dropbox के साथ सबसे भरोसेमंद तरीका: eject करने से पहले Dropbox एप्लिकेशन को पूरी तरह quit कर दें। menu bar में Dropbox आइकन पर क्लिक करें, अपनी profile picture पर क्लिक करें, और Quit चुनें। ड्राइव eject करने के बाद Dropbox दोबारा खोल लें।
Google Drive और OneDrive
Google Drive का डेस्कटॉप ऐप (Drive for Desktop) एक virtual ड्राइव बनाता है जो फ़ाइल ऑपरेशन के ज़रिए आपकी external ड्राइव से इंटरैक्ट कर सकता है। अगर आपने Google Drive और अपनी external ड्राइव के बीच फ़ाइलें कॉपी की हैं, तो Drive क्लाइंट references बनाए रख सकता है।
OneDrive का व्यवहार Dropbox जैसा ही है, बैकग्राउंड में फ़ाइल निगरानी के साथ। यह आम तौर पर file handles पकड़ने में कम आक्रामक होता है, लेकिन फिर भी eject को रोक सकता है।
दोनों सर्विसेज़ को eject करने से पहले उनके menu bar आइकन से pause या quit किया जा सकता है।
व्यावहारिक तरीका
अगर आप अक्सर external ड्राइव पर फ़ाइलों के साथ काम करते हैं और क्लाउड सिंक सर्विसेज़ इस्तेमाल करते हैं, तो eject करने से पहले सिंक को pause करने की आदत बना लें।
iCloud के लिए कोई आसान pause बटन नहीं है, लेकिन आप System Settings > Apple ID > iCloud > iCloud Drive में जाकर iCloud Drive को अस्थायी रूप से बंद कर सकते हैं। हालाँकि यह थोड़ा झंझट भरा है।
Dropbox के लिए, menu bar आइकन से सिंक को pause करें। Dropbox आइकन पर क्लिक करें, अपनी profile पर क्लिक करें, और “Pause syncing” चुनें।
Google Drive के लिए, menu bar में Drive आइकन पर क्लिक करें और “Pause syncing” चुनें।
Pause करने के बाद, खुले file handles बंद होने के लिए कुछ सेकंड रुकें, फिर अपनी ड्राइव eject करें।
समस्या को पहले ही रोकना
सबसे साफ़ तरीका यह है कि external ड्राइव पर क्लाउड-synced फ़ोल्डर कभी न रखें। सिंक फ़ोल्डर अपने Mac के internal storage पर रखें और external ड्राइव का इस्तेमाल उस डेटा के लिए करें जिसे सिंक करने की ज़रूरत नहीं है।
अगर आपको synced सामग्री external ड्राइव पर रखनी ही पड़े, तो साफ़ अलगाव बनाएँ। synced फ़ाइलें एक फ़ोल्डर में रखें और बिना-synced फ़ाइलें दूसरे में। जब eject करने की ज़रूरत होगी, तो आपको पता होगा कि कौन-सी सिंक सर्विस pause करनी है।
iCloud पर auto-save करने वाले ऐप्स (Pages, Numbers, Keynote, Preview) से अपनी external ड्राइव की फ़ाइलें खोलने से बचें। या कम से कम, eject करने से पहले उन ऐप्स को बंद कर दें और उन्हें file handles छोड़ने के लिए थोड़ा समय दें।
जब pause करना काफ़ी न हो
कभी-कभी आपने सिंक pause कर दिया, ऐप्स quit कर दिए, फिर भी ड्राइव eject नहीं होती। सिंक सर्विस एक पुराना (stale) file handle छोड़ गई होती है जो pause करने के बाद भी बना रहता है।
आप किसी खास प्रोसेस को kill करके इन handles को ज़बरदस्ती छुड़ा सकते हैं:
kill $(lsof -t /Volumes/YourDriveName)
यह ड्राइव इस्तेमाल कर रहे हर प्रोसेस को kill कर देता है। यह आक्रामक है पर असरदार है।
Ejecta इसे ज़्यादा सटीक तरीके से संभालता है। यह ठीक-ठीक पहचानता है कि कौन-से प्रोसेस आपकी ड्राइव को पकड़े हुए हैं, जिनमें क्लाउड सिंक daemons भी शामिल हैं, और आपको उन्हें अलग-अलग quit करने देता है। ड्राइव से जुड़ी हर चीज़ को kill करने के बजाय, आप सिर्फ़ bird प्रोसेस या सिर्फ़ उस Dropbox helper को निशाना बना सकते हैं जो समस्या पैदा कर रहा है। यह खास तौर पर तब काम आता है जब आपको पक्के तौर पर पता न हो कि कई सिंक सर्विसेज़ में से कौन-सी असली वजह है।
क्लाउड सिंक और external ड्राइव के बीच टकराव ज़रूरी नहीं है। आपको बस यह दिखना चाहिए कि पर्दे के पीछे क्या हो रहा है।
अगर आप हर बार Terminal इस्तेमाल नहीं करना चाहते, तो Ejecta आपको ठीक-ठीक दिखाता है कि कौन सा process आपके drive को रोक रहा है — और सीधे आपके menu bar से एक क्लिक में उसे बंद कर देता है।
अभी खरीदें — $9.99