לדלג לתוכן

תכונות

BombVault פשוטה כברירת מחדל ועמוקה כשאתה זקוק לכך. הממשק מציג רק את הדברים החיוניים עד שתהפוך את מתג פשוט / מתקדם. עמוד זה מקבץ את מכלול התכונות המלא.

היקף הגיבוי

מה מה נשמר
Docker containers תיקיית appdata בתוספת הגדרת ה-container (image, משתני env, פורטים, תוויות, volumes).
KVM / libvirt VMs קבצי דיסק ה-VM, הגדרת ה-XML ו-UEFI NVRAM (כיבוי מסודר או תמונת מצב חיה, דרך SSH). תמונות מצב חיות נסוגות אוטומטית לגיבוי מסודר אם לא ניתן ליצור את תמונת המצב, כך שגיבוי VM לעולם אינו פשוט נכשל בשגיאה.
Unraid flash כל כונן ה-USB flash (/boot): מערכת ההפעלה, הרישיון, תצורת המערך, השיתופים, הרשת ותצורת התוספים. השחזור הוא הורדת .zip בלחיצה אחת ולעולם אינו דורס את ה-flash הפעיל.
הגדרות האפליקציה ה-/config של BombVault עצמה (מסד נתוני ההגדרות, פרטי ההתחברות מחוץ לאתר, זוג מפתחות ה-SSH של libvirt), מצולם עם VACUUM INTO של SQLite כך שמסד נתונים במצב WAL לעולם אינו נלכד באמצע כתיבה. משוחזר דרך הפעלה-עצמית מחדש, כך שמסד הנתונים הפעיל לעולם אינו נדרס תחת handle פתוח.
קבצים ותיקיות קבוצות קבצים בעלות שם: כל תיקייה בשרת (שיתוף, המסמכים שלך, ספריית תמונות), כל אחת עם דפוסי החרגה אופציונליים לכל קבוצה. שקילות מלאה עם שאר הדומיינים (לוחות זמנים, שמירה, עותק מחוץ לאתר, בדיקות שלמות ותרגולי שחזור).

