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

המכולות, לכל אחת מתג תזמון משלה, סדר גיבוי והיסטוריה משלה.
| מה | מה נשמר |
|---|---|
| Docker containers | תיקיית appdata בתוספת הגדרת ה-container (image, משתני env, פורטים, תוויות, volumes). כברירת מחדל כל תיקיית ה-appdata; בחירת תיקיות ב-container מסמנת בדיוק אילו תיקיות הגיבוי כולל, עם ספירה חיה של הנתיבים, רשימה של מה שהשארת בחוץ ומתג דלג על תיקיות מטמון לכל שורש (CACHEDIR.TAG). |
| KVM / libvirt VMs | קבצי דיסק ה-VM, הגדרת ה-XML ו-UEFI NVRAM (כיבוי מסודר או תמונת מצב חיה, דרך SSH). תמונות מצב חיות נסוגות אוטומטית לגיבוי מסודר אם לא ניתן ליצור את תמונת המצב, כך שגיבוי VM לעולם אינו פשוט נכשל בשגיאה. כאשר רק בלוקים שהשתנו מופעל, מכונה פועלת עם דיסקים מסוג qcow2 נקראת דרך נקודות הביקורת של libvirt, כך שגיבוי קורא רק את הבלוקים שנכתבו מאז הקודם, וכל תמונת מצב עדיין משחזרת לבדה את הדיסק כולו. דיסקים על zvols של ZFS מוזרמים עם zfs send על אותו חיבור SSH, כך ש-VM שהדיסקים שלה הם zvols מגובה כ-VM אחת. המצב של vTPM במעבר ישיר (passthrough) נשמר ליד ה-NVRAM כשה-XML של המכונה מציין את הנתיב שלו. vTPM מדומה, ש-TrueNAS מגדיר לאורחי Windows 11, אינו מפרסם את הנתיב הזה, ולכן שמור את מפתח השחזור של אורח כזה בהישג יד. ראה את מדריך גיבוי ה-VM. |
| Unraid flash | כל כונן ה-USB flash (/boot): מערכת ההפעלה, הרישיון, תצורת המערך, השיתופים, הרשת ותצורת התוספים. השחזור הוא הורדת .zip בלחיצה אחת ולעולם אינו דורס את ה-flash הפעיל. |
| הגדרות האפליקציה | ה-/config של BombVault עצמה (מסד נתוני ההגדרות, פרטי ההתחברות מחוץ לאתר, זוג מפתחות ה-SSH של libvirt), מצולם עם VACUUM INTO של SQLite כך שמסד נתונים במצב WAL לעולם אינו נלכד באמצע כתיבה. משוחזר דרך הפעלה-עצמית מחדש, כך שמסד הנתונים הפעיל לעולם אינו נדרס תחת handle פתוח. |
| קבצים ותיקיות | קבוצות קבצים בעלות שם: כל תיקייה בשרת (שיתוף, המסמכים שלך, ספריית תמונות), כל אחת עם דפוסי החרגה אופציונליים לכל קבוצה. שקילות מלאה עם שאר הדומיינים (לוחות זמנים, שמירה, עותק מחוץ לאתר, בדיקות שלמות ותרגולי שחזור). |
| מערכי נתונים של ZFS | מערך נתונים יחד עם כל מערכי הנתונים שמתחתיו, נקרא מתצלום ZFS אחד כך שכולם מאותו רגע, ונשמר עם restic כמו תיקייה: עם הסרת כפילויות, אפשר לעיין בו ולשחזר קבצים בודדים. מערכי משנה חדשים מצטרפים מעצמם, אפשר להשאיר בחוץ מערך בודד, ומערך שאי אפשר לקרוא מדולג ומצוין בשמו. לפי הצורך, קונטיינרים נעצרים או פקודה רצה רק לרגע התצלום. אמצעי אחסון (volumes) אינם כלולים: ה-volume של VM מגובה יחד עם ה-VM שלו, ו-volume בלי VM עדיין לא מגובה. ראה מערכי נתונים של ZFS. |
שחזור¶

השחזור המודרך מעביר התקנה טרייה דרך מקרה האסון, במקום אחד.
- שחזור מלא בלחיצה אחת. בחר תמונת מצב, לחץ שחזר. סיימת.
- ציר זמן אחד לכל פריט. Containers, VMs, קבוצות קבצים, ה-flash והגדרות האפליקציה מפרטים את הגיבויים שלהם כציר זמן אחד על פני כל מקום שבו הם שוכנים, המאגר שאליו הם נכתבים וכל יעד מחוץ לאתר. גיבוי שהועתק מחוץ לאתר מופיע פעם אחת, מסומן בכל מקום. מקומות מחוץ לאתר נקראים כשאתה פותח אותם, ומחיקה במקום אחד אומרת אם זה היה העותק האחרון.
- Containers מותקנים מחדש אוטומטית. הגדרת ה-container משוחזרת מול ה-Docker API, כך שה-container מופיע מחדש בלשונית Docker של Unraid בדיוק כפי שהיה.
- ה-GPU, המגבלות והקישורים חוזרים. container משוחזר מקבל בחזרה את מגבלות המשאבים, מנהל הלוגים, הגדרות ה-DNS, הקישורים הישנים ואת ה-GPU או סביבת הריצה שלו (
--gpus,--runtime=nvidia). במארח בלי מנהל ה-GPU או סביבת הריצה האלה, השחזור אומר זאת ומציע שחזור בלי GPU וסביבת ריצה, גם אחרי שחזור של כמה containers או stack. קישור ל-container שחסר, או שעצור כשה-container המשוחזר מופעל, מושמט, והיסטוריית ההרצות מציינת זאת. - מכונות וירטואליות נוצרות מחדש אוטומטית. ה-XML מיובא מחדש דרך SSH כך שה-VM מופיעה מחדש ב-VM Manager עם הדיסק ו-UEFI NVRAM שלה מחוברים מחדש, גם לאחר שה-VM נמחקה. גלה גיבויים בונה מחדש רשומה שנעלמה כליל (למשל לאחר התקנה טרייה).
- שחזור בודד. שחזר container אחד, VM אחת או קבוצת קבצים אחת מבלי לגעת באחרות.
- שחזור flash הוא הורדת
.zip. הוא זורם לדפדפן שלך כ-flash-<id>.zip, מוכן להישמט אל יוצר ה-USB של Unraid. ה-/bootהפעיל לעולם אינו נוגע. - תוסף אחד בכל פעם. דף Flash מציג את התוספים בכל גיבוי של כונן הפלאש עם הגרסה והגודל, ומחזיר תוסף יחיד לכונן הפלאש הפעיל: קובץ ה-
.plgשלו, התיקייה שלו תחתconfig/pluginsוקובצי החבילות שהגיבוי מכיל. שום דבר אחר בכונן לא משתנה. Unraid מתקין את התוסף באתחול הבא, או מיד דרך Plugins, Install Plugin. - ייצוא zip של flash מתוזמן. לאחר כל גיבוי flash, כתוב אופציונלית את תמונת המצב כ-
.zipפשוט לתיקייה שאתה בוחר (קובץflash-latest.zipיחיד נדרס או היסטוריה מתגלגלת). הפנה אותו לתיקיית Syncthing או rclone כך שגיבוי ה-USB הניתן לאתחול שלך יוצא מהשרת אוטומטית. - בדיקת התנגשות טרם-טיסה. לפני שמשהו נעצר או מוסר, השחזור מוודא שכתובת ה-IP הסטטית של ה-container ופורטי המארח המפורסמים פנויים, ומבטל עם הודעה ברורה במקום להשאיר שחזור חצי-גמור.
- בדיקות לפני השחזור. כל חלון שחזור בודק קודם שהמאגר עונה, שהמפתח השמור פותח אותו, שנקודת השחזור קיימת ושיש ביעד מקום למה שהשחזור כותב. כפתור ההתחלה נשאר נעול כל עוד בדיקה נכשלת, וה-(i) שבכפתור אומר איזו.
- תוכנית השחזור. לפני האישור, החלון מראה מה השחזור עושה לעומת המצב הנוכחי: קבצים חדשים, מוחלפים וללא שינוי, עם הרשימה לפי בקשה, והקבצים שביעד שאינם בגיבוי ונשארים במקומם. בקונטיינרים ובמכונות וירטואליות הוא משווה גם את ההגדרות שהשחזור יוצר מחדש לאלו שרצות: אימג' ותג, פורטים, שמות משתנים ואמצעי אחסון, או זיכרון, vCPU, דיסקים ורשת. restic מחשב זאת בהרצת ניסיון לפי גודל וזמן שינוי, בלי לקרוא את הקבצים; עץ גדול מאוד נעצר אחרי 30 שניות ואומר זאת. שחזור של stack בודק ומתכנן כל חבר ומציין את החבר שחוסם אותו.
- תיקיות משותפות. שחזור במקום מציין כל קונטיינר אחר, רץ או לא, שהחיבור שלו מגיע לתיקייה שהשחזור כותב אליה, למשל „גם nextcloud-db משתמש בנתיב הזה”. זו אזהרה והיא לא חוסמת.
- שחזור ברמת הקובץ. הרחב את קבצים של תמונת מצב של container, סנן, סמן כל מספר של קבצים ותיקיות, ואז שחזר את הבחירה במקום או לתיקייה שאתה בוחר.
- שחזור קבוצת קבצים. שחזר תמונת מצב של קבוצת קבצים במקום (לאחר אישור מפורש) או לתיקייה שאתה בוחר, לעולם לא בשקט. שחזור סלקטיבי עובד גם כאן.
- שחזור מערך נתונים של ZFS. שחזר מערך נתונים אחד של פריט למקומו (אחרי תצלום בטיחות של ZFS שנשאר עד שתמחק אותו), לתיקייה, או רק את הקבצים שבחרת, או את כל מערכי הנתונים של גיבוי לתיקייה. מערך נתונים אף פעם לא מוחזר לאחור ולא מוחלף.
- השחזור שומר על מצב-ההרצה. container או VM שהיו פועלים בזמן הגיבוי חוזרים פועלים; אחד שהיה עצור נשאר עצור. סמן השאר עצור לאחר שחזור כדי ליצור מחדש בלי להפעיל.
- שחזור מחסנית שלמה. Containers מאותו פרויקט Docker Compose מקובצים לפאנל Stacks. שחזור stack… בונה מחדש כל חבר מהגיבוי האחרון שלו כשהוא עצור, ואז אופציונלית מפעיל אותם בסדר
depends_on. - התקדמות חיה, ביטול ומשוב עומס. שחזור ארוך מציג פס אחוזים חי וניתן לביטול עם אישור מודע-סוג. שחזור מבוטל נרשם כבוטל, לא כנכשל.
- התאוששות מודרכת. לשונית התאוששות ייעודית מוליכה התקנה טרייה דרך מקרה האסון. ראה מחוץ לאתר והתאוששות.
- שחזור ממאגר BombVault אחר. session חד-פעמי לקריאה בלבד פותח את המאגר של מופע BombVault אחר עם ה-
APP_KEYשל אותו מופע, כך שאתה יכול למשוך container משרת A לשרת B מבלי לגעת בהגדרות שלך. ראה מחוץ לאתר והתאוששות. - מאפייני ZFS חוזרים. כל גיבוי ZFS שומר את המאפיינים שהוגדרו מקומית בכל מערך נתונים, כמו דחיסה, גודל רשומה, מכסה ורגישות לאותיות רישיות. שחזור למערך נתונים חדש יוצר אותו איתם, ושחזור למערך קיים מציג אותם ומגדיר אותם רק אם תבקש. ראה מערכי נתונים של ZFS.
- ייבוא מהתוסף Appdata.Backup. בדף התאוששות, הפנה את BombVault לתיקיית הגיבויים של התוסף. כל ארכיון של קונטיינר הופך לנקודת שחזור של הקונטיינר שלו, עם התאריך שבו התוסף יצר אותו. ארכיונים שיובאו קודם מדולגים, והארכיונים עצמם רק נקראים. הקונטיינר צריך קודם גיבוי אחד ב-BombVault, כדי שלשחזור תהיה ההגדרה שלו. השמירה לא מוחקת נקודות שחזור מיובאות, לכן מחק בעצמך נקודה שאינך צריך עוד.
אחסון ותזמון¶
- גיבויים אינקרמנטליים ובדדופליקציה דרך restic, כך שאפילו דיסקי VM גדולים אינם מנפחים את המאגר.
- יעדים: נתיב מקומי, או מחוץ לאתר. שיתופי SMB ושרתי WebDAV (Nextcloud, ownCloud, SharePoint) ישירות מטופס תחת הגדרות, גישה לענן, rclone, ללא עיגון במארח; NFS (עגן את הייצוא ב-Unraid והפנה אליו נתיב גיבוי); backends מקוריים של restic ללא rclone (
s3:...,rest:http://host:8000/repo,sftp:user@host:/repo), או כל remote של rclone דרךrclone:<remote>:<bucket>/path. כל פרטי ההתחברות נשמרים מוצפנים. - יעדי SSH אינם דורשים דבר מותקן בצד השני.
sftp:דורש רק שרת SSH, כך ש-Raspberry Pi חשוף (ללא Docker, ללא restic) עובד כיעד מחוץ לאתר. מפתחות מארח מוצמדים אוטומטית במגע הראשון. - עותק מחוץ לאתר (מקומי + מרוחק). שמור על הגיבוי המקומי המהיר והוסף רפליקה אחת או יותר מחוץ לאתר, משוכפלות עם
restic copyעל בסיס מאמץ-מיטבי (תקלה מחוץ לאתר לעולם אינה מכשילה את הגיבוי המקומי). לכל דומיין יש לוח זמנים משלו מחוץ לאתר, בתוספת כפתור שכפל עכשיו. - מספר יעדים מחוץ לאתר לכל דומיין. כל דומיין (containers, VMs, flash, config, קבוצות קבצים ומערכי נתונים של ZFS) יכול לשכפל למספר יעדים מחוץ לאתר בבת אחת, לא רק לאחד. הוסף יעדים נוספים בעמוד מחוץ לאתר, כל אחד עם מאגר משלו, מחלקת אחסון S3, דגל append-only, שמירה ותקציב גדילה. העותק הקיים שלך מחוץ לאתר מועבר כיעד הראשון, כך ששום דבר לא משתנה עד שתוסיף יעד שני, וכל יעד של דומיין משוכפל בלוח הזמנים מחוץ לאתר של אותו דומיין.
- מאגרים בעלי שם. רשום את מיקומי הגיבוי שלך פעם אחת תחת הגדרות, אחסון, מאגרים, נתיב מקומי או כל remote של restic עם ערכת אישורים משלו, ואז בחר אחד מהם כמיקום של פריט בכרטיס שלו. כל שורה מציגה כמה פריטים מצביעים עליה, ומאגר שפריט או ברירת מחדל של מיקום משתמשים בו אי אפשר להעביר או למחוק, כי BombVault לעולם אינה מעבירה גיבוי שכבר נכתב.
- כמה ערכות של אישורי ענן. אישורי הענן המשותפים חלים בכל מקום כברירת מחדל, אבל כל יעד יכול לבחור במקומם ערכת אישורים בעלת שם (הגדרות, גישה לענן, ערכות אישורים נוספות), כך ש-bucket של Hetzner S3 ושרת Garage מקומי יכולים לפעול זה לצד זה, כל אחד עם המפתח שלו. זה כולל יעדים מחוץ לאתר ונתיב גיבוי שהוא עצמו מאגר מרוחק.
- יעדים. יעד מחוץ לאתר מוגדר פעם אחת, באמצעות אשף שמפרט שירותי אחסון S3, שרת S3 משלך, שרת ושיתופים משלך וכל אחסון ענן ש-rclone תומך בו, עם ההתחברות, בדיקת חיבור, בורר תיקיות ומילה כנה על ההגנה מפני מחיקה. אחר כך הוא מופיע ככפתור בכל דומיין וכל פריט. ראה יעדים.
- מיקום לכל פריט. לכל כרטיס container, VM וקבוצת קבצים יש שורת כפתורים, מקומי וכפתור אחד לכל יעד מחוץ לאתר, והדלוקים מקבלים את הגיבויים שלו. שיתוף שכבר יושב על NAS כבר לא צריך ללכת גם ל-B2. המיקום קבוע מהגיבוי הראשון ואילך, העותקים יכולים להשתנות בכל עת, והכרטיס אומר כמה אתרים מחזיקים את הפריט ואם 3-2-1 מתקיים. ראה מיקום לכל פריט.
- ברירות מחדל של מיקום. שורה אחת לכל דומיין קובעת לאן נכתבים פריטים חדשים ולאילו יעדים מועתקים פריטים בלי בחירה משלהם. שינויה לא מזיז אף גיבוי והיא אומרת מראש אילו יעדים מרוויחים או מפסידים פריטים.
- סדר גיבוי ידני. קבע את הסדר המדויק שבו ה-containers שלך מגובים מפאנל סדר-הגיבוי בעמוד Containers. הרצות מתוזמנות ורב-בחירה עוקבות אחריו; כל container שתשאיר לא מסודר שומר על התנהגות הכי-באיחור-קודם הקודמת, וגיבוי container בודד אינו משתנה.
- שמירה ניתנת להגדרה: keep-last / daily / weekly / monthly / yearly, נגזמת אוטומטית לאחר כל גיבוי, מוגדרת לכל מקור (גם מקומי וגם מחוץ לאתר ב-הגדרות, שמירה, כך שתוכל לשמור עותקים מחוץ לאתר לזמן ארוך יותר כארכיון). כל מקור יכול גם לפעול לפי כללים משלו, מקומית ומחוץ לאתר (כללי שמירה לפי מקור), למשל 7 גיבויים יומיים לקונטיינרים שמשתנים כל יום ופחות למכונות וירטואליות שמשתנות לעיתים רחוקות.
- דחיסה לכל מאגר: כבוי, אוטומטי (ברירת המחדל של restic) או מרבי, מוגדרת ב-הגדרות, אחסון לכל נתיב גיבוי ולכל מאגר בעל שם, וב-הגדרות, מחוץ לאתר לכל יעד מחוץ לאתר. גיבויים, העתקים מחוץ לאתר וגיזום כותבים איתה, וערכת השחזור מציינת אותה כדי ש-restic לבדו יוכל להמשיך לכתוב באותו אופן.
- תזמון לכל דומיין (daily / weekly כולל קבוצות רב-יומיות / every-N-days / cron גולמי), הכל נערך במקום אחד בהגדרות, תזמונים. container, VM, קבוצת קבצים או פריט ZFS בודדים יכולים לשאת קצב משלהם, ו-כל N ימים עובד גם עבור תרגול השחזור, בדיקת החבלה והתקציר השבועי.
- להמתין עד שהאפליקציה שקטה. קונטיינר יכול לגרום לגיבוי המתוזמן שלו להמתין כל עוד האפליקציה עסוקה, לכל היותר מספר השעות שתגדיר, ולהתחיל ברגע שהאפליקציה שקטה. שרת מדיה שקט כשהוא לא משדר, כל קונטיינר אחר כש-CPU והתעבורה שלו נשארים כמה דקות מתחת למגבלות בהגדרות, תזמונים (ברשת המארח רק ה-CPU נחשב). הגיבוי הממתין מופיע ביומן הפעילות ועל הקונטיינר עם הסיבה והמועד האחרון. הוא לא מחזיק נעילה, כך שהקונטיינרים האחרים ממשיכים. גיבויים ידניים אף פעם לא ממתינים. חברי stack של compose שתורם באותה הרצה ממתינים יחד, והמתנה נמשכת עם המועד האחרון שלה אחרי הפעלה מחדש. כיבוי הקונטיינרים מבטל כל גיבוי ממתין, וכיבוי התזמון שלהם מבטל את אלה שההרצות שלו עיכבו. הפחתת השעות מקצרת גם המתנה שכבר התחילה.
- מגבלות רוחב פס מחוץ לאתר. הגבל את קצב ההעלאה/הורדה של restic כך שהשכפול לא ירווה את ה-WAN שלך.
- סטרימינג קודם. בזמן ששרת מדיה כמו Plex, Jellyfin או Emby משדר, עותקים מחוץ לאתר מועלים במגבלה נמוכה יותר וחוזרים למגבלה הרגילה כמה דקות אחרי סוף השידור. BombVault קורא מ-Docker את התעבורה היוצאת של שרתי המדיה. REST, S3, B2, Azure, Google Cloud, Swift ו-rclone על HTTP מואטים באמצע ההעתקה; SFTP ותיקיות מקומיות או מעוגנות מקבלים את המגבלה הנמוכה בשלב ההעתקה הבא. אי אפשר למדוד שרת מדיה ברשת המארח. תחת הגדרות, מחוץ לאתר.
- מחלקת אחסון קרה וארכיונית (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 אינו ננעל בחוץ. הגדרות השחזור חיות בתוך כל מאגר, כך שתיקיית מאגר מועתקת עצמאית לחלוטין.
תובנה, אימות וניטור¶
- השהיה מהכרטיס. בכל כרטיס של container, VM וקבוצת תיקיות יש השהיית התזמון, שמוציא את הפריט מלוח הזמנים ומהגיבוי המלא, והמשך התזמון שמחזיר אותו. הכפתורים קובעים את אותו מתג כמו כלול בלוח הזמנים, ולכן השניים תמיד מסכימים. פריט מושהה נושא תג אפור התזמון מושהה, וגבה עכשיו ממשיך לעבוד.
- מצב הגנה (RPO). לוח הבקרה מציג מחוון ירוק / כתום / אדום לכל דומיין, המשווה את הגיבוי המוצלח האחרון מול לוח הזמנים שלו, כך שגיבוי באיחור הופך לאדום במקום להסתתר ביומן.
- מפת חום של בריאות הגיבוי. לוח שנה בסגנון תרומות-GitHub של תוצאות גיבוי יומיות לכל דומיין, עם מתג Containers / VMs / Flash / גיבוי עצמי / תיקיות.
- תזמון הרצות בכל מקום. כל רשומה בהיסטוריית ההרצות קוראת
start, end (duration), וכל container ו-VM נושאים רשימת הרצות אחרונות משלהם בעמוד שלהם. - לוח בקרה שאתה יכול לסדר מחדש. הפעל מצב התאמה אישית כדי לגרור כרטיסים לסדר שלך ולהסתיר את אלה שאינך צריך. הפריסה נשמרת לכל דפדפן.
- גודל מאגר ומגמת דדופליקציה. גודל המאגר הנוכחי, יחס הדדופליקציה ומספר תמונות המצב לכל דומיין, עם sparkline של גדילת האחסון.
- תרגולי אימות-שחזור. BombVault מוכיחה מעת לעת שהגיבויים שלך ניתנים לשחזור (
restic check --read-data-subset, מוגבל) ומציגה תג אומת כניתן לשחזור לכל דומיין. - בדיקת שחזור אחרי הגיבוי הראשון. כשהגיבוי הראשון של פריט מסתיים, BombVault משחזר ממנו דגימה (עד 100 קבצים ו-256 MiB) לתיקייה זמנית בתוך תיקיית השחזור, נותן ל-restic לקרוא כל קובץ בחזרה מול ה-hash שלו ומשווה את הגדלים לגיבוי. מקובץ גדול מדי לדגימה, כמו דיסק של VM, נקראים בחזרה במקום זאת 64 ה-MiB הראשונים. כרטיס הפריט מציג את התוצאה, כישלון נשלח כהתראה, ובדוק שחזור מריץ את אותה בדיקה על הגיבוי החדש ביותר מתי שתרצו. גיבויים מאוחרים יותר לא חוזרים עליה.
- בדיקת הפעלה. בדיקת הבייטים לא מראה שהאפליקציה חוזרת לפעול. בדיקת הפעלה בכרטיס של קונטיינר משחזרת את הגיבוי החדש ביותר לעותק מבודד ומפעילה אותו: שם שמתחיל ב-
bombvault-test-, רשת Docker פנימית משלו בלי פורטים מפורסמים ובלי דרך ל-LAN, מעבד אחד ו-2 GiB זיכרון, והנתונים בתיקייה זמנית בתוך תיקיית השחזור. הבדיקה עוברת כשבדיקת התקינות של הקונטיינר מדווחת תקין, בלעדיה כשהפורט החשוף הראשון עונה מתוך אותה רשת, ובלי שתיהן כשהוא ממשיך לרוץ. הקונטיינר המקורי לעולם לא נעצר או משתנה, והעותק, הרשת והנתונים שלו מוסרים אחר כך, גם אם BombVault מופעל מחדש באמצע בדיקה. קונטיינרים ברשת המארח, מורשים, עם התקנים או כאלה שזקוקים לקונטיינר אחר מוצגים כלא ניתנים לבדיקה. הפעילו בדיקת הפעלה בבדיקות השחזור המתוזמנות כדי לבדוק קונטיינר אחד בכל ריצה, קודם זה שנבדק לפני הכי הרבה זמן. התוצאה מופיעה בכרטיס ובלוח הבקרה. העותק לא נושא אף תווית של המקור ורץ בלי ה-capabilities, אפשרויות האבטחה, ערכי ה-sysctl וה-cgroup parent שהמקור מוסיף. קונטיינר שזקוק להם נכשל בבדיקה, והתוצאה מציינת בלי מה העותק רץ. - פעולות מרפאות-עצמן. נעילת restic יתומה בהוכחה (שהושארה מהפעלה מחדש באמצע פעולה) מנוקה בכוח ומנוסה שוב פעם אחת, אוטומטית. השמירה יציבת-זהות (נגזמת לכל פריט, חסינה לשינויי נתיב או מארח) וכישלון שמירה שולח התראה.
- אזהרות שסריקת התיקיות אינה רואה. עוזר ההחרגות עונה על שאלה של גודל. חלק מטעויות הגיבוי היקרות ביותר אינן שאלה של גודל, ולכן הוא נושא גם אזהרות ספציפיות ליישום על האופן שבו יישום שומר את הנתונים שלו. האזהרה שבשבילה הוא קיים: Immich שומר את האלבומים, הפנים והתאריכים של כל תמונה במסד נתונים PostgreSQL שרץ בקונטיינר נפרד, כך שגיבוי ברמת הקבצים של קונטיינר Immich משחזר את התמונות בלי כל אלה, והשחזור נראה כאילו הצליח. האזהרה מוצגת בין אם מוצעת החרגה כלשהי ובין אם לא, כולל בקונטיינר שלא נבחר בו דבר לסריקה, כי האזהרה נכונה בכל מקרה.
- לא מגובה (כיסוי). כרטיס בלוח הבקרה שמציין כל דבר בשרת שאף גיבוי אוטומטי אינו מכסה, עם הסיבה לכל אחד: מעולם לא נוסף ל-BombVault, קיים אך לא נכלל בלוח הזמנים, לוח הזמנים שלו כבוי, או שאין לוח זמנים מופעל בשום מקום. מחוון ההגנה שמעליו עונה על שאלה אחרת, כלומר האם הגיבויים שכן מתוזמנים רצו בזמן, והוא אינו יכול לראות את הקונטיינר שאיש מעולם לא הגדיר: הוא חסר מכל רשימה ומכל שגיאה, כך ששום דבר אינו הופך לכתום בגללו. הקונטיינרים נקראים מרשימת Docker החיה ולא מהרשומות של BombVault עצמה, כי פריט בלי רשומה הוא בדיוק הפריט שצריך לציין. סוג גיבוי שכיבית נשאר מחוץ לספירה לגמרי, כי זו הייתה הבחירה שלך.
- תצוגה מקדימה של שמירה. הלוח שליד הגדרות השמירה מציג מה הריצה הבאה עומדת למחוק, לפני שזה קורה: לפי מאגר ולפי פריט, עם נקודות השחזור בשמן. הוא אינו לוקח נעילת מאגר ואינו משנה דבר, כך שהוא עונה גם בזמן שגיבוי רץ. שמירה כבויה אומרת זאת במקום להציג רשימה ריקה, מאגר append-only מסומן ככזה (שמירה לעולם אינה רצה שם), ומאגר שלא ניתן היה להגיע אליו מצוין בשמו במקום להיעדר בשקט. תחת הגדרות, שמירה גם למדיניות המקומית וגם למדיניות מחוץ לאתר, כל אחת עם התצוגה המקדימה שלה.
- חריגות. כל גיבוי של קונטיינר, מכונה וירטואלית, ערכת תיקיות, dump של מסד נתונים, כונן ה-flash והגיבוי העצמי מושווה להיסטוריה של אותו פריט. הבדיקות מסתכלות על הנתונים החדשים של ריצה, מול הכמויות הרגילות הגדולות ביותר של הגיבויים האחרונים ומול הקצב הרגיל לשעה; על גיבוי ששמר מחדש את רוב הנתונים, כולל קבצים ששמם שונה ונכתבו מחדש; על גודל המקור ומספר הקבצים ש-restic מדווח לכל פריט ולכל dump; על זמן הגיבוי של restic עצמו; על רצפי כשלים וכשלים לסירוגין; על בדיקות שחזור שהפסיקו לעבור; ועל המקום הפנוי במאגרים מקומיים, במאגרי SFTP ובמאגרי rclone, בתחזית לפי גידול המאגר. פריט לומד מ-10 הגיבויים הראשונים שלו, ואילו מקור כמעט ריק, כתיבה מחדש של רוב הנתונים וכשלים נבדקים מההתחלה. בשדרוג ההיסטוריה נקראת פעם אחת מסיכומי ה-snapshot ש-restic 0.17 שומר, כך שהתקנה קיימת לא מתחילה מאפס. הרגישות (מחמירה, מאוזנת, מקלה) והחומרה הנמוכה ביותר ששולחת התראה נקבעות באופן כללי ב-הגדרות, שלמות ואפשר לשנות אותן לכל פריט. אזהרות נסגרות מעצמן כשהסיבה נעלמת; ממצאים קריטיים על נתונים שאבדו ועל דיסק שמתמלא נשארים עד שתאשר אותם, וממצא שאושר לא מדווח שוב עד שהסיבה שלו נעלמה פעם אחת. הפעולה סמן כצפויה הופכת רמה חדשה לרגילה אחרי 10 גיבויים, אבל אף פעם לא מכבה את הבדיקה של מקור כמעט ריק, ואחרי שינוי בבחירה ההיסטוריה של הפריט מתחילה מחדש מעצמה. כל עוד מקור כמעט ריק, התכווץ מאוד או שגיבוי שמר מחדש את רוב הנתונים, השמירה משאירה את הגיבויים הישנים של הפריט עד שתאשר את הממצא או תסמן אותו כצפוי, והממצא מקשר לגיבוי הטוב האחרון. התראה נשלחת פעם אחת לכל אירוע, וכשלים ובדיקות שחזור שכבר שולחים התראה לא מדווחים פעמיים. מה זה לא עושה: למאגרי S3, B2 ו-REST אין נתון מקום פנוי, בשיתוף המשתמש של Unraid המקום הפנוי הוא של המערך כולו, ולגיבויים מלפני restic 0.17 אין היסטוריית גודל. גם פריטי ZFS נבדקים, מערך נתונים אחר מערך נתונים: לכל מערך נתונים בעץ יש היסטוריה משלו, מערך שהתרוקן או שלא ניתן עוד לקרוא אותו נחשב לאובדן נתונים, ורק הגיבויים הישנים של אותו מערך נשמרים. איך פריט ZFS נבדק מערך נתונים אחר מערך נתונים מוסבר במערכי נתונים של ZFS, ועוזר יכול לקרוא את החריגות הפתוחות דרך שרת MCP. ממצא על גודל המקור או מספר הקבצים בו מתוארך לגיבוי הראשון שבו הופיע, והשוואה לגיבוי הקודם מציגה את התיקיות שבהן קבצים נעלמו, נוספו או השתנו, עם הערה כשכמעט הכול נמצא באינדקס חיפוש, במטמון או בתמונות ממוזערות שהאפליקציה בונה מחדש בעצמה.
- החרגות מומלצות לכל יישום. לאימג'ים מוכרים (Plex, Jellyfin, Emby, Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Immich, Nextcloud, PhotoPrism ו-Tautulli, של linuxserver, hotio, binhex או המפיץ הרשמי) עוזר החרגות מציע את התיקיות שהיישום ממלא מחדש בעצמו: מטמונים, יומנים, תמונות תצוגה מקדימה ופוסטרים. כל פריט אומר מה הוא מכיל, אפשר לכבות כל אחד, ושום דבר לא מוחרג עד שתלחץ החרגת הנבחרים.
- חבילת תמיכה. קובץ ZIP מושחר בלחיצה אחת לדיווח על באג: בדיקת האינטגרציה עם המארח, התצורה שלך כשכל סוד הוסר ממנה, הריצות האחרונות, מה מתוזמן בהמשך, והיומן האחרון. היא כוללת גם איך עבר ה-dump האחרון של כל מסד נתונים, את פריטי ה-ZFS עם נקודות העיגון שהקונטיינר רואה, את החריגות הפתוחות, וכמה מפתחות MCP קיימים (לעולם לא את שמותיהם). סיסמאות, אסימונים, תצורת rclone, פרטי ההתחברות של ההתראות וכל סיסמה המוטמעת במיקום מאגר מוסרים כולם, והחבילה אומרת זאת במניפסט שלה, כי אסור שקובץ תמיכה ייחשב אי-פעם לגיבוי תצורה. היא דורשת סיסמת כניסה מאותה סיבה שערכת השחזור דורשת. היומן שהיא נושאת הוא הפלט של הקונטיינר הזה מאז שהופעל לאחרונה; לקריסה שהפעילה את הקונטיינר מחדש,
docker logsנשאר המקום לחפש בו. - ערכת שחזור מפתח ההצפנה. הורדה בלחיצה אחת של המפתח הראשי, סיסמת ה-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. חושף מצב גיבוי, גדלים וחותמות זמן, ללא סודות או נתיבים בתוויות. - HTTP API, Home Assistant ו-mDNS. סקריפטים ולוחות בקרה מקבלים API תחת
/api/v1עם אסימונים בעלי שם, לקריאה בלבד או עם הרשאה להתחיל גיבויים. Home Assistant מוצא את BombVault דרך MQTT discovery, כמכשיר עם חיישנים ואם תרשה, עם כפתור גיבוי לכל דומיין. ו-BombVault מכריזה על עצמה ברשת כ-bombvault.local. ראה API ושילובים. - מקום פנוי ושבועות עד שיתמלא. מאגרים מקומיים, מאגרי SFTP ויעדי SMB או WebDAV שמדווחים על כך מציגים את המקום הפנוי שלהם וכמה שבועות נותרו בקצב הגדילה הנוכחי. מאגרי S3, B2 ו-REST אומרים "המקום הפנוי אינו ידוע", כי ה-backends האלה לא מדווחים עליו.
- גודל לפי תיקייה. באזור הגיבויים של קונטיינר, VM או סט תיקיות, גודל לפי תיקייה מראה אילו תיקיות וקבצים תופסים מקום בגיבוי החדש ביותר וכמה מהם הביא הגיבוי האחרון כחדש או כמשתנה, רמה אחרי רמה. BombVault קורא את זה מהאינדקס של המאגר בלי לקרוא את הקבצים, ומעדכן אחרי כל גיבוי ברגע שפתחת את זה פעם אחת.
- למה גיבוי היה איטי. בזמן גיבוי BombVault עוקב אחרי העומס על המעבד, הדיסקים והרשת. כשגיבוי נמשך הרבה יותר מהרגיל ודבר אחד היה בבירור בקצה שלו, הריצה אומרת זאת, למשל "דיסק היעד disk1 היה עסוק ב-98%" או "BombVault ניצל 100% ממגבלת המעבד של הקונטיינר שלו". אחרת היא לא אומרת כלום.
- השתנה מאז הגיבוי האחרון. קונטיינר שנוצר מחדש עם אימג', פורטים, משתנים או אמצעי אחסון אחרים מאז הגיבוי האחרון שלו מקבל סימן ליד שמו. ה-(i) שלו מפרט מה השתנה, משתנים לפי שם בלבד. זו הערה בלבד והיא נעלמת עם הגיבוי הבא.
הגנה מפני כופרה¶
- מחוץ לאתר בלתי-ניתן-לשינוי (append-only). סמן מאגר מחוץ לאתר כ-append-only כך שכופרה או מארח שנפרץ אינם יכולים למחוק או לשכתב את הגיבויים שלך. הצד הרחוק (
restic/rest-serverבמצב--append-only) אוכף זאת; BombVault רק מאמתת זאת ולעולם אינה מציגה ירוק על טענת תצורה בלבד. - בדיקת חבלה. BombVault מוכיחה מעת לעת את ערבות ה-append-only על ידי ניסיון מחיקה בפועל מול המאגר מחוץ לאתר (המכוון לאובייקט לא-קיים): סירוב פירושו מוגן, קבלה פירושה לא מוגן. תוצאה בלתי-חד-משמעית לעולם אינה הופכת את הפסק המאוחסן.
- הגדרת מחוץ לאתר מודרכת. אשף מוליך אותך מבחירת backend דרך קטע פריסה מוכן-להדבקה של rest-server, בדיקת חיבור, מתג הבלתי-ניתן-לשינוי ואסטרטגיית שמירה.
- תרגולי DR (מחוץ לאתר). שחזר יעד אמיתי מהמאגר מחוץ לאתר לתוך ארגז חול חד-פעמי, אמת אותו קובץ-אחר-קובץ ובית-אחר-בית, ואז נקה. ראה מחוץ לאתר והתאוששות.
- כרטיס-ניקוד להגנה מפני כופרה. כרטיס בלוח הבקרה עם עמדה ירוקה / כתומה / אדומה לכל דומיין ורשימת בדיקה עם חותמת גיל; כל שורה אדומה מקשרת עמוק לתיקון. הוא הופך לירוק רק על עובדות מאומתות.
- התראת תקציב-גדילה. למחוץ לאתר בלתי-ניתן-לשינוי (שבו תמונות מצב ישנות בכוונה לעולם אינן נגזמות), קבע תקציב גודל וקבל התראה לפני שהוא בורח.
- צימוד באמצעות ביטוי. מופעים מצטרפים לקבוצה אחת באמצעות שתים-עשרה מילים: צור את הביטוי במופע אחד, הקלד אותו במופע הבא. חברים באותה רשת מוצאים זה את זה ומדברים ישירות, האחרים דרך ממסר (ממסר הפרויקט, ממסר משלך, או ללא ממסר), וכל שיחה ביניהם מוצפנת מקצה לקצה. הקבוצה נושאת את כרטיסי-הניקוד בעמוד המופעים, הצעות האחסון מחוץ לאתר של ה-Mesh, ואת מה שמקבל או מקור משיכה זקוקים לו, לעולם לא נתוני גיבוי ולעולם לא
APP_KEY. ראה מחוץ לאתר והתאוששות. - עמוד המופעים. הפעל את מופעים בהגדרות, ותקבל עמוד עם כרטיס לכל מופע בקבוצה שלך, כולל המופע הזה: הכתובת שלו, האם הוא מחובר, ומצב ההגנה של כל דומיין עם הגיבוי האחרון שלו, באותו אדום, כתום וירוק שלוח הבקרה המקומי מציג. בדוק עכשיו מבקש מחבר לאמת את המאגר של דומיין אחד. שום דבר בעמוד לא יכול להתחיל גיבוי, שחזור או מחיקה בתיבה אחרת.
- Mesh מחוץ לאתר. חבר יכול להציע את האחסון מחוץ לאתר שלו לחבר אחר דרך הקבוצה. המנהל בצד השני רואה את ההצעה בעמוד המופעים ומקבל או דוחה אותה; קבלה יוצרת ערכת אישורים רגילה ויעד מחוץ לאתר. בדרך הזו עוברים רק פרטי חיבור, לעולם לא נתוני גיבוי.
- לוח בקרה של מקבל (הצד המקבל). בתיבה שמקבלת עותקים בלתי-ניתנים-לשינוי מחוץ לאתר מ-BombVault אחר, הפעל את מתג מקלט (הגדרות) כדי לחשוף לשונית מקלט. רשום מאגר שהתקבל לקריאה בלבד (נפתח עם סיסמת ה-restic של המופע השולח, המגיעה דרך קבוצת הצימוד) כדי לראות את מלאי תמונות המצב שלו מקובץ לפי מקור, מתי כל מקור הגיע לאחרונה, והרץ
restic checkעצמאי על חומרת הקבלה. הוא מתריע לך כאשר מקור מפסיק לשלוח בתוך חלון שאתה קובע (מפסק מת) או כאשר בדיקת שלמות נכשלת. לקריאה בלבד באופן מחמיר, כך שהוא לעולם אינו כותב למאגר שהתקבל, וכבוי כברירת מחדל. ראה מחוץ לאתר והתאוששות. - משיכה ממופע אחר (צד המשיכה). התמונה במראה של שכפול מחוץ לאתר: במקום שהתיבה הזו תדחוף את תמונות המצב שלה החוצה, היא מושכת את אלה של מישהו אחר פנימה. הפעל את מתג משיכה (הגדרות) כדי לחשוף את הלשונית משיכה בעמוד מופעים, בחר את המופע האחר מקבוצת הצימוד שלך ואת מיקום המאגר שלו, ואז בחר איזה סוג גיבוי הוא מכיל ובאיזו תדירות למשוך. סיסמת ה-restic שלו מגיעה דרך הקבוצה, לעולם לא ה-APP_KEY שלו. בצד הרחוק אין יותר מה להגדיר, והוא אינו צריך לרוץ. מאגר המקור נקרא בלבד ולעולם לא יותר מכך: הוא נפתח כדי לבדוק את הסיסמה, נרשם, ומצוין כמקור ההעתק, ולעולם אינו מאותחל, משוחרר מנעילה, נגזם או נכתב אליו. כל צד שומר על פרטי ההזדהות שלו, ומקור
rclone:נדחה כי rclone היה מגיע אליו עם ה-remotes של המופע הזה. ראה מחוץ לאתר והתאוששות.
ייצוא רגיל¶
- ייצוא רגיל של container. כפתור ייצוא (tar רגיל) לכל 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) נאטם אז עבור אותם נמענים, ואתה מפענח אותו מאוחר יותר מחוץ לתיבה עם המפתח הפרטי התואם. ככלל בטיחות, כשההצפנה מופעלת ואין נמען תקף מוגדר, ייצוא נכשל עם שגיאה ברורה במקום אי-פעם לכתוב טקסט גלוי. - גם ערכת השחזור נאטמת. כשאותה הגדרה מופעלת, הערכה יורדת כ-
bombvault-recovery-kit.md.age. היא בפורמט ASCII-armored ולא בינארית, כך שהיא נשארת טקסט קריא רגיל: עדיין אפשר להדביק אותה במנהל סיסמאות או להדפיס אותה, ובשביל זה הערכה קיימת. אותו כלל בטיחות חל, כך שכשההצפנה מופעלת ואין נמען שמיש ההורדה נדחית, במקום לחזור למסירת המפתח הראשי בטקסט גלוי. דבר אחד צריך לעשות נכון כשאתה מפעיל את זה: אתה צריך את המפתח הפרטי של age כדי לפתוח את הערכה, אז שמור את המפתח הזה במקום שאינו תלוי בערכה עצמה.
עוזרי בינה מלאכותית (MCP)¶
ב-BombVault מובנה שרת MCP, שדרכו עוזר כמו Claude Code או Claude Desktop יכול לקרוא את מצב הגיבויים, את הכיסוי, את היסטוריית ההרצות, את נקודות השחזור ואת הפעילות הנוכחית. עם מפתח שמרשה זאת, העוזר יכול גם להתחיל גיבוי של פריט אחד, של תחום אחד או של הכול, ולבטל גיבויים שהוא עצמו התחיל. שחזורים, מחיקות, prune והגדרות נשארים בממשק האינטרנט. כל לקוח מקבל מפתח משלו ב-הגדרות, אינטגרציות, שרת MCP; מפתח מוצג פעם אחת, נשמר רק כטביעת אצבע, ואפשר בכל עת לשנות את שמו, להחליף או לבטל אותו. ההתחלות מוגבלות לשעה ולפריט, ושומר השמירה מונע מגיבויים של עוזר לדחוק את נקודות השחזור שלך אל מחוץ למדיניות "שמור את N האחרונות". כל הרצה שעוזר מתחיל מסומנת "דרך MCP" עם שם המפתח. ראה שרת MCP. דאמפים של מסדי נתונים ומערכי נתונים של ZFS נמנים עם הפריטים ונקודות השחזור שהוא קורא, והוא יכול להציג את החריגות ש-BombVault הבחין בהן.
אפליקציות ומלווים¶
- אפליקציית Android. כל שרת בקבוצה שלך בטלפון שלך, עם יומן הפעילות של כולם במסך אחד. היא מצטרפת לקבוצה שלך באמצעות קוד QR ופותחת כל שרת כשהיא כבר מחוברת. ראה אפליקציית Android.
- שרת מקלט. התיבה שמקבלת עותקים מחוץ לאתר יכולה להפעיל בלחיצה אחת rest-server במצב append-only ולהציע אותו למופעים האחרים בקבוצה שלך, לכל אחד התחברות משלו. ראה שרת מקלט.
- הגדרות, אפליקציות. עמוד שמתחיל באפליקציית Android, ב-APK שלה לגרסה שהשרת מריץ ובקוד QR עבורו, ואחריהם כרטיס לכל אפליקציה מלווה. הכרטיס של ParleyPort מציע את תבנית ה-Unraid שלו, מעתיק את פקודת ה-Docker שמפעילה אותו, ומוביל למאגר שלו ולהגדרות הממסר תחת צימוד. הכרטיס של BombVault Widget מציע את התבנית ואת המאגר שלו, ומתקין או מסיר את התוסף דרך חיבור ה-SSH למארח.
- BombVault Widget. אריח ב-Dashboard של Unraid עם יומן הפעילות של BombVault וההרצה המתוזמנת הבאה. בלי חיבור SSH למארח, הכרטיס נותן לך את כתובת ה-
.plgלהתקנה תחת Plugins, Install Plugin, ואפשר להסיר את התוסף שם כמו כל תוסף אחר. - יומן פעילות להטמעה. צור אסימון לקריאה בלבד תחת הגדרות, אינטגרציות ותקבל כתובת לכל לוח בקרה שמציג iframe, כמו Homepage, Organizr או Heimdall: עמוד קטן עם יומן הפעילות החי בלבד. האסימון מעניק גישה ליומן הזה ולשום דבר אחר, ו-השבתה מבטלת אותו מיד. העמוד המוטמע זמין באנגלית בלבד.
אחר¶
- עצירת גיבוי שרץ. לכל כרטיס שיכול להתחיל גיבוי יש כפתור ביטול הגיבוי ליד פס ההתקדמות שלו כל עוד ההרצה פעילה. ההרצה נרשמת כבוטלה, לא כנכשלה. העצירה בטוחה, כי restic כותב את תמונת המצב שלו אחרונה, ולכן הרצה שהופסקה משאירה נתונים שאין אליהם הפניה ושום תמונת מצב.
- גבה רבים בבת אחת. בחר containers בבחירה-מרובה ולחץ גבה נבחרים. האצווה רצה בצד השרת, כך שהיא ממשיכה גם אם תסגור את הלשונית או תאבד את החיבור. BombVault לעולם אינה מגבה (ולכן לעולם אינה עוצרת) את ה-container של עצמה.
- דפדפן תמונות מצב עם רשימת נקודות שחזור, מחיקה לכל תמונת מצב, ועץ תיקיות מתקפל לשחזור ברמת הקובץ.
- תחזוקת מאגר לכל דומיין: אמת (
restic check), בטל נעילה (נקה נעילה תקועה), וגזום (מיישם את מדיניות השמירה לפי דרישה כשמוגדרת אחת, אחרת שחרור-מקום פשוט). - התקדמות באימות, בבדיקות שחזור ובניקוי. בזמן שאחד מהם רץ, יומן הפעילות וכרטיס התקינות מראים עד כמה restic ספר, למשל 12 מתוך 47 חבילות, ואת הזמן שנותר בשלב ברגע שיש מספיק כדי להעריך אותו. restic סופר כאן חבילות, תמונות מצב וקובצי אינדקס, לא בייטים, ולכן זה מה שהפס מציג; לפני הספירה הראשונה הוא נע בלי מספר.
- דאמפים אוטומטיים של מסדי נתונים. קונטיינרים מזוהים של PostgreSQL, MySQL ו-MariaDB (האימג'ים הרשמיים, PostGIS, TimescaleDB, pgvector, pgautoupgrade, אימג'י מסד הנתונים של Immich, linuxserver, yobasystems ו-jc21 MariaDB, וכן mysql-server של Oracle) עוברים דאמפ לפני כל גיבוי, מתוך השרת הפועל. קונטיינרים שרק נראים כמו מסד נתונים מקבלים את אותה אפשרות בכרטיס שלהם, כבויה עד שתבחר בה. הדאמפ זורם ישירות אל המאגר והופך שם לנקודת שחזור משל עצמו, לצד גיבוי הקבצים, ולעולם אינו נכתב לדיסק. פרטי הגישה מגיעים מהמשתנים של הקונטיינר עצמו, כולל סודות
*_FILE, ואינם יוצאים ממנו. כל כרטיס מראה אם תיקיית הנתונים של מסד הנתונים נשמרת בזמן שהקונטיינר עצור, מועתקת בזמן שהוא רץ, או אינה נשמרת כלל. דאמפ כושל אינו מפיל את הגיבוי: הוא מופיע כהרצה כושלת עם הסיבה שלה ורמז כיצד לתקן, ושולח התראה. דאמפים לעולם אינם נטענים בחזרה מעצמם. אפשר להוריד דאמפ (רגיל או דחוס), לשמור אותו לתיקייה, לייבא אותו בלחיצה אחת אל מסד נתונים שזה עתה הופעל, או למשוך אותו עם שורת הפקודה של restic. אפשר לכבות זאת לכל קונטיינר בנפרד, באמצעות התוויתbombvault.dbdump=false, או לכל הקונטיינרים בהגדרות. זיהוי החריגות עוקב גם אחר הגודל של כל דאמפ, ועוזר יכול להציג את הדאמפים של קונטיינר דרך שרת MCP. - Hooks לפני/אחרי גיבוי לכל container. פקודות shell רצות בתוך ה-container (למשל כתיבת מטמון לדיסק); pre-hook כושל מבטל את הגיבוי. מסדי נתונים מזוהים עוברים דאמפ אוטומטית ואינם זקוקים ל-hook.
- עצור containers אחרים במהלך הגיבוי, עם הפעלה מחדש מבוקרת-בריאות. נקוב בשם containers תלויים (למשל מסד נתונים) לעצירה בזמן שזה מגובה. לאחר מכן BombVault מחזירה אותם בסדר ה-
depends_onשל Compose, וכברירת מחדל ממתינה שכל אחד ידווח על מצב תקין (או פועל, אם אין לו healthcheck) לפני הפעלת ה-containers התלויים בו, כך שתלות כמו Pi-hole, מסד נתונים או שער VPN באמת עולה לפני השירותים הזקוקים לה, במקום שאלה יחזרו לconnection refused. ההמתנה מוגבלת על ידי timeout לכל container (120 שניות כברירת מחדל) כך ש-container איטי או שלעולם אינו תקין לעולם אינו יכול לתלות את ההרצה; גם ההמתנה וגם ה-timeout חיים ב-הגדרות, Containers (כבה את ההמתנה עבור ההפעלה-מחדש הקודמת של הכול-בבת-אחת). אותה הפעלה מחדש מסודרת ומבוקרת-בריאות עוטפת גם את עדכון ה-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 יכול להפעיל אותו מחדש אם המנוע אי-פעם נתקע. - ממשק כהה/בהיר ב-42 שפות עם בורר דגלים.
- ההגדרות שומרות את עצמן. העבר מתג או צא משדה, והשינוי נכתב מיד, עם הבהוב קצר על הפקד ורעידה אם השרת מסרב לו. בשלושה מקומות נשאר כפתור שמירה, כי שמירה שלהם באמצע העבודה לא הייתה בטוחה: תיבת התצורה של rclone, עורך ערכת האישורים וסיסמת ההתחברות.
- הודעות קופצות שקטות. תחת הגדרות, כללי אפשר להשתיק את הודעות האישור השגרתיות, כך שרק כשלים עדיין יפריעו לך. זה נקבע לכל דפדפן ואינו נוגע בהתראות.
- שיראה כמו שאתה רוצה. הגדרות, מראה קובע את הצבעים (צבע הדגשה אחד, או מצב קשת עם פלטה של שמונה), את הפינות (עגולות, רכות או מרובעות) ואת האנימציה (כבוי, עדין, פראי או סוער), והבחירה נשמרת לכל דפדפן. כשהמערכת שלך מבקשת פחות תנועה, היא תמיד גוברת.