Skip to content
palmoni5 edited this page Jul 17, 2026 · 1 revision

גיבוי ושחזור

lib/settings/services/backup_service.dart + ‏services/backup/ — גיבוי מלא של הנתונים האישיים.

מה מגובה

פורמט v2.0‏ (JSON) עם includes לכל סעיף:

  • הגדרות — רשימת מפתחות מפורשת.
  • סימניות והיסטוריה — מ־Hive.
  • הערות אישיות — מ־SQLite.
  • שולחנות עבודה.
  • שמור וזכור — מפתחות sz: מ־Hive.
  • תוספים — התקנה + הרשאות + ‏KV + נתונים מפורסמים + קבצים.

גיבוי ידני מול אוטומטי

  • ידני — קובץ עצמאי לחלוטין (קבצי תוספים מוטמעים base64); לעולם לא נמחק ברוטציה.
  • אוטומטי — מפנה ל־blobs במחסן (ראו למטה), כפוף לרוטציה. תדירות: יומי/שבועי/חודשי/כבוי. אחרי הצלחה רצה תחזוקה.
  • analyzeBackupStatus — המלצה על גיבוי חדש לפי היקף שינויים (הגדרות, הערות חדשות, שינוי 50%+ בשמור וזכור וכו').

המחסן — BackupStore

מחסן content-addressable: כל blob נשמר לפי sha256 תחת store/objects/<xx>/<hash>, דחוס gzip, פעם אחת בלבד (dedup). ‏GC בשיטת Mark & Sweep עם grace של 30 יום.

רוטציה — BackupRotation (GFS)

מדיניות Grandfather-Father-Son עם שלושה פרופילים:

פרופיל ימים שבועות חודשים
‏economy 3 חודש 3 חודשים
‏balanced (ברירת מחדל) 7 60 יום שנה
‏keepAll הכל

מיזוג לארכיון — BackupMerge + ‏BackupMaintenance

גיבויים שפג תוקפם לא נזרקים — הם ממוזגים לארכיון מתגלגל (otzaria_archive.json):

  • איחוד לפי זהות פריט: החדש מנצח; פריט שקיים רק בישן נשמר עם lastSeenAt; גיזום אחרי 3 שנים.
  • מפתחות זהות ייעודיים פר־סוג (סימניות, היסטוריה, הערות לפי id+updatedAt, שמור וזכור פר־ספר).
  • כתיבה אטומית מאומתת עם .bak; המקור נמחק רק אחרי שהארכיון נכתב ואומת.
  • מחזור התחזוקה: רוטציה ← מיזוג ← ‏GC של blobs יתומים. כולל מיגרציה עצלה של פורמט v1.

שחזור

תואם v1 ו־v2; מדלג על מפתחות ספציפיים לפלטפורמה אחרת (כמו keyDbEffectivePath מחוץ ל־Android); מטפל בגיבוי חלקי; מאמת נתיבי תוספים מפני path traversal.

דפים קשורים

Clone this wiki locally