שחזור

  • שחזור מלא בלחיצה אחת. בחר תמונת מצב, לחץ שחזר. סיימת.
  • שחזור מקומי או מחוץ לאתר. בכל דפדפן גיבויים יש מתג מקומי / מחוץ לאתר, כך שאם מאגר מקומי אבד או פגום אתה יכול לרשום ולשחזר ישירות מהרפליקה מחוץ לאתר. המחיקה היא לכל מקור: הסרת גיבוי משפיעה רק על העותק שאתה צופה בו.
  • Containers מותקנים מחדש אוטומטית. הגדרת ה-container משוחזרת מול ה-Docker API, כך שה-container מופיע מחדש בלשונית Docker של Unraid בדיוק כפי שהיה.
  • מכונות וירטואליות נוצרות מחדש אוטומטית. ה-XML מיובא מחדש דרך SSH כך שה-VM מופיעה מחדש ב-VM Manager עם הדיסק ו-UEFI NVRAM שלה מחוברים מחדש, גם לאחר שה-VM נמחקה. גלה גיבויים בונה מחדש רשומה שנעלמה כליל (למשל לאחר התקנה טרייה).
  • שחזור בודד. שחזר container אחד, VM אחת או קבוצת קבצים אחת מבלי לגעת באחרות.
  • שחזור flash הוא הורדת .zip. הוא זורם לדפדפן שלך כ-flash-<id>.zip, מוכן להישמט אל יוצר ה-USB של Unraid. ה-/boot הפעיל לעולם אינו נוגע.
  • ייצוא zip של flash מתוזמן. לאחר כל גיבוי flash, כתוב אופציונלית את תמונת המצב כ-.zip פשוט לתיקייה שאתה בוחר (קובץ flash-latest.zip יחיד נדרס או היסטוריה מתגלגלת). הפנה אותו לתיקיית Syncthing או rclone כך שגיבוי ה-USB הניתן לאתחול שלך יוצא מהשרת אוטומטית.
  • בדיקת התנגשות טרם-טיסה. לפני שמשהו נעצר או מוסר, השחזור מוודא שכתובת ה-IP הסטטית של ה-container ופורטי המארח המפורסמים פנויים, ומבטל עם הודעה ברורה במקום להשאיר שחזור חצי-גמור.
  • שחזור ברמת הקובץ. הרחב את קבצים של תמונת מצב של container, סנן, סמן כל מספר של קבצים ותיקיות, ואז שחזר את הבחירה במקום או לתיקייה שאתה בוחר.
  • שחזור קבוצת קבצים. שחזר תמונת מצב של קבוצת קבצים במקום (לאחר אישור מפורש) או לתיקייה שאתה בוחר, לעולם לא בשקט. שחזור סלקטיבי עובד גם כאן.
  • השחזור שומר על מצב-ההרצה. container או VM שהיו פועלים בזמן הגיבוי חוזרים פועלים; אחד שהיה עצור נשאר עצור. סמן השאר עצור לאחר שחזור כדי ליצור מחדש בלי להפעיל.
  • שחזור מחסנית שלמה. Containers מאותו פרויקט Docker Compose מקובצים לפאנל Stacks. שחזר מחסנית בונה מחדש כל חבר מהגיבוי האחרון שלו כשהוא עצור, ואז אופציונלית מפעיל אותם בסדר depends_on.
  • התקדמות חיה, ביטול ומשוב עומס. שחזור ארוך מציג פס אחוזים חי וניתן לביטול עם אישור מודע-סוג. שחזור מבוטל נרשם כבוטל, לא כנכשל.
  • התאוששות מודרכת. לשונית התאוששות ייעודית מוליכה התקנה טרייה דרך מקרה האסון. ראה מחוץ לאתר והתאוששות.
  • שחזור ממאגר BombVault אחר. session חד-פעמי לקריאה בלבד פותח את המאגר של מופע BombVault אחר עם ה-APP_KEY של אותו מופע, כך שאתה יכול למשוך container משרת A לשרת B מבלי לגעת בהגדרות שלך. ראה מחוץ לאתר והתאוששות.

