בקצרה: "מכין גיבוי" הוא 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, והרבה יותר דרך Wi-Fi. עדכון macOS גם מבטל את תוקף יומן השינויים, כך שהגיבוי הראשון אחריו הוא סריקה עמוקה מעצם הגדרתו. חברו, השאירו ללילה, ובדקו בבוקר לפני שעושים כל דבר אחר.
זה הנפוץ ב-Mac שרץ כבר זמן מה. כיבוי לא נקי, דיסק מלא, או כרך שתוקן יכולים כולם להשאיר את FSEvents לא שמיש, ומאז כל גיבוי הוא סריקה עמוקה עד שמשהו בונה אותו מחדש. הגיבוי עדיין עובד. הוא פשוט עולה שעות בכל פעם.
הפעלה מחדש בונה מחדש את היומן של כרך האתחול במקרים רבים, וזה הדבר הזול ביותר לנסות.
גיבוי שנקטע משאיר ביעד תיקייה שמסתיימת ב-.inProgress. Time Machine מנסה ליישב אותה לפני שהוא מתחיל משהו חדש, וביעד רשת היישוב הזה יכול לקחת יותר זמן משהגיבוי היה לוקח. חפשו בכונן הגיבוי, ב-Backups.backupdb בדיסק HFS+ או בתיקייה של הכרך עצמו בדיסק APFS.
מחיקת תיקיית .inProgress זורקת גיבוי שלא הסתיים ותו לא. כל גיבוי שהושלם הוא תיקייה נפרדת ולא נוגעים בו. העבירו אותה לפח מ-Finder, רוקנו את הפח, והתחילו גיבוי ידנית.
סריקה עמוקה מוגבלת במספר הקבצים, לא בגודלם. קובץ וידאו אחד של 40 GB הוא השוואה אחת. תיקיית node_modules של 40 GB יכולה להיות שני מיליון. DerivedData של Xcode, מטמוני npm ו-yarn, תמונות Docker, ה-cellar של Homebrew וספריית Steam הם החשודים הרגילים, וכל אחד מהם אפשר ליצור מחדש.
החריגו אותם בהגדרות המערכת, כללי, Time Machine, אפשרויות. זה מקצר גם את הסריקה וגם את ההעתקה, וזה לא עולה לכם שום דבר שתרצו אי פעם בחזרה.
Time Machine כותב תמונת דיסק ל-NAS או ל-Mac משותף, וכל אחת מהשוואות הקבצים האלה עוברת ברשת. ב-Wi-Fi, בקצה הבית, סריקה מעמיקה יכולה להימשך יום. קרבו את ה-Mac לנתב, או השתמשו בכבל Ethernet, ובדקו אם אותו גיבוי מסתיים בתוך שעה.
אם הוא אף פעם לא מסתיים, הבעיה כנראה בשיתוף עצמו, ואימות הוא הדרך לגלות אם מה שכבר שם קריא.
.inProgress מלכתחילה. אפשר לעצור את Time Machine בבטחה מפריט שורת התפריטים או עם tmutil stopbackup."מכין גיבוי" הוא מצב, והוא אותו מצב בין אם העבודה תסתיים בעוד דקה ובין אם לעולם לא. המספר שאתם באמת רוצים הוא מתי הסתיים הגיבוי האחרון שעבד, ו-Time Machine מחביא אותו מאחורי תפריט שצריך לפתוח.
Copy Shelter מציגה במסך הראשי את הגיל של הגיבוי האחרון שהושלם, והיא אומרת משהו אחרי שבעה ימים בלי אחד כזה. היא גם קוראת בשם לשלב שבו היא נמצאת ולקובץ שעליו היא עובדת, כך שעבודה ארוכה נראית כמו עבודה ארוכה ועבודה תקועה נראית תקועה.
וכשגיבוי כן מסתיים, "הסתיים" היא טענה על עותק שאף אחד לא בדק. Copy Shelter קוראת אותו בחזרה מול ה-hash ששמרה, לפי לוח זמנים, כך שגיבוי שהפסיק בשקט להיות קריא הוא משהו שמגלים ביום שלישי רגיל.
שניות עד כמה דקות כשיומן השינויים עובד, לא משנה מה גודל הדיסק. שעות כשהוא חזר לסריקה עמוקה. פקודת היומן שלמעלה אומרת לכם איזה מהם, וזו הדרך האמינה היחידה לדעת.
כן. שום דבר עוד לא נכתב בשלב הזה. עצרו אותו מפריט Time Machine בשורת התפריטים, או הריצו tmutil stopbackup. יציאה כפויה או שליפת הכונן בשלב ההעתקה הם המסוכנים, וזה מה שמשאיר תיקיית .inProgress מאחור.
רק אם אתם מחריגים משהו שאין לו תחליף. מטמונים, תיקיות build, תיקיות של מנהלי חבילות וספריות משחקים שהורדו אפשר לבנות מחדש מהאינטרנט. מה לגבות ב-Mac עובר על הרשימה.
אז הוא סורק את המקור, ועוד לא כותב. פעילות הכונן מתחילה בשלב ההעתקה. אם שעה של פלט יומן לא מראה שום דבר מתת-המערכת TimeMachine, ייתכן שהתהליך עצמו נתקע, והפעלה מחדש היא הצעד הבא.
יש לה אותה עבודה ואותן שתי דרכים לעשות אותה, כך שהרצה ראשונה קוראת הכול. מה שונה הוא שהיא אומרת באיזה שלב היא נמצאת ועל מה היא עובדת, והציון במסך הראשי שלה סופר את הגיבוי האחרון שהסתיים, ואף פעם לא את זה שהתחיל.
קשור: Time Machine אומר שאין מספיק מקום, כשגיבוי מפסיק לרוץ ולא אומר כלום, והשוואה בין Copy Shelter ל-Time Machine.