Tovább a tartalomhoz

Mentés és visszaállítás

Ez az útmutató az öt dolgot járja körül, amit az emberek valójában csinálni szoktak a biztonsági mentésekkel: készítenek egyet, összegyűjtik, mozgatnak egy munkaterületet, visszatesznek egyet, és a gépen kívül is tartanak másolatokat. Minden egyes artefaktum és művelet pontos formáját lásd a mentésreferenciában.

Minden itt leírt dolog a Beállítások → Szerver → Biztonsági mentés és visszaállítás alatt található.

  • Teljes kliens — az asztali vagy a webes alkalmazás. Egy párosított telefon szándékosan egyiket sem tudja elindítani.
  • Telepítési pillanatkép készítéséhez, listázásához, letöltéséhez vagy törléséhez: a telepítés tulajdonosa.
  • Munkaterületenkénti műveletekhez: a munkaterület adminja az exportáláshoz, tulajdonosa az importáláshoz vagy a törléshez.
  • Letöltésekhez és feltöltésekhez: közvetlen kapcsolat a szerverrel. A közvetített relé RPC-kereteket visz, nem fájlátvitelt, és az átvitelvezérlők egy megjegyzéssel letiltják magukat, amikor ilyenen van.

Mindkét artefaktum kizárólag adatbázis:

  • A telepítési pillanatkép egy időbélyeges könyvtár: manifest.json, global.db és munkaterületenként egy <workspaceId>/workspace.db.
  • A munkaterület-export maga az az egyetlen workspace.db fájl.

Egyik sem viszi magával az adatkönyvtár többi részét: a secrets.json-t (párosítási kulcsok, szolgáltatói hitelesítő adatok, SSO), egy munkaterület blobs/ mappáját (az üzenetekbe beillesztett képek), a skills/, agents/, chat_credentials/ mappákat, a rögzített megbeszélés-hanganyagot vagy az állomásképeket. Ezek egy része eldobható, más része nem — a teljes táblázat a referenciában van, és ezek lefedéséről szól a gépen kívüli szakasz.

Pillanatkép készítése a teljes telepítésről

Szekció neve “Pillanatkép készítése a teljes telepítésről”
  1. Nyissa meg a Beállítások → Szerver → Biztonsági mentés és visszaállítás oldalt.
  2. A Telepítési pillanatképek alatt nyomja meg a Biztonsági mentés most gombot.
  3. A felugró értesítés megnevezi a kiírt könyvtárat a szervergépen. Az új pillanatkép a lista tetején jelenik meg.

A szerver végig futva marad. Minden fájl VACUUM INTO utasítással íródik, ami egy futó adatbázissal szemben is konzisztens, így nincs karbantartási ablak, és nem kell leállítani az ügynököket.

A lista minden sora mutatja az időbélyeget, a lemezen elfoglalt méretet, a rögzített munkaterületek számát, valamint azt, hogy a pillanatkép állapota Teljes vagy Hiányos. A hiányos azt jelenti, hogy a manifest hiányzik, vagy olyan fájlokat nevez meg, amelyek nincsenek ott — egy összeomlás vagy egy megtelt lemez miatt megszakadt mentés. Ezek szándékosan szerepelnek a listán: egy pillanatkép, amit nem lát, olyan, amiről azt hiszi, hogy megvan. Egy hiányos pillanatkép nem tud visszaállítani egy teljes telepítést, de a benne lévő munkaterület-fájlok egyenként még átvehetők.

Egy sor azt is mondhatja, hogy n munkaterület nem került rögzítésre. Az egy regisztrált, de soha nem írt munkaterület (még nincs fájlja), vagy egy olyan, amelynek a másolása meghiúsult — nézze meg a szervernaplót.

Munkaterület-mentések és megőrzés ütemezése

Szekció neve “Munkaterület-mentések és megőrzés ütemezése”

Nyissa meg a munkaterület Beállítások → Pipeline-ok → Pipeline-sablonok oldalát, és keresse meg a Workspace backup elemet. Az engedélyezett ütemezése minden vasárnap 03:00 UTC-kor fut: Back up workspace, majd Delete backups older than (alapértelmezésben 30 nap). A második csomópont csak a sikeres mentés után fut. A megőrzési napokat a csomóponton módosíthatja, vagy letilthatja az ütemezést. Ha a szerver az ütemezett időpontban offline, az ütemezés visszatérésekor egyszer behozza a lemaradást, ahelyett hogy újrajátszaná az összes kihagyott hetet.

A munkaterület-mentések a szerveren a backups/workspace-backups/<workspaceId>/<timestamp>/workspace.db útvonalon élnek. A megőrzési csomópont csak ennek a munkaterületnek a régi mentéseit törli; soha nem törli a telepítési pillanatképeket vagy más munkaterületek mentéseit. Ezek a fájlok csak adatbázist tartalmaznak. A gépen kívüli megőrzéshez másolja őket önállóan.