אחסון ותזמון

  • גיבויים אינקרמנטליים ובדדופליקציה דרך restic, כך שאפילו דיסקי VM גדולים אינם מנפחים את המאגר.
  • יעדים: נתיב מקומי, או מחוץ לאתר. SMB/CIFS ו-NFS (עגן את השיתוף ב-Unraid והפנה אליו נתיב גיבוי), backends מקוריים של restic ללא rclone (s3:..., rest:http://host:8000/repo, b2:..., sftp:user@host:/repo), או כל remote של rclone דרך rclone:<remote>:<bucket>/path. כל פרטי ההתחברות נשמרים מוצפנים.
  • יעדי SSH אינם דורשים דבר מותקן בצד השני. sftp: דורש רק שרת SSH, כך ש-Raspberry Pi חשוף (ללא Docker, ללא restic) עובד כיעד מחוץ לאתר. מפתחות מארח מוצמדים אוטומטית במגע הראשון.
  • עותק מחוץ לאתר (מקומי + מרוחק). שמור על הגיבוי המקומי המהיר והוסף רפליקה אחת או יותר מחוץ לאתר, משוכפלות עם restic copy על בסיס מאמץ-מיטבי (תקלה מחוץ לאתר לעולם אינה מכשילה את הגיבוי המקומי). לכל דומיין יש לוח זמנים משלו מחוץ לאתר, בתוספת כפתור שכפל עכשיו.
  • מספר יעדים מחוץ לאתר לכל דומיין. כל דומיין (containers, VMs, flash, config וקבוצות קבצים) יכול לשכפל למספר יעדים מחוץ לאתר בבת אחת, לא רק לאחד. הוסף יעדים נוספים בלשונית מחוץ לאתר, כל אחד עם מאגר משלו, מחלקת אחסון S3, דגל append-only, שמירה ותקציב גדילה. העותק הקיים שלך מחוץ לאתר מועבר כיעד הראשון, כך ששום דבר לא משתנה עד שתוסיף יעד שני, וכל יעד של דומיין משוכפל בלוח הזמנים מחוץ לאתר של אותו דומיין.
  • סדר גיבוי ידני. קבע את הסדר המדויק שבו ה-containers שלך מגובים מפאנל סדר-הגיבוי בעמוד Containers. הרצות מתוזמנות ורב-בחירה עוקבות אחריו; כל container שתשאיר לא מסודר שומר על התנהגות הכי-באיחור-קודם הקודמת, וגיבוי container בודד אינו משתנה.
  • שמירה ניתנת להגדרה: keep-last / daily / weekly / monthly, נגזמת אוטומטית לאחר כל גיבוי, מוגדרת לכל מקור (מקומי ליד נתיבי הגיבוי, מחוץ לאתר בלשונית מחוץ לאתר כך שתוכל לשמור עותקים מחוץ לאתר לזמן ארוך יותר כארכיון).
  • תזמון לכל דומיין (daily / weekly כולל קבוצות רב-יומיות / every-N-days / cron גולמי), הכל נערך במקום אחד בהגדרות, לוחות זמנים.
  • מגבלות רוחב פס מחוץ לאתר. הגבל את קצב ההעלאה/הורדה של restic כך שהשכפול לא ירווה את ה-WAN שלך.
  • מחלקת אחסון קרה וארכיונית (S3). למאגר S3 מקורי מחוץ לאתר אתה יכול לבחור את מחלקת האחסון, מוגבל לשכבות שקריאות-לשחזור (Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval) כך שתמחור ארכיוני לעולם אינו שובר בשקט שחזור. שכבות הארכיון העמוק הדורשות תחילה הפשרה אסינכרונית (Glacier Flexible, Deep Archive) הושמטו בכוונה. backends מקוריים של S3 בלבד; remotes של rclone קובעים את המחלקה שלהם בתצורת ה-rclone.
  • תיקיות גיבוי נשארות ניתנות להעתקה מחוץ לתיבה. לאחר כל גיבוי BombVault מרפה את עץ המאגר המקומי לתיקיות 0755 / קבצים 0644 (מאגרים מוצפנים, כך ששום דבר אינו חשוף) כך שמשתמש סנכרון שאינו root מעל SMB אינו ננעל בחוץ. הגדרות השחזור חיות בתוך כל מאגר, כך שתיקיית מאגר מועתקת עצמאית לחלוטין.

תובנה, אימות וניטור

  • מצב הגנה (RPO). לוח הבקרה מציג מחוון ירוק / כתום / אדום לכל דומיין, המשווה את הגיבוי המוצלח האחרון מול לוח הזמנים שלו, כך שגיבוי באיחור הופך לאדום במקום להסתתר ביומן.
  • מפת חום של בריאות הגיבוי. לוח שנה בסגנון תרומות-GitHub של תוצאות גיבוי יומיות לכל דומיין, עם מתג Containers / VMs / Flash / Config / Files.
  • תזמון הרצות בכל מקום. כל רשומה בהיסטוריית ההרצות קוראת start, end (duration), וכל container ו-VM נושאים רשימת הרצות אחרונות משלהם בעמוד שלהם.
  • לוח בקרה שאתה יכול לסדר מחדש. הפעל מצב התאמה אישית כדי לגרור כרטיסים לסדר שלך ולהסתיר את אלה שאינך צריך. הפריסה נשמרת לכל דפדפן.
  • גודל מאגר ומגמת דדופליקציה. גודל המאגר הנוכחי, יחס הדדופליקציה ומספר תמונות המצב לכל דומיין, עם sparkline של גדילת האחסון.
  • תרגולי אימות-שחזור. BombVault מוכיחה מעת לעת שהגיבויים שלך ניתנים לשחזור (restic check --read-data-subset, מוגבל) ומציגה תג אומת לאחרונה כניתן לשחזור לכל דומיין.
  • פעולות מרפאות-עצמן. נעילת restic יתומה בהוכחה (שהושארה מהפעלה מחדש באמצע פעולה) מנוקה בכוח ומנוסה שוב פעם אחת, אוטומטית. השמירה יציבת-זהות (נגזמת לכל פריט, חסינה לשינויי נתיב או מארח) וכישלון שמירה שולח התראה.
  • ערכת שחזור מפתח ההצפנה. הורדה בלחיצה אחת של המפתח הראשי, סיסמת ה-restic הנגזרת ומיקומי המאגר והפקודות המדויקים, כך שתוכל לשחזר ללא BombVault פועלת. ראה מחוץ לאתר והתאוששות.
  • ייצוא וייבוא ההגדרות שלך. כרטיס ייצוא וייבוא הגדרות בעמוד ההגדרות כותב את כל התצורה שלך (הגדרות דומיין, יעדים מחוץ לאתר, לוחות זמנים, שמירה, התראות) לקובץ JSON נייד, כך שמעבר לתיבה חדשה או שכפול התקנה אינו אומר להזין הכול מחדש ביד. אתה בוחר האם לכלול את פרטי ההתחברות מחוץ לאתר וההתראות; איתם הקובץ רגיש כמו ערכת השחזור שלך. הייבוא מציג תצוגה מקדימה ומבקש אישור, והוא לעולם אינו נוגע בנתוני הגיבוי או ההיסטוריה שלך.
  • התראות. Webhook (Discord / Slack / Gotify / ntfy), Matrix, Healthchecks.io, אימייל (SMTP), שרת Apprise API מתארח-עצמית, ומערכת ההתראות הילידית של Unraid. מדיניות לכל גיבוי: אף פעם / בכישלון / תמיד. הרצה מתוזמנת של פריטים רבים יכולה לשלוח סיכום N מתוך M הצליחו יחיד. Healthchecks מקבל את מחזור החיים המלא (/start, ואז הצלחה או /fail) בכל פעם שמוגדרת כתובת URL.
  • Prometheus /metrics. הצטרפות מרצון (כבוי כברירת מחדל, bearer token אופציונלי) עבור Grafana או Uptime Kuma. חושף מצב גיבוי, גדלים וחותמות זמן, ללא סודות או נתיבים בתוויות.

הגנה מפני כופרה

  • מחוץ לאתר בלתי-ניתן-לשינוי (append-only). סמן מאגר מחוץ לאתר כ-append-only כך שכופרה או מארח שנפרץ אינם יכולים למחוק או לשכתב את הגיבויים שלך. הצד הרחוק (restic/rest-server במצב --append-only) אוכף זאת; BombVault רק מאמתת זאת ולעולם אינה מציגה ירוק על טענת תצורה בלבד.
  • בדיקת חבלה. BombVault מוכיחה מעת לעת את ערבות ה-append-only על ידי ניסיון מחיקה בפועל מול המאגר מחוץ לאתר (המכוון לאובייקט לא-קיים): סירוב פירושו מוגן, קבלה פירושה לא מוגן. תוצאה בלתי-חד-משמעית לעולם אינה הופכת את הפסק המאוחסן.
  • הגדרת מחוץ לאתר מודרכת. אשף מוליך אותך מבחירת backend דרך קטע פריסה מוכן-להדבקה של rest-server, בדיקת חיבור, מתג הבלתי-ניתן-לשינוי ואסטרטגיית שמירה.
  • תרגולי DR (מחוץ לאתר). שחזר יעד אמיתי מהמאגר מחוץ לאתר לתוך ארגז חול חד-פעמי, אמת אותו קובץ-אחר-קובץ ובית-אחר-בית, ואז נקה. ראה מחוץ לאתר והתאוששות.
  • כרטיס-ניקוד להגנה מפני כופרה. כרטיס בלוח הבקרה עם עמדה ירוקה / כתומה / אדומה לכל דומיין ורשימת בדיקה עם חותמת גיל; כל שורה אדומה מקשרת עמוק לתיקון. הוא הופך לירוק רק על עובדות מאומתות.
  • התראת תקציב-גדילה. למחוץ לאתר בלתי-ניתן-לשינוי (שבו תמונות מצב ישנות בכוונה לעולם אינן נגזמות), קבע תקציב גודל וקבל התראה לפני שהוא בורח.
  • לוח בקרה של מקבל (הצד המקבל). בתיבה שמקבלת עותקים בלתי-ניתנים-לשינוי מחוץ לאתר מ-BombVault אחר, הפעל את מתג מקבל (הגדרות) כדי לחשוף לשונית מקבל. רשום מאגר שהתקבל לקריאה בלבד (נפתח עם המפתח של המופע השולח) כדי לראות את מלאי תמונות המצב שלו מקובץ לפי מקור, מתי כל מקור הגיע לאחרונה, והרץ restic check עצמאי על חומרת הקבלה. הוא מתריע לך כאשר מקור מפסיק לשלוח בתוך חלון שאתה קובע (מפסק מת) או כאשר בדיקת שלמות נכשלת. לקריאה בלבד באופן מחמיר, כך שהוא לעולם אינו כותב למאגר שהתקבל, וכבוי כברירת מחדל. ראה מחוץ לאתר והתאוששות.

ייצוא רגיל

  • ייצוא רגיל של container. כפתור ייצוא לכל container כותב עותק ניתן-לעיון וללא-כלים ליד המאגר: <name>.tar.gz של תיקיות הגיבוי בתוספת תבנית ה-<name>.xml של Unraid. restic נשאר המנוע; זהו עותק נוחות נוסף.
  • ייצוא רגיל של VM. למכונות וירטואליות יש אותו ייצוא (tar רגיל): <name>.tar.gz של קבצי הדיסק בתוספת <name>.xml, ניתן לשחזור עם virsh define בתוספת הדיסק, ללא צורך ב-BombVault או restic.
  • הצפן את הייצוא הרגיל (age). הייצוא יושב מחוץ ל-restic, כך שהוא בטקסט גלוי כברירת מחדל. הפעל הצפנת age תחת הגדרות והוסף נמען אחד או יותר (מפתח ציבורי age או מפתח ציבורי SSH). כל ייצוא (.tar.gz של container ו-VM, קובצי ה-.xml הנלווים שלהם, וה-ZIP של flash) נאטם אז עבור אותם נמענים, ואתה מפענח אותו מאוחר יותר מחוץ לתיבה עם המפתח הפרטי התואם. ככלל בטיחות, כשההצפנה מופעלת ואין נמען תקף מוגדר, ייצוא נכשל עם שגיאה ברורה במקום אי-פעם לכתוב טקסט גלוי.

אחר

  • גבה רבים בבת אחת. בחר containers בבחירה-מרובה ולחץ גבה נבחרים. האצווה רצה בצד השרת, כך שהיא ממשיכה גם אם תסגור את הלשונית או תאבד את החיבור. BombVault לעולם אינה מגבה (ולכן לעולם אינה עוצרת) את ה-container של עצמה.
  • דפדפן תמונות מצב עם רשימת נקודות שחזור, מחיקה לכל תמונת מצב, ועץ תיקיות מתקפל לשחזור ברמת הקובץ.
  • תחזוקת מאגר לכל דומיין: אמת (restic check), בטל נעילה (נקה נעילה תקועה), וגזום (מיישם את מדיניות השמירה לפי דרישה כשמוגדרת אחת, אחרת שחרור-מקום פשוט).
  • Hooks לפני/אחרי גיבוי לכל container. פקודות shell רצות בתוך ה-container (למשל mysqldump אל appdata לפני הגיבוי); pre-hook כושל מבטל את הגיבוי.
  • עצור containers אחרים במהלך הגיבוי, עם הפעלה מחדש מבוקרת-בריאות. נקוב בשם containers תלויים (למשל מסד נתונים) לעצירה בזמן שזה מגובה. לאחר מכן BombVault מחזירה אותם בסדר ה-depends_on של Compose, וכברירת מחדל ממתינה שכל אחד ידווח על מצב תקין (או פועל, אם אין לו healthcheck) לפני הפעלת ה-containers התלויים בו, כך שתלות כמו Pi-hole, מסד נתונים או שער VPN באמת עולה לפני השירותים הזקוקים לה, במקום שאלה יחזרו לconnection refused. ההמתנה מוגבלת על ידי timeout לכל container (120 שניות כברירת מחדל) כך ש-container איטי או שלעולם אינו תקין לעולם אינו יכול לתלות את ההרצה; גם ההמתנה וגם ה-timeout חיים ב-הגדרות, לוחות זמנים (כבה את ההמתנה עבור ההפעלה-מחדש הקודמת של הכול-בבת-אחת). אותה הפעלה מחדש מסודרת ומבוקרת-בריאות עוטפת גם את עדכון ה-image שלאחר הגיבוי, כך שביום שבו נוחת עדכון התלויים מוחזקים למטה במהלך היצירה מחדש ומוחזרים רק, מבוקרי-בריאות, לאחר שהוא נגמר.
  • דפוסי החרגה לכל container. רשום תת-תיקיות לדילוג בתוך volume מגובה, אחת לשורה. הקלד את הנתיבים כפי שאתה רואה אותם בתוך ה-container; תצוגה מקדימה חיה מראה למה כל שורה מתורגמת ומזהירה כשלשורה לא תחריג דבר.
  • עדכן לאחר גיבוי מוצלח (מתקדם, כבוי כברירת מחדל). הפעל זאת על container ו-BombVault מושכת את ה-image החדש ביותר ויוצרת אותו מחדש, אך רק כשקיים באמת image חדש יותר, כך שנקודת שחזור טרייה תמיד קיימת קודם. תוספות אופציונליות: התראה לכל container מעודכן וניקוי image (image בסיס שמשותף על ידי containers אחרים לעולם אינו נמחק). לאחר העדכון BombVault גם מבקשת מ-Unraid לבדוק מחדש את מצב העדכון של אותו container, כך שבאנר הupdate available התקוע של לשונית Docker מנקה את עצמו במקום להישאר (עדכוני Unraid עוברים ישירות דרך ה-Docker API, כך שהמצב המטמון שלו, ובגרסאות מסוימות digest מטמון, אחרת ימשיכו להציג את הבאנר). זה מאמץ-מיטבי, לעולם אינו משפיע על הגיבוי, מופעל כברירת מחדל ויש לו מתג בהגדרות.
  • שחזר לתיקייה חלופית לשכפול או בדיקה.
  • הבדל תמונות מצב ותגיות. השווה שתי תמונות מצב כדי לראות מה השתנה, ותייג תמונות מצב כדי לסנן אותן.
  • מה חדש לאחר עדכון. הערות שחרור צצות פעם אחת לכל גרסה חדשה, מוגשות מהערות המוטמעות ב-binary, כך שהדיאלוג עובד גם לא מקוון.
  • HTTPS מהקופסה (בחתימה עצמית, או הבא אישור משלך מאחורי reverse proxy).
  • Docker healthcheck. ה-container מדווח על מצב תקין/לא תקין מה-/api/health שלו עצמו, כך שכלי auto-heal יכול להפעיל אותו מחדש אם המנוע אי-פעם נתקע.
  • ממשק כהה/בהיר ב-26 שפות עם בורר דגלים.