छोटा जवाब: बैकअप तैयार किया जा रहा है का मतलब है Time Machine यह पता कर रहा है कि पिछली बार से क्या बदला। आमतौर पर यह सिस्टम के रखे बदलाव लॉग से यह पढ़ लेता है। जब वह लॉग काम का नहीं रहता तो यह डिस्क की हर फ़ाइल से गुज़रता है, और यही चालीस सेकंड और चार घंटे का फ़र्क है।
अगले हिस्से की कमांड बताती है कि दोनों में से क्या हो रहा है, ताकि आप अंदाज़ा लगाना बंद कर सकें।
एक भी बाइट कॉपी करने से पहले Time Machine को तय करना होता है कि क्या कॉपी करना है। macOS फ़ाइल सिस्टम के बदलावों का एक चलता लॉग रखता है जिसे FSEvents कहते हैं, और अच्छी स्थिति में Time Machine उस लॉग से पिछले बैकअप के बाद बदली हर चीज़ पूछ लेता है, जिसमें भरी डिस्क पर भी कुछ सेकंड लगते हैं।
खराब स्थिति में वह लॉग जवाब नहीं दे पाता। तब Time Machine गहरी स्कैन पर लौटता है, यानी सोर्स की हर फ़ाइल की पिछले बैकअप से एक-एक करके तुलना। दस लाख फ़ाइलों वाले Mac पर, जिनमें ज़्यादातर छोटी हैं, कुछ भी कॉपी होने से पहले घंटों का काम है। प्रोग्रेस बार इसमें से कुछ नहीं बताता। दोनों के लिए यह "बैकअप तैयार किया जा रहा है" कहता है।
दो कमांड। कोई भी कुछ नहीं बदलती।
tmutil status
Percent और BytesCopied देखें। असली तैयारी वाले चरण में दोनों शून्य पर रहते हैं, जो उम्मीद के मुताबिक है। आपको लॉग चाहिए, जो साफ़ बताता है कि इसने कौन सा रास्ता लिया:
log show --predicate 'subsystem == "com.apple.TimeMachine"' --last 1h --info | grep -i -E "deep|event|scan|prepar"
Deep event scan या event database is not usable वाली लाइन ही जवाब है। यह सब कुछ स्कैन कर रहा है। इवेंट पढ़ने और कुछ ही पाथ वाली लाइन का मतलब है कि बदलाव लॉग ने काम किया और कुछ और धीमा है।
इसके बजाय इसे लाइव देखने के लिए, और Control-C से रोकने के लिए:
log stream --predicate 'subsystem == "com.apple.TimeMachine"' --info
तुलना के लिए पहले का कोई बैकअप न हो, तो पूरी डिस्क पढ़ी जाती है। USB पर भरी ड्राइव के लिए कुछ घंटे सामान्य हैं, और वाई-फ़ाई पर बहुत ज़्यादा। macOS अपडेट भी बदलाव लॉग को अमान्य कर देता है, इसलिए उसके बाद का पहला बैकअप हमेशा गहरी स्कैन होता है। ड्राइव लगाएँ, रात भर छोड़ दें, और कुछ और करने से पहले सुबह देखें।
कुछ समय से चल रहे Mac पर यही आम मामला है। गलत तरीके से बंद होना, भरी डिस्क, या रिपेयर किया वॉल्यूम, सब FSEvents को बेकार कर सकते हैं, और उसके बाद जब तक कुछ उसे फिर से न बनाए, हर बैकअप गहरी स्कैन होता है। बैकअप फिर भी काम करता है। बस हर बार घंटे लगते हैं।
कई मामलों में रीस्टार्ट बूट वॉल्यूम का लॉग फिर से बना देता है, और यह आज़माने लायक सबसे सस्ता उपाय है।
बीच में रुका बैकअप जगह पर .inProgress पर खत्म होने वाला फ़ोल्डर छोड़ देता है। Time Machine कुछ नया शुरू करने से पहले उसे मिलाने की कोशिश करता है, और नेटवर्क जगह पर यह मिलान बैकअप से भी ज़्यादा समय ले सकता है। बैकअप ड्राइव पर देखें, HFS+ डिस्क पर Backups.backupdb में या APFS डिस्क पर वॉल्यूम के अपने फ़ोल्डर में।
.inProgress फ़ोल्डर डिलीट करने से एक अधूरा बैकअप जाता है और कुछ नहीं। हर पूरा बैकअप एक अलग फ़ोल्डर है और उसे छुआ नहीं जाता। Finder से इसे ट्रैश में ले जाएँ, ट्रैश खाली करें, और हाथ से बैकअप शुरू करें।
गहरी स्कैन फ़ाइलों की संख्या से बँधी है, उनके साइज़ से नहीं। 40 GB की एक वीडियो फ़ाइल एक तुलना है। 40 GB की node_modules डायरेक्टरी बीस लाख हो सकती है। Xcode का DerivedData, npm और yarn कैश, Docker इमेज, Homebrew का cellar और Steam लाइब्रेरी आम संदिग्ध हैं, और ये सब फिर से बन सकते हैं।
इन्हें सिस्टम सेटिंग्ज़, सामान्य, Time Machine, विकल्प में बाहर रखें। इससे स्कैन और कॉपी दोनों छोटे होते हैं, और आपका ऐसा कुछ नहीं जाता जो आप कभी वापस चाहें।
Time Machine किसी NAS या शेयर किए गए Mac पर डिस्क इमेज लिखता है, और फ़ाइलों की हर तुलना नेटवर्क पर होती है। घर के दूसरे छोर से Wi-Fi पर, एक गहरे स्कैन में पूरा दिन लग सकता है। Mac को राउटर के पास ले जाएँ, या ईथरनेट इस्तेमाल करें, और देखें कि क्या वही बैकअप एक घंटे में पूरा हो जाता है।
अगर यह कभी पूरा ही नहीं होता, तो समस्या शायद शेयर में ही है, और सत्यापन से पता चलता है कि जो पहले से वहाँ है वह पढ़ने लायक है या नहीं।
.inProgress फ़ोल्डर इसी से बनता है। Time Machine को मेनू बार आइटम से या tmutil stopbackup से सुरक्षित रूप से रोका जा सकता है।बैकअप तैयार किया जा रहा है एक स्टेटस है, और यह वही स्टेटस है चाहे काम एक मिनट में पूरा हो या कभी नहीं। आपको असल में यह संख्या चाहिए कि आखिरी सफल बैकअप कब पूरा हुआ, और Time Machine उसे ऐसे मेनू के पीछे रखता है जिसे आपको खोलना पड़ता है।
Copy Shelter अपनी मुख्य स्क्रीन पर आखिरी पूरे हुए बैकअप की उम्र दिखाता है, और सात दिन तक कोई न हो तो कुछ कहता है। काम करते समय यह अपना चरण और जिस फ़ाइल पर है उसका नाम भी बताता है, इसलिए लंबा काम लंबा दिखता है और अटका काम अटका दिखता है।
और जब बैकअप पूरा होता भी है, तो पूरा होना उस कॉपी के बारे में एक दावा है जिसे किसी ने जाँचा नहीं। Copy Shelter तय समय पर इसे स्टोर किए हैश से मिलाकर वापस पढ़ता है, इसलिए चुपचाप पढ़ने लायक न रहा बैकअप आपको किसी आम दिन ही पता चल जाता है।
जब बदलाव लॉग काम कर रहा हो तो कुछ सेकंड से दो-एक मिनट, डिस्क का साइज़ कुछ भी हो। जब यह गहरी स्कैन पर लौट जाए तो घंटे। ऊपर की लॉग कमांड बताती है कि कौन सा मामला है, और जानने का यही एकमात्र भरोसेमंद तरीका है।
हाँ। उस चरण में अभी कुछ भी लिखा नहीं गया है। इसे Time Machine मेनू बार आइटम से रोकें, या tmutil stopbackup चलाएँ। कॉपी वाले चरण में ज़बरदस्ती बंद करना या ड्राइव निकालना जोखिम भरा है, और उसी से .inProgress फ़ोल्डर पीछे छूट जाता है।
सिर्फ़ तब जब आप कुछ ऐसा बाहर रखें जो दोबारा नहीं मिल सकता। कैश, बिल्ड डायरेक्टरी, पैकेज मैनेजर फ़ोल्डर और डाउनलोड की गई गेम लाइब्रेरी, सब इंटरनेट से फिर से बन सकते हैं। Mac पर किसका बैकअप लें में पूरी सूची है।
तब यह सोर्स स्कैन कर रहा है, अभी लिख नहीं रहा। ड्राइव की हलचल कॉपी वाले चरण में शुरू होती है। अगर एक घंटे के लॉग आउटपुट में TimeMachine सबसिस्टम से कुछ भी नहीं दिखता, तो प्रोसेस खुद अटका हो सकता है, और अगला कदम रीस्टार्ट है।
इसे भी वही काम करना है और उसके वही दो तरीके हैं, इसलिए पहली बार में यह सब कुछ पढ़ता है। फ़र्क यह है कि यह बताता है कि यह किस चरण में है और किस पर काम कर रहा है, और मुख्य स्क्रीन का स्कोर आखिरी पूरे हुए बैकअप को गिनता है, शुरू हुए को कभी नहीं।
संबंधित: Time Machine कहता है कि जगह काफ़ी नहीं है, जब बैकअप चलना बंद हो जाए और कुछ न कहे, और Copy Shelter और Time Machine की तुलना।