גיבוי ושחזור
המדריך הזה מכסה את חמשת הדברים שבאמת עושים עם גיבויים: ליצור אחד, לאסוף אותו, להעביר סביבת עבודה, להחזיר אחד, ולשמור עותקים מחוץ למחשב. למבנה המדויק של כל ארטיפקט ושל כל פעולה, ראו עזר הגיבוי.
כל מה שבדף הזה נמצא בהגדרות → שרת → גיבוי ושחזור.
לפני שמתחילים
קטע בשם “לפני שמתחילים”- לקוח מלא — אפליקציית המחשב או אפליקציית האינטרנט. טלפון משויך לא יכול להפעיל שום דבר מזה, וזה מכוון.
- כדי ליצור, להציג, להוריד או למחוק תמונת מצב של ההתקנה: יש להיות הבעלים של ההתקנה.
- לפעולות ברמת סביבת עבודה: מנהל של אותה סביבת עבודה כדי לייצא, בעלים כדי לייבא או למחוק אותה.
- להורדות ולהעלאות: חיבור ישיר לשרת. הממסר המתווך מעביר מסגרות RPC ולא קבצים, ובחיבור כזה בקרות ההעברה משביתות את עצמן עם הסבר.
מה גיבוי כולל
קטע בשם “מה גיבוי כולל”שני הארטיפקטים הם מסדי נתונים בלבד:
- תמונת מצב של ההתקנה היא תיקייה עם חותמת זמן:
manifest.json,global.dbוקובץ<workspaceId>/workspace.dbאחד לכל סביבת עבודה. - ייצוא של סביבת עבודה הוא אותו קובץ
workspace.dbבודד.
אף אחד מהם לא נושא את שאר ספריית הנתונים: secrets.json (מפתחות שיוך, פרטי
גישה של ספקים, SSO), blobs/ של סביבת עבודה (תמונות שהודבקו בהודעות),
skills/, agents/, chat_credentials/, אודיו מוקלט של פגישות או תמונות של
תחנות. חלק מזה חד-פעמי וחלק לא — הטבלה המלאה נמצאת
בעזר, וזה מה
שהקטע על מחוץ למחשב נועד לכסות.
יצירת תמונת מצב של ההתקנה כולה
קטע בשם “יצירת תמונת מצב של ההתקנה כולה”- פתחו את הגדרות → שרת → גיבוי ושחזור.
- תחת תמונות מצב של ההתקנה, לחצו על גיבוי עכשיו.
- הודעת הטוסט מציינת את התיקייה שנכתבה, על מארח השרת. תמונת המצב החדשה מופיעה בראש הרשימה.
השרת ממשיך לפעול לאורך כל התהליך. כל קובץ נכתב עם VACUUM INTO, שהוא עקבי גם
מול מסד נתונים פעיל, ולכן אין חלון תחזוקה ואין צורך לעצור סוכנים.
כל שורה ברשימה מציגה את חותמת הזמן, את הגודל בדיסק, כמה סביבות עבודה נלכדו והאם תמונת המצב שלמה או חלקית. חלקית פירושה שהמניפסט חסר או מפנה לקבצים שאינם שם — גיבוי שנקטע בגלל קריסה או דיסק מלא. הן עדיין מוצגות ברשימה בכוונה: תמונת מצב שאי אפשר לראות היא תמונה שמאמינים שיש. תמונת מצב חלקית לא יכולה לשחזר התקנה שלמה, אבל קובצי סביבות העבודה שכן יש בה אפשר עדיין לאמץ אחד-אחד.
שורה עשויה גם לומר n סביבות עבודה לא נלכדו. מדובר בסביבת עבודה שנרשמה אבל מעולם לא נכתב אליה (אין עדיין קובץ), או שאחד העותקים שלה נכשל — בדקו את יומן השרת.
תזמון גיבויים של סביבות עבודה ומדיניות שמירה
קטע בשם “תזמון גיבויים של סביבות עבודה ומדיניות שמירה”פתחו הגדרות → פייפליינים → תבניות פייפליין עבור סביבת העבודה ומצאו את Workspace backup. התזמון המופעל שלה רץ בכל יום ראשון ב-03:00 UTC: Back up workspace, ואחריו מחיקת גיבויים ישנים מ־ (30 ימים כברירת מחדל). הצומת השני רץ רק לאחר שהגיבוי מצליח. אפשר לשנות את מספר ימי השמירה בצומת או להשבית את התזמון. אם השרת לא זמין בשעה המתוזמנת, התזמון משלים פעם אחת כשהשרת חוזר, במקום להריץ מחדש כל שבוע שהוחמץ.
גיבויי סביבות עבודה יושבים על השרת תחת
backups/workspace-backups/<workspaceId>/<timestamp>/workspace.db. צומת
השמירה מוחקת רק גיבויים ישנים של סביבת עבודה זו; היא לעולם לא מוחקת תמונות
מצב של ההתקנה או גיבויים של סביבות עבודה אחרות. הקבצים האלה הם מסדי נתונים
בלבד. לשמירה מחוץ למחשב, העתיקו אותם בנפרד.
הגיבויים האלה נפרדים מהרשימה תמונות מצב של ההתקנה. כדי לשחזר אחד מהם,
השתמשו בנתוני סביבת עבודה → ייבוא עם הנתיב של workspace.db בצד השרת.
ייבוא מחליף את מסד הנתונים הנוכחי של אותה סביבת עבודה, ולכן ייצאו אותה קודם
אם ייתכן שתצטרכו לבטל את השחזור.
מחיקת תמונת מצב של ההתקנה
קטע בשם “מחיקת תמונת מצב של ההתקנה”תחת תמונות מצב של ההתקנה, פרשו את תמונת המצב, כולל תמונה חלקית, והשתמשו במחיקת תמונת מצב בקטע הסכנה. אשרו את השם שלה. כל תיקיית תמונת המצב נמחקת לצמיתות מהשרת; הורידו אותה קודם אם אתם צריכים עותק. פייפליין גיבוי של סביבת עבודה לעולם לא מוחק את תמונות המצב האלה.
איסוף עותק במחשב שלכם
קטע בשם “איסוף עותק במחשב שלכם”הנתיבים שהדף מציג נמצאים על המחשב שמריץ את cc_server. כשזה לא המחשב שאתם
יושבים מולו, השתמשו בכפתורי הורדה:
- לצד כל סביבת עבודה תחת נתוני סביבת עבודה → הורדה, לקובץ
.dbאחד. - לצד כל תמונת מצב תחת תמונות מצב של ההתקנה → הורדה, עבור תמונת המצב כולה כקובץ
.zip.
במחשב השולחני אתם בוחרים היכן הקובץ יישמר והטוסט מציין את מקומו; באינטרנט הוא יורד להורדות של הדפדפן. כך או כך, שניהם מדווחים על התקדמות בבתים, כי אלה שני המטענים שמגיעים לגדלים של ג’יגה-בייט.
שניהם יוצרים עותק טרי ברגע שאתם לוחצים על הכפתור, מזרימים אותו ומוחקים את העותק של השרת אחר כך — הורדה היא לא “שליפת הקובץ שכפתור הייצוא יצר קודם”.
חילוץ של ארכיון תמונת מצב משחזר בדיוק את המבנה של תמונת המצב, וזה מה שהופך את השחזור שלה להעתקה חזרה.
העברת סביבת עבודה להתקנה אחרת
קטע בשם “העברת סביבת עבודה להתקנה אחרת”סביבת עבודה אחת היא קובץ מסד נתונים אחד, ולכן מסירתה היא פעולת קובץ.
- בשרת המקור, הגדרות → שרת → גיבוי ושחזור → נתוני סביבת עבודה, פרשו את סביבת העבודה ולחצו על הורדה.
- בשרת היעד, צרו (או בחרו) את סביבת העבודה שתקבל אותה.
- פרשו את סביבת העבודה הזו, ותחת שחזור מהמכשיר הזה לחצו על בחירת קובץ והעלאה. בחרו את קובץ ה-
.dbשהורדתם.
אם שני השרתים הם אותו מחשב שאתם יושבים מולו, שמירה על השרת יחד עם ייבוא → בחירת קובץ עושים את אותו דבר בלי סבב ההעברה; הנתיבים בדיאלוג הייבוא נפתרים על מארח השרת.
שני דברים מותרים ונרשמים ביומן במקום להידחות: ייבוא קובץ שמזהה סביבת העבודה הרשום בו שונה מזה של היעד (כך משכפלים סביבת עבודה או משחזרים אותה תחת מזהה חדש), וייבוא קובץ מהתקנה אחרת. במקרה השני, המכשירים המשויכים ומזהי המשתמשים של הקובץ שייכים להתקנה שממנה הגיע ולא ייפתרו בזו — הנתונים של סביבת העבודה עצמה שלמים, אבל בדקו מחדש את החברות אחרי שאימצתם אותה.
אסימוני בוט הצ’אט יושבים לצד מסד הנתונים ולא בתוכו, ולכן סביבת עבודה שאתם מוסרים למישהו אחר לא נושאת פרטי גישה פעילים. ההתקנה שמקבלת אותה מחברת מחדש את הפרטים שלה.
שחזור סביבת עבודה אחת מתמונת מצב
קטע בשם “שחזור סביבת עבודה אחת מתמונת מצב”- תחת תמונות מצב של ההתקנה, פרשו את תמונת המצב הרצויה.
- אתרו את השורה של סביבת העבודה ולחצו על שחזור.
- אשרו. כל מה שסביבת העבודה עשתה מאז שנוצרה תמונת המצב אבד.
זו אותה פעולה כמו ייבוא, אלא שהיא מכוונת לעותק של הקובץ של אותה סביבת עבודה שבתוך תמונת המצב — בכוונה, כדי שלא יהיה מנגנון שני שיתייחס לאותו קובץ אחרת.
שורה עשויה לומר כבר לא נמצאת בשרת הזה, עם שחזור מושבת: תמונת המצב
מחזיקה סביבת עבודה שלהתקנה הזו כבר אין. החזירו אותה ביד — צרו סביבת עבודה,
ואז תחת נתוני סביבת עבודה ייבאו אליה את
<snapshot path>/<old workspace id>/workspace.db. תמונת המצב הפרושה מציגה את
הנתיב על השרת שלה בשדה להעתקה, והכותרת של השורה היא המזהה הישן של סביבת
העבודה, כך ששני החצאים של הנתיב הזה מונחים לפניכם.
שחזור התקנה שלמה
קטע בשם “שחזור התקנה שלמה”אין כפתור לזה, וגם לא צריך להיות: הפעולה מחליפה את מסדי הנתונים שהשרת הפעיל מחזיק פתוחים.
-
עצרו את
cc_server. אם אתם מריצים את אפליקציית המחשב עם השרת המוטמע שלה, צאו מהאפליקציה. -
העתיקו את תוכן תמונת המצב על ספריית הנתונים. המבנה של תמונת המצב משקף את זה של הנתונים הפעילים, ולכן זו העתקה פשוטה:
חלון מסוף # macOS default; see the CLI reference for other platformsDATA_DIR="$HOME/Library/Application Support/control-center"SNAPSHOT="$DATA_DIR/backups/2026-07-28T09-12-33-000Z"cp "$SNAPSHOT/global.db" "$DATA_DIR/global.db"for d in "$SNAPSHOT"/*/; doid=$(basename "$d")mkdir -p "$DATA_DIR/$id"cp "$d/workspace.db" "$DATA_DIR/$id/workspace.db"done -
מחקו כל קובץ
-walו--shmשיושבים לצד מסדי הנתונים שהחלפתם. הם שייכים לקבצים הישנים, וקובץ מיושן לצד מסד נתונים משוחזר הוא סיכון לשחיתות. -
הפעילו את השרת שוב.
תמונת המצב לא מכילה secrets.json, ולכן התקנה שמשוחזרת על מארח חדש שומרת
על הנתונים שלה אבל לא על פרטי הגישה שלה: יש להקים מחדש מכשירים משויכים,
אסימוני ספקים והגדרות SSO, או לשחזר אותם מהמקום שבו שמרתם את הקובץ הזה.
שחזור על אותו מארח, שבו secrets.json מעולם לא אבד, שומר על הכול.
העתקת גיבויים מחוץ למחשב
קטע בשם “העתקת גיבויים מחוץ למחשב”תמונת מצב על אותו דיסק כמו מסד הנתונים שהיא העתיקה מגנה עליכם מפני ייבוא שגוי, לא מפני הדיסק. שום דבר ב-Control Center לא שולח עותק לשום מקום, ולכן החלק הזה הוא באחריותכם.
סנכרון תמונות המצב
קטע בשם “סנכרון תמונות המצב”תמונות מצב אינן משתנות מרגע שנכתבו ונקראות על שם חותמת זמן, ולכן כל כלי סנכרון
מתמודד איתם היטב. החריגו את transfer/, שהוא שולחן עבודה של הורדות והעלאות
בתהליך:
DATA_DIR="$HOME/Library/Application Support/control-center"
# To another host over sshrsync -a --delete --exclude 'transfer/' \ "$DATA_DIR/backups/" backup-host:/srv/control-center-backups/
# To object storageaws s3 sync --exclude 'transfer/*' \ "$DATA_DIR/backups/" s3://my-bucket/control-center/backups/
# Or with deduplication, encryption and its own retentionrestic backup --exclude 'transfer' "$DATA_DIR/backups"--delete משקף את הניקוי המקומי שלכם אל המקום המרוחק. השמיטו אותו אם אתם
רוצים שהמרוחק ישמור תמונות מצב לזמן ארוך יותר מהמארח.
הכללת מה שתמונת מצב משאירה בחוץ
קטע בשם “הכללת מה שתמונת מצב משאירה בחוץ”כדי שתוכלו לשקם את ההתקנה ולא רק את הנתונים שלה, העתיקו גם את אלה. אלה קבצים רגילים, ובטוח להעתיק אותם בזמן שהשרת פועל:
rsync -a \ "$DATA_DIR/secrets.json" \ backup-host:/srv/control-center-backups/config/
rsync -a --relative \ "$DATA_DIR"/./*/chat_credentials \ "$DATA_DIR"/./*/blobs \ "$DATA_DIR"/./*/skills \ "$DATA_DIR"/./*/agents \ backup-host:/srv/control-center-backups/workspace-files/secrets.json הוא 0600 ומחזיק כל מפתח שיוך, פרטי גישה של ספק וכל הגדרת SSO
בהתקנה. בכל מקום שהוא יגיע אליו הוא חייב להיות מוגן לפחות כמו מארח השרת —
מוצפן במנוחה, ולא דלי שכל אחד אחר יכול לקרוא.
דלגו על spaces/ (עצי עבודה בכתיבה-בעת-העתקה, שמסופקים מחדש מהמאגרים שלכם),
pr_clones/ (מטמון), models/ (מורדים מחדש), media_cache/ ו-rigs/ (מצב
מכונה, וגם גדולים). אודיו מוקלט של פגישות תחת meetings/ שווה הכללה אם אתם
שומרים פגישות.
תזמון תמונת מצב של ההתקנה כולה מחוץ לאפליקציה
קטע בשם “תזמון תמונת מצב של ההתקנה כולה מחוץ לאפליקציה”הפייפליין המובנה מגבה סביבת עבודה אחת בלבד. לתמונת מצב של ההתקנה כולה ללא
השגחה אין תת-פקודת CLI, וקריאת ה-RPC של תמונות מצב דורשת לקוח מלא ומשויך
שהוא הבעלים של ההתקנה. מתזמן בצד המארח יכול להשתמש ב-VACUUM INTO מול מסדי
הנתונים הפעילים:
#!/usr/bin/env bashset -euo pipefail
DATA_DIR="${CC_SERVER_DATA_DIR:-$HOME/.local/share/control-center}"DEST="/srv/control-center-snapshots/$(date -u +%Y-%m-%dT%H-%M-%SZ)"mkdir -p "$DEST"
sqlite3 "$DATA_DIR/global.db" "VACUUM INTO '$DEST/global.db'"
for db in "$DATA_DIR"/*/workspace.db; do id=$(basename "$(dirname "$db")") mkdir -p "$DEST/$id" sqlite3 "$db" "VACUUM INTO '$DEST/$id/workspace.db'"doneהריצו אותו כאותו משתמש שבבעלותו ספריית הנתונים, מתוך cron או טיימר של
systemd, וסנכרנו את DEST מחוץ למארח אחר כך. VACUUM INTO דורש SQLite 3.27
ומעלה.
כתבו אותו מחוץ ל-<dataDir>/backups/. לתיקייה שנוצרה ביד אין
manifest.json, ולכן האפליקציה תציג אותה כתמונת מצב חלקית והרשימה תפסיק
להיות תיעוד כן של מה שהשרת עצמו יצר.
ניקוי תמונות מצב ישנות של ההתקנה
קטע בשם “ניקוי תמונות מצב ישנות של ההתקנה”אפשר למחוק תמונות מצב של התקנה בודדות באפליקציה. למדיניות שמירה בצד המארח, הפרידו בין ספריית גיבויי סביבות העבודה לבין תמונות המצב של ההתקנה:
find "$DATA_DIR/backups" -mindepth 1 -maxdepth 1 -type d \ ! -name exports ! -name transfer ! -name workspace-backups \ -mtime +30 -exec rm -rf {} +בדקו את הפלט של הרצה עם -print לפני שמוסיפים -exec. שמרו יותר מאחת: הכשל
שמפניו אתם מתגוננים הוא לעיתים קרובות “גם בגיבוי האחרון יש את הבעיה”.
בדיקה שגיבוי תקין
קטע בשם “בדיקה שגיבוי תקין”גיבוי שאיש לא שחזר הוא השערה.
בדיקה זולה — הקובץ נפתח והדפים שלו שלמים:
sqlite3 "$SNAPSHOT/global.db" 'PRAGMA integrity_check;' # expects: okבדיקה אמיתית — אמצו אותו. צרו סביבת עבודה זמנית על התקנה שאינה פרודקשן, ייבאו אליה קובץ של סביבת עבודה, ובדקו אם המרחבים, הכרטיסים וההודעות שאתם מצפים להם נמצאים שם. זה מפעיל את אותו מסלול ששחזור אמיתי עובר, כולל בנייה מחדש של FTS, וזו הבדיקה היחידה שאומרת לכם שהגיבוי ניתן לשחזור ולא רק לקריאה.
עשו זאת פעם אחת כשאתם מקימים גיבויים, ושוב בכל פעם שאתם משנים היכן הם נשמרים.
פתרון תקלות
קטע בשם “פתרון תקלות”| תסמין | סיבה ותיקון |
|---|---|
| בקרות ההורדה וההעלאה מושבתות עם הערה על ממסר | אתם מחוברים דרך הממסר המתווך, שאינו מעביר קבצים. התחברו ישירות |
| “השרת סירב” | תפקיד. יצירה או הצגה של תמונת מצב של ההתקנה דורשת את מפעיל ההתקנה. הורדה של סביבת עבודה דורשת מנהל, שחזור שלה דורש בעלים, וקובץ zip של תמונת מצב שלמה דורש את מפעיל ההתקנה |
| “לשרת הזה אין משטח גיבוי” | למארח אין יציאת גיבוי מחווטת — שרת דמו. הפעולות חסרות ולא נדחות |
| “הקובץ גדול ממה שהשרת מקבל” | ההעלאות מוגבלות ל-8 GiB. הניחו את הקובץ על מארח השרת והשתמשו בייבוא → בחירת קובץ במקום |
| ייבוא נדחה: זה אינו מסד נתונים של סביבת עבודה של Control Center | לקובץ אין שורת workspace_meta — הוא אינו ייצוא של סביבת עבודה, או שהוא קטוע. שום דבר לא הוחלף |
| תמונת מצב מוצגת כחלקית | המניפסט שלה חסר או מפנה לקבצים שאינם קיימים. צרו אחת חדשה; בינתיים אמצו ממנה קובצי סביבות עבודה בודדים |
| תמונת מצב אומרת שסביבות עבודה לא נלכדו | לאותן סביבות עבודה מעולם לא נכתב, או שהעותק שלהן נכשל. בדקו את יומן השרת |
| להתקנה משוחזרת אין פרטי גישה למארח קוד או ל-SSO | secrets.json אינו בתמונת מצב. שחזרו אותו מהמקום שבו שמרתם אותו, או חברו את הספקים מחדש |
| לסביבת עבודה משוחזרת חסרות תמונות שהודבקו | קובצי ה-blobs יושבים לצד מסד הנתונים ולא בתוכו. העתיקו גם את <workspaceId>/blobs/ |
מדריכים קשורים
קטע בשם “מדריכים קשורים”- הפעלת שרת ללא ממשק: מאיפה מגיעה ספריית הנתונים
- התחברות לשרת מרוחק: חיבורים ישירים לעומת חיבורים דרך ממסר
- שיוך מכשיר: פרטי הגישה שאיתם חתומות נתיבי ההעברה
מושגים ועזר קשורים
קטע בשם “מושגים ועזר קשורים”- גיבוי, ייצוא וייבוא: כל פעולה, נתיב, שדה ומגבלה
- סביבות עבודה ובידוד: למה סביבת עבודה אחת היא קובץ אחד
- CLI של
cc_server: מבנה ספריית הנתונים