Ezek a mentések különválnak a Telepítési pillanatképek listától. Az egyik visszaállításához használja a Munkaterület adatai → Importálás lehetőséget a mentés szerveroldali workspace.db útvonalával. Az importálás lecseréli a munkaterület jelenlegi adatbázisát, ezért előbb exportálja, ha szükség lehet a visszaállítás visszavonására.

A Telepítési pillanatképek alatt nyissa le a pillanatképet, a hiányosat is, és használja a Pillanatkép törlése lehetőséget a veszélyzóna szakaszban. Erősítse meg a nevét. A teljes pillanatkép-könyvtár véglegesen eltávolítódik a szerverről; előbb töltse le, ha szüksége van másolatra. A munkaterület-mentési pipeline soha nem törli ezeket a pillanatképeket.

Az oldalon látható útvonalak a cc_server-t futtató gépen vannak. Ha ez nem az a gép, amely előtt ül, használja a Letöltés gombokat:

  • A Munkaterület adatai alatt minden munkaterület mellett Letöltés, egy .db fájlhoz.
  • A Telepítési pillanatképek alatt minden pillanatkép mellett Letöltés, a teljes pillanatképhez .zip formában.

Asztali gépen Ön választja ki, hova kerül a fájl, és a felugró értesítés megnevezi; weben a böngésző letöltései közé kerül. Mindkét esetben bájtban jelentik a folyamatot, mert ez a két olyan adatcsomag, amely elérheti a gigabájtokat.

Mindkettő friss másolatot készít abban a pillanatban, amikor megnyomja a gombot, streameli, majd utána törli a szerveren lévő másolatot — a letöltés nem arról szól, hogy „hozzuk le a fájlt, amit az exportálás gomb korábban készített”.

Egy pillanatkép-archívum kicsomagolása pontosan a pillanatkép elrendezését állítja elő, és éppen ez teszi a visszaállítását egy egyszerű visszamásolássá.

Munkaterület áthelyezése másik telepítésre

Szekció neve “Munkaterület áthelyezése másik telepítésre”

Egy munkaterület egy adatbázisfájl, így az átadása fájlművelet.

  1. A forrás szerveren a Beállítások → Szerver → Biztonsági mentés és visszaállítás → Munkaterület adatai alatt nyissa le a munkaterületet, és nyomja meg a Letöltés gombot.
  2. A cél szerveren hozza létre (vagy válassza ki) azt a munkaterületet, amely fogadni fogja.
  3. Nyissa le azt a munkaterületet, és a Visszaállítás erről az eszközről alatt nyomja meg a Fájl választása és feltöltése gombot. Válassza ki a letöltött .db fájlt.

Ha mindkét szerver az a gép, amely előtt ül, a Mentés a szerverre, valamint az Importálás → Fájl kiválasztása ugyanezt teszi meg a körút nélkül; az importálási párbeszédablak útvonalai a szervergépen oldódnak fel.

Két dolgot inkább engedélyezünk és naplózunk, mintsem megtagadnánk: egy olyan fájl importálását, amelynek rögzített munkaterület-azonosítója eltér a célétól (így lehet duplikálni egy munkaterületet, vagy új azonosító alatt visszaállítani), és egy másik telepítésből származó fájl importálását. Ez utóbbi esetben a fájl párosított eszközei és felhasználói azonosítói ahhoz a telepítéshez tartoznak, ahonnan származik, és ezen nem fognak feloldódni — a munkaterület saját adatai sértetlenek, de az átvétel után ellenőrizze újra a tagságot.

A csevegőbot-tokenek az adatbázis mellett élnek, nem benne, így egy másnak átadott munkaterület nem visz magával élő hitelesítő adatokat. A fogadó telepítés újracsatlakoztatja a sajátjait.

Egy munkaterület visszaállítása pillanatképből

Szekció neve “Egy munkaterület visszaállítása pillanatképből”
  1. A Telepítési pillanatképek alatt nyissa le a kívánt pillanatképet.
  2. Keresse meg a munkaterület sorát, és nyomja meg a Visszaállítás gombot.
  3. Erősítse meg. Minden elveszik, amit az a munkaterület a pillanatkép elkészítése óta tett.

Ez ugyanaz a művelet, mint az importálás, csak a pillanatképben lévő másolatára irányítva annak a munkaterületnek a fájljának — szándékosan, hogy ne legyen egy második mechanizmus, amely ugyanazt a fájlt másképp kezelné.

Egy sor azt mondhatja, hogy Már nincs ezen a szerveren, és a Visszaállítás letiltva van: a pillanatkép olyan munkaterületet tartalmaz, amellyel ez a telepítés már nem rendelkezik. Hozza vissza kézzel — hozzon létre egy munkaterületet, majd a Munkaterület adatai alatt importáljon bele a <snapshot path>/<old workspace id>/workspace.db útvonalról. A lenyitott pillanatkép egy másolható mezőben mutatja a saját Útvonal a szerveren értékét, a sor címe pedig a régi munkaterület-azonosító, így az útvonal mindkét fele Ön előtt van.

Erre nincs gomb, és nem is kell lennie: lecseréli azokat az adatbázisokat, amelyeket a futó szerver nyitva tart.

  1. Állítsa le a cc_server-t. Ha az asztali alkalmazást a beágyazott szerverével futtatja, lépjen ki az alkalmazásból.

  2. Másolja a pillanatkép tartalmát az adatkönyvtárra. A pillanatkép elrendezése tükrözi az élőét, így ez egy egyszerű másolás:

    Terminál
    # macOS default; see the CLI reference for other platforms
    DATA_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"/*/; do
    id=$(basename "$d")
    mkdir -p "$DATA_DIR/$id"
    cp "$d/workspace.db" "$DATA_DIR/$id/workspace.db"
    done
  3. Törölje a kicserélt adatbázisok mellett lévő -wal és -shm fájlokat. A régi fájlokhoz tartoznak, és egy elavult ilyen fájl egy visszaállított adatbázis mellett adatkorrupciós kockázat.

  4. Indítsa újra a szervert.

A pillanatkép nem tartalmaz secrets.json-t, ezért egy friss gazdagépre visszaállított telepítés megőrzi az adatait, de a hitelesítő adatait nem: a párosított eszközöket, a szolgáltatói tokeneket és az SSO-beállításokat újra létre kell hozni, vagy vissza kell állítani onnan, ahol azt a fájlt tartotta. Ha ugyanarra a gazdagépre állítja vissza, ahol a secrets.json sosem veszett el, minden megmarad.

Biztonsági mentések másolása a gépen kívülre

Szekció neve “Biztonsági mentések másolása a gépen kívülre”

Egy pillanatkép ugyanazon a lemezen, mint az adatbázis, amit másolt, a rossz importálás ellen véd, a lemez ellen nem. A Control Center semmit nem szállít el máshová, így ez a rész az Öné.

A pillanatképek írás után megváltoztathatatlanok, és időbélyegről kapnak nevet, így bármely szinkronizáló eszköz jól kezeli őket. Zárja ki a transfer/ mappát, amely a folyamatban lévő letöltések és feltöltések munkapadja:

Terminál
DATA_DIR="$HOME/Library/Application Support/control-center"
# To another host over ssh
rsync -a --delete --exclude 'transfer/' \
"$DATA_DIR/backups/" backup-host:/srv/control-center-backups/
# To object storage
aws s3 sync --exclude 'transfer/*' \
"$DATA_DIR/backups/" s3://my-bucket/control-center/backups/
# Or with deduplication, encryption and its own retention
restic backup --exclude 'transfer' "$DATA_DIR/backups"

A --delete a helyi törléseket tükrözi a távolira. Hagyja el, ha azt szeretné, hogy a távoli hosszabb ideig őrizze a pillanatképeket, mint a gazdagép.

Annak belefoglalása, amit egy pillanatkép kihagy

Szekció neve “Annak belefoglalása, amit egy pillanatkép kihagy”

Ahhoz, hogy a telepítést újra fel tudja építeni, ne csak az adatait, ezeket is másolja. Ezek közönséges fájlok, a szerver futása közben is biztonságosan másolhatók:

Terminál
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/

A secrets.json jogosultsága 0600, és a telepítés összes párosítási kulcsát, szolgáltatói hitelesítő adatát és SSO-beállítását tartalmazza. Bárhová is kerül, legalább olyan jól védettnek kell lennie, mint a szervergép — titkosítva tárolva, és nem olyan bucketben, amelyet bárki más olvashat.

Hagyja ki a spaces/ (copy-on-write worktree-k, a repói alapján újra létrehozva), a pr_clones/ (gyorsítótár), a models/ (újra letöltve), a media_cache/ és a rigs/ (gépállapot, és nagy) mappákat. A meetings/ alatti rögzített megbeszélés-hanganyagot érdemes belefoglalni, ha vezet megbeszéléseket.

Teljes telepítési pillanatkép ütemezése az alkalmazáson kívül

Szekció neve “Teljes telepítési pillanatkép ütemezése az alkalmazáson kívül”

A beépített pipeline csak egy munkaterületet ment. Egy felügyelet nélküli teljes telepítési pillanatképhez nincs CLI-alparancs, a pillanatkép-RPC pedig egy párosított teljes klienst igényel, amely a telepítés tulajdonosa. Egy gazdagépoldali időzítő a VACUUM INTO utasítást használhatja az élő adatbázisokon:

#!/usr/bin/env bash
set -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

Ugyanazzal a felhasználóval futtassa, aki az adatkönyvtár tulajdonosa, cronból vagy systemd időzítőből, majd utána szinkronizálja a DEST-et a gazdagépről. A VACUUM INTO SQLite 3.27-es vagy újabb verziót igényel.

A <dataDir>/backups/ könyvtáron kívülre írja. Egy kézzel készített könyvtárnak ott nincs manifest.json-ja, így az alkalmazás hiányos pillanatképként listázná, és a lista megszűnne annak őszinte nyilvántartása lenni, amit maga a szerver készített.

A régi teljes telepítési pillanatképek ritkítása

Szekció neve “A régi teljes telepítési pillanatképek ritkítása”

Az alkalmazásban egyenként törölheti a telepítési pillanatképeket. Egy gazdagépoldali megőrzési szabályzathoz tartsa külön a munkaterület-mentési könyvtárat a telepítési pillanatképektől:

Terminál
find "$DATA_DIR/backups" -mindepth 1 -maxdepth 1 -type d \
! -name exports ! -name transfer ! -name workspace-backups \
-mtime +30 -exec rm -rf {} +

A -exec hozzáadása előtt ellenőrizze egy -print futtatás kimenetét. Tartson meg többet: a hiba, ami ellen védekezik, gyakran az, hogy „a legutóbbi mentésnek is megvan a problémája”.

Annak ellenőrzése, hogy egy biztonsági mentés jó-e

Szekció neve “Annak ellenőrzése, hogy egy biztonsági mentés jó-e”

Egy mentés, amit senki nem állított vissza, csak egy hipotézis.

Olcsó ellenőrzés — a fájl megnyílik, és az oldalai sértetlenek:

Terminál
sqlite3 "$SNAPSHOT/global.db" 'PRAGMA integrity_check;' # expects: ok

Valódi ellenőrzés — vegye át. Hozzon létre egy eldobható munkaterületet egy nem éles telepítésen, importáljon bele egy munkaterület-fájlt, és nézze meg, hogy ott vannak-e a várt terek, jegyek és üzenetek. Ez ugyanazt az utat járja be, mint egy valódi visszaállítás, beleértve az FTS újraépítését is, és ez az egyetlen ellenőrzés, amely megmondja, hogy a mentés visszaállítható, nem csupán olvasható.

Ezt egyszer tegye meg, amikor beállítja a mentéseket, és újra, amikor megváltoztatja, hogy hol tárolódnak.

Tünet Ok és megoldás
A letöltési és feltöltési vezérlők le vannak tiltva, egy relére vonatkozó megjegyzéssel A közvetített relén keresztül csatlakozik, amely nem visz fájlátvitelt. Csatlakozzon közvetlenül
„A szerver elutasította” Szerep. Egy telepítési pillanatkép készítéséhez vagy listázásához a telepítés üzemeltetője kell. Egy munkaterület letöltéséhez admin, a visszaállításához tulajdonos, egy teljes pillanatkép-ziphez a telepítés üzemeltetője kell
„Ennek a szervernek nincs biztonsági mentési felülete” A gazdagépen nincs bekötve mentési port — ez egy demószerver. A műveletek hiányoznak, nem pedig megtagadottak
„A fájl nagyobb, mint amit a szerver elfogad” A feltöltéseket 8 GiB-re korlátozzuk. Tegye a fájlt a szervergépre, és használja helyette az Importálás → Fájl kiválasztása lehetőséget
Az importálás elutasítva: nem Control Center munkaterület-adatbázis A fájlban nincs workspace_meta sor — ez nem munkaterület-export, vagy csonka. Semmi nem lett lecserélve
Egy pillanatkép Hiányos állapotban szerepel a listán A manifestje hiányzik, vagy nem létező fájlokat nevez meg. Készítsen egy újat; addig egyenként vegye át belőle a munkaterület-fájlokat
Egy pillanatkép szerint munkaterületek nem kerültek rögzítésre Azokat a munkaterületeket soha nem írták, vagy a másolásuk meghiúsult. Nézze meg a szervernaplót
Egy visszaállított telepítésből hiányoznak a forge- és SSO-hitelesítő adatok A secrets.json nincs benne egy pillanatképben sem. Állítsa vissza onnan, ahol tartotta, vagy csatlakoztassa újra a szolgáltatókat
Egy visszaállított munkaterületből hiányoznak a beillesztett képek A blobok az adatbázis mellett élnek, nem benne. Másolja át a <workspaceId>/blobs/ mappát is