בקצרה: בדקו את התאריך של הקובץ החדש ביותר בגיבוי, לא את התאריך של התיקייה. חותמת הזמן של תיקייה משתנה מסיבות שאין להן שום קשר לסיום גיבוי.
אם הקובץ החדש ביותר בתוכו ישן יותר מאתמול, הגיבוי לא רץ, לא משנה מה הכלי אומר לכם.
רוב עצות הגיבוי עוסקות באסון הלא נכון. הן מדמיינות אסון דרמטי: דיסק מת, מחשב נייד נגנב, הצפה. אלה נדירים וכולם מבינים אותם.
המקרה הנפוץ משעמם. הכונן נותק כדי לפנות מקום למשהו אחר ולא חזר. ה-NAS הופעל מחדש אחרי הפסקת חשמל והשיתוף לא התחבר מחדש. המחשב הנייד היה סגור ברגע שהמשימה הייתה אמורה לרוץ, כל לילה, במשך חודש. סקריפט יצא עם שגיאה שאף אחד לא קרא כי אף אחד לא קורא יומן שהיה תקין שנה.
בכל אחד מאלה, שום דבר לא שבור. שום שגיאה לא עולה בשום מקום שאדם מסתכל בו. תיקיית הגיבוי עדיין שם, עדיין מלאה בקבצים, עדיין בגודל הנכון. הדבר היחיד שהשתנה הוא שהיא הפסיקה להתעדכן, ושום דבר במערכת לא חושב שזה שווה אזכור.
כוונו את זה ליעד הגיבוי שלכם. זה מוצא את הקובץ ששונה לאחרונה בכל מקום בתוכו ומדפיס את התאריך שלו:
find /Volumes/Backup -type f -print0 | xargs -0 stat -f '%m %N' | sort -rn | head -5
העמודה הראשונה היא חותמת זמן Unix. כדי לקרוא אותה ישירות:
find /Volumes/Backup -type f -newermt '-2 days' | head
אם זה לא מדפיס כלום, שום דבר לא נכתב יומיים. זו התשובה, והיא אמינה יותר מכל מסך מצב, כי היא תכונה של הקבצים עצמם.
ל-Time Machine במיוחד:
tmutil latestbackup
שמדפיס את הנתיב של תמונת המצב החדשה ביותר, עם התאריך שלה בשם, או שגיאה אם אין כזו.
האינסטינקט הוא להסתכל על תיקיית הגיבוי ב-Finder ולקרוא את עמודת "תאריך שינוי". המספר הזה לא מה שאתם חושבים.
זמן השינוי של תיקייה משתנה כשמשהו מתווסף אליה או מוסר ממנה, ולא כשהתוכן של קובץ בתוכה משתנה. אינדוקס של Spotlight, קובץ .DS_Store שנכתב מחדש, סורק אנטי-וירוס, לקוח ענן שנוגע במטא-נתונים שלו: כל אחד מאלה יכול לגרום לתיקיית גיבוי ישנה להיראות כאילו נכתבה הבוקר.
הקבצים שבפנים הם התיעוד. התיקייה לא.
launchd עם StartCalendarInterval לא רצה בזמן שה-Mac ישן, ולא משלימה אחר כך אלא אם ביקשתם. למחשב נייד שנסגר בחצות יש גיבוי של חצות שמעולם לא קרה אפילו פעם אחת.launchd כותבת את התלונה שלה לקובץ, והקובץ הוא הדבר היחיד שיודע.אם אתם עושים את זה בעצמכם, הפתרון הוא מתג אדם מת: משהו שמתלונן כשגיבוי לא קרה. זה אירוע שונה מגיבוי שנכשל, ורק הראשון מכסה את המקרים שלמעלה.
הגרסה הפשוטה ביותר היא משימה שבודקת את הגיל של הקובץ החדש ביותר וצועקת אם הוא ישן מדי:
if [ -z "$(find /Volumes/Backup -type f -newermt '-2 days' 2>/dev/null | head -1)" ]; then
osascript -e 'display notification "No backup in two days" with title "Backup"'
fi
הריצו את זה לפי לוח זמנים משלו, נפרד מהגיבוי, כדי שלוח זמנים שבור של הגיבוי לא ישבור גם את מה שמשגיח עליו. הנקודה האחרונה היא זו שאנשים טועים בה: בדיקה שרצה בתוך משימת הגיבוי לא יכולה לדווח שמשימת הגיבוי לא רצה.
מה שאתם באמת רוצים הוא שההיעדר יהיה ההתראה, ושהכלי יציין בשמו את מה שחסר.
Copy Shelter בנויה על זה. היא עוקבת מתי כל יעד נכתב לאחרונה ונבדק לאחרונה, והיא מתריעה אחרי שבעה ימים בלי גיבוי שעבד. היא מציינת את המיקום בשמו, כך שתקבלו "הכונן במגירה לא נראה מאז 14 באוגוסט". ומכיוון שהיא קוראת את הגיבוי חזרה ובודקת כל חלק מול ה-hash שתחתיו נשמר, גם גיבוי שרץ אבל מייצר פלט לא קריא נתפס, וזו התקלה שנמצאת צעד אחד מעבר לדף הזה.
הציון שהיא מציגה סופר רק את מה שאומת לאחרונה. גיבוי שלא רץ הוא לא גיבוי שיש לכם, והמספר אומר את זה.
לא אמורים להצטרך. זו כל הנקודה של הדף: בדיקה שמבצעים ידנית היא בדיקה שתפסיקו לבצע, בדרך כלל כשלושה שבועות אחרי שהגדרתם אותה. הפכו את התראת ההיעדר לאוטומטית, ותנו לבדיקה הידנית להיות מה שאתם עושים כשהיא אומרת לכם.
זה עוזר, וזה מוגבל. Time Machine מזהיר אחרי שלא השלים גיבוי עשרה ימים, וקל לסגור את ההתראה וקל להפסיק לשים לב אליה. הוא גם לא יכול להגיד לכם שהגיבוי שהוא כן השלים לא קריא, כי בדיסק מקומי הוא לא בודק.
זה מקרה ההרשאות, והוא מגעיל יותר כי כל מחוון מצב אומר הצלחה. השוו את מספר הקבצים ביעד למספר במקור. אם גיבוי שאמור להחזיק עשרות אלפי קבצים מחזיק ארבעים, macOS מסרב לגשת לתיקיות ולמשימה לא מספרים.
באופן אחר, וכן. לקוחות סנכרון מתנתקים, מגיעים למכסה ומשהים את עצמם, והתג שהיה אומר לכם הוא אייקון קטן בשורת תפריטים שאתם לא מסתכלים עליה. גם הקבצים נשארים בדיוק במקומם, אז שום דבר לא נראה לא בסדר.
ברובו, כן. שני יעדים שנכשלים מסיבות שונות, ונבדקים בנפרד, שווים יותר מכל כמות של ניטור על אחד. ניטור אומר לכם שהעותק נעלם; העותק השני אומר שזה לא משנה. ראו את כלל 3-2-1.
קשור: בדיקה שגיבוי באמת קריא, וכלל 3-2-1.