Säkerhetskopiera och återställ
Den här guiden täcker de fem saker folk faktiskt gör med säkerhetskopior: tar en, hämtar hem den, flyttar en arbetsyta, lägger tillbaka en och förvarar kopior utanför maskinen. Den exakta formen på varje artefakt och operation finns i referensen för säkerhetskopia.
Allt här finns under Inställningar → Server → Säkerhetskopiering och återställning.
Förutsättningar
Avsnitt med rubriken “Förutsättningar”- En fullständig klient – skrivbordsappen eller webbappen. En parkopplad telefon kan inte starta något av detta, och det är avsiktligt.
- För att ta, lista, hämta eller radera en ögonblicksbild av installationen: installationens ägare.
- För åtgärder per arbetsyta: admin för arbetsytan att exportera, ägare att importera eller radera den.
- För hämtningar och uppladdningar: en direkt anslutning till servern. Det förmedlade reläet transporterar RPC-ramar, inte filöverföringar, och överföringskontrollerna inaktiverar sig själva med en notis när du är på ett.
Vad en säkerhetskopia omfattar
Avsnitt med rubriken “Vad en säkerhetskopia omfattar”Båda artefakterna är enbart databaser:
- En ögonblicksbild av installationen är en katalog med tidsstämpel:
manifest.json,global.dboch en<workspaceId>/workspace.dbper arbetsyta. - En arbetsytaexport är just den enda filen
workspace.db.
Ingen av dem tar med resten av datakatalogen: secrets.json (parkopplingsnycklar,
leverantörsuppgifter, SSO), en arbetsytas blobs/ (bilder som klistrats in i
meddelanden), skills/, agents/, chat_credentials/, inspelat mötesljud eller
rig-bilder. En del av det är umbärligt och en del inte – den
fullständiga tabellen finns i referensen,
och det är vad avsnittet om utanför maskinen handlar om.
Ta en ögonblicksbild av hela installationen
Avsnitt med rubriken “Ta en ögonblicksbild av hela installationen”- Öppna Inställningar → Server → Säkerhetskopiering och återställning.
- Under Installationsögonblicksbilder trycker du på Säkerhetskopiera nu.
- Notisen anger katalogen som skrevs, på servervärden. Den nya ögonblicksbilden visas högst upp i listan.
Servern fortsätter köra hela tiden. Varje fil skrivs med VACUUM INTO, som är
konsekvent mot en levande databas, så det behövs inget underhållsfönster och inga
agenter behöver stoppas.
Varje rad i listan visar tidsstämpeln, storleken på disken, hur många arbetsytor som fångades och om ögonblicksbilden är Komplett eller Ofullständig. Ofullständig betyder att manifestet saknas eller anger filer som inte finns – en säkerhetskopia som avbröts av en krasch eller en full disk. De listas fortfarande med avsikt: en ögonblicksbild du inte kan se är en du tror att du har. En ofullständig ögonblicksbild kan inte återställa en hel installation, men de arbetsytefiler den ändå innehåller kan fortfarande tas över en i taget.
En rad kan också säga n arbetsytor inte fångade. Det är en arbetsyta som är registrerad men aldrig har skrivits till (det finns ingen fil ännu), eller en vars kopia misslyckades – kontrollera serverloggen.
Schemalägg säkerhetskopior av arbetsytan och bevarande
Avsnitt med rubriken “Schemalägg säkerhetskopior av arbetsytan och bevarande”Öppna Inställningar → Pipelines → Pipelinemallar för arbetsytan och leta upp Workspace backup. Dess aktiverade schema körs varje söndag kl. 03:00 UTC: Back up workspace, följt av Delete backups older than (30 dagar som standard). Den andra noden körs bara efter att säkerhetskopieringen har lyckats. Du kan ändra bevarandedagarna på noden eller stänga av schemat. Om servern är offline vid den schemalagda tiden tar schemat igen en gång när den är tillbaka, i stället för att spela upp varje missad vecka.
Säkerhetskopior av arbetsytan ligger på servern under
backups/workspace-backups/<workspaceId>/<timestamp>/workspace.db. Bevarandenoden
raderar bara gamla säkerhetskopior för den här arbetsytan; den raderar aldrig
ögonblicksbilder av installationen eller säkerhetskopior för andra arbetsytor. De här
filerna är enbart databasen. För bevarande utanför maskinen kopierar du dem separat.
De här säkerhetskopiorna är åtskilda från listan Installationsögonblicksbilder.
För att återställa en använder du Arbetsytedata → Importera med
säkerhetskopians workspace.db-sökväg på serversidan. Importen ersätter arbetsytans
aktuella databas, så exportera den först om du kan behöva ångra återställningen.
Radera en ögonblicksbild av installationen
Avsnitt med rubriken “Radera en ögonblicksbild av installationen”Under Installationsögonblicksbilder fäller du ut ögonblicksbilden, även en ofullständig, och använder Radera ögonblicksbild i faroavsnittet. Bekräfta namnet. Hela katalogen för ögonblicksbilden tas bort permanent från servern; hämta den först om du behöver en kopia. En pipeline för säkerhetskopiering av arbetsytan raderar aldrig dessa ögonblicksbilder.
Hämta en kopia till din egen maskin
Avsnitt med rubriken “Hämta en kopia till din egen maskin”Sökvägarna som sidan visar finns på maskinen som kör cc_server. När det inte är
maskinen du sitter vid använder du knapparna Hämta:
- Bredvid varje arbetsyta under Arbetsytedata → Hämta, för en
.db-fil. - Bredvid varje ögonblicksbild under Installationsögonblicksbilder → Hämta, för hela ögonblicksbilden som en
.zip.
I skrivbordsappen väljer du var filen hamnar och notisen anger den; i webbappen går den till webbläsarens hämtningar. I båda fallen rapporterar båda förloppet i byte, eftersom det här är de två nyttolaster som kan uppgå till gigabyte.
Båda skapar en färsk kopia i samma stund du trycker på knappen, strömmar den och raderar serverns kopia efteråt – en hämtning är inte “hämta filen som exportknappen skapade tidigare”.
Att packa upp ett arkiv med en ögonblicksbild återskapar ögonblicksbildens layout exakt, vilket är det som gör att återställningen blir en tillbakakopiering.
Flytta en arbetsyta till en annan installation
Avsnitt med rubriken “Flytta en arbetsyta till en annan installation”En arbetsyta är en databasfil, så överlämningen är en filoperation.
- På källservern: Inställningar → Server → Säkerhetskopiering och återställning → Arbetsytedata, fäll ut arbetsytan och tryck på Hämta.
- På målservern skapar du (eller väljer) arbetsytan som ska ta emot den.
- Fäll ut den arbetsytan och tryck på Välj en fil och ladda upp under Återställ från den här enheten. Välj den
.dbdu hämtade.
Om båda servrarna är samma maskin som du sitter vid gör Spara på servern plus Importera → Välj fil samma sak utan omvägen; sökvägarna i importdialogen löses upp på servervärden.
Två saker tillåts och loggas i stället för att avvisas: att importera en fil vars registrerade arbetsyte-id skiljer sig från målets (så här duplicerar du en arbetsyta eller återställer den under ett nytt id), och att importera en fil från en annan installation. I det andra fallet tillhör filens parkopplade enheter och användar-id:n installationen den kom från och löses inte upp i den här – arbetsytans egna data är intakta, men kontrollera medlemskapet igen efter att du tagit över den.
Chattbottens tokens ligger bredvid databasen, inte i den, så en arbetsyta du lämnar till någon annan bär inga levande uppgifter. Den mottagande installationen återansluter sina egna.
Återställ en arbetsyta från en ögonblicksbild
Avsnitt med rubriken “Återställ en arbetsyta från en ögonblicksbild”- Under Installationsögonblicksbilder fäller du ut ögonblicksbilden du vill ha.
- Leta upp arbetsytans rad och tryck på Återställ.
- Bekräfta. Allt arbetsytan har gjort sedan ögonblicksbilden togs går förlorat.
Det här är samma operation som en import, riktad mot ögonblicksbildens kopia av arbetsytans fil – med avsikt, så att det inte finns någon andra mekanism som skulle kunna behandla samma fil annorlunda.
En rad kan säga Inte på den här servern längre, med Återställ inaktiverat:
ögonblicksbilden innehåller en arbetsyta som den här installationen inte längre har. Ta
tillbaka den för hand – skapa en arbetsyta och importera sedan in i den under
Arbetsytedata från <snapshot path>/<old workspace id>/workspace.db. Den utfällda
ögonblicksbilden visar sin egen Sökväg på servern i ett kopieringsfält, och radens
titel är det gamla arbetsyte-id:t, så du har båda halvorna av sökvägen framför dig.
Återställ en hel installation
Avsnitt med rubriken “Återställ en hel installation”Det finns ingen knapp för det här, och det bör det inte göra heller: den ersätter de databaser som den körande servern håller öppna.
-
Stoppa
cc_server. Om du kör skrivbordsappen med dess inbäddade server stänger du av appen. -
Kopiera ögonblicksbildens innehåll över datakatalogen. Ögonblicksbildens layout speglar den levande, så det här är en vanlig kopiering:
Terminalfönster # 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 -
Radera alla
-wal- och-shm-filer som ligger bredvid databaserna du ersatte. De tillhör de gamla filerna, och en inaktuell sådan bredvid en återställd databas är en risk för korruption. -
Starta servern igen.
Ögonblicksbilden innehåller ingen secrets.json, så en installation som återställs på
en färsk värd behåller sina data men inte sina uppgifter: parkopplade enheter,
leverantörstokens och SSO-inställningar måste återupprättas, eller återställas från var
du än förvarade den filen. En återställning på samma värd, där secrets.json aldrig
förlorades, behåller allt.
Kopiera säkerhetskopior bort från maskinen
Avsnitt med rubriken “Kopiera säkerhetskopior bort från maskinen”En ögonblicksbild på samma disk som databasen den kopierade skyddar dig mot en dålig import, inte mot disken. Inget i Control Center skickar någon kopia någonstans, så den här delen är din.
Synkronisera ögonblicksbilderna
Avsnitt med rubriken “Synkronisera ögonblicksbilderna”Ögonblicksbilder är oföränderliga när de väl har skrivits och namnges efter tidsstämpel,
så alla synkverktyg hanterar dem bra. Uteslut transfer/, som är en arbetsbänk för
pågående hämtningar och uppladdningar:
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 speglar din lokala rensning till fjärren. Hoppa över det om du vill att
fjärren behåller ögonblicksbilder längre än värden gör.
Ta med det en ögonblicksbild lämnar utanför
Avsnitt med rubriken “Ta med det en ögonblicksbild lämnar utanför”För att kunna bygga upp installationen igen och inte bara dess data kopierar du även dessa. De är vanliga filer, säkra att kopiera medan servern kör:
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 har behörigheten 0600 och innehåller varje parkopplingsnyckel,
leverantörsuppgift och SSO-inställning i installationen. Var den än hamnar måste den
vara minst lika skyddad som servervärden – krypterad i vila och inte en bucket som
någon annan kan läsa.
Hoppa över spaces/ (copy-on-write-worktrees som återetableras från dina repos),
pr_clones/ (en cache), models/ (hämtas igen), media_cache/ och rigs/
(maskintillstånd, och stora). Inspelat mötesljud under meetings/ är värt att ta med om
du behåller möten.
Schemalägg en ögonblicksbild av hela installationen utanför appen
Avsnitt med rubriken “Schemalägg en ögonblicksbild av hela installationen utanför appen”Den inbyggda pipelinen säkerhetskopierar bara en arbetsyta. För en obevakad
ögonblicksbild av hela installationen finns det inget CLI-underkommando, och
RPC-anropet för ögonblicksbilder kräver en parkopplad fullständig klient som är
installationens ägare. En timer på värdsidan kan använda VACUUM INTO mot de levande
databaserna:
#!/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'"doneKör den som samma användare som äger datakatalogen, från cron eller en systemd-timer,
och synkronisera DEST bort från värden efteråt. VACUUM INTO kräver SQLite 3.27 eller
nyare.
Skriv den utanför <dataDir>/backups/. En handgjord katalog där har inget
manifest.json, så appen skulle lista den som en ofullständig ögonblicksbild och listan
skulle sluta vara en ärlig redogörelse för vad servern själv har skapat.
Rensa gamla ögonblicksbilder av hela installationen
Avsnitt med rubriken “Rensa gamla ögonblicksbilder av hela installationen”Du kan radera enskilda ögonblicksbilder av installationen i appen. För en bevarandepolicy på värdsidan håller du katalogen för arbetsytans säkerhetskopior åtskild från ögonblicksbilderna av installationen:
find "$DATA_DIR/backups" -mindepth 1 -maxdepth 1 -type d \ ! -name exports ! -name transfer ! -name workspace-backups \ -mtime +30 -exec rm -rf {} +Kontrollera utdata från en körning med -print innan du lägger till -exec. Behåll mer
än en: felet du skyddar dig mot är ofta “även den senaste säkerhetskopian har problemet”.
Kontrollera att en säkerhetskopia är bra
Avsnitt med rubriken “Kontrollera att en säkerhetskopia är bra”En säkerhetskopia som ingen har återställt är en hypotes.
Billig kontroll – filen öppnas och dess sidor är intakta:
sqlite3 "$SNAPSHOT/global.db" 'PRAGMA integrity_check;' # expects: okRiktig kontroll – ta över den. Skapa en tillfällig arbetsyta i en icke-produktiv installation, importera en arbetsytefil till den och se efter om ytorna, ärendena och meddelandena du förväntar dig finns där. Det övar samma väg som en riktig återställning tar, inklusive FTS-ombyggnaden, och det är den enda kontrollen som säger att säkerhetskopian går att återställa och inte bara att läsa.
Gör det här en gång när du ställer in säkerhetskopior, och igen varje gång du ändrar var de lagras.
Felsökning
Avsnitt med rubriken “Felsökning”| Symtom | Orsak och åtgärd |
|---|---|
| Kontrollerna för hämtning och uppladdning är inaktiverade med en notis om ett relä | Du är ansluten via det förmedlade reläet, som inte transporterar några filöverföringar. Anslut direkt |
| “Servern nekade” | Roll. Att ta eller lista en ögonblicksbild av installationen kräver installationens operatör. Att hämta en arbetsyta kräver admin, att återställa en kräver ägare, en zip för hela ögonblicksbilden kräver installationens operatör |
| “Den här servern har ingen säkerhetskopieringsyta” | Värden har ingen säkerhetskopieringsport inkopplad – en demoserver. Operationerna saknas i stället för att nekas |
| “Filen är större än vad servern accepterar” | Uppladdningar är begränsade till 8 GiB. Lägg filen på servervärden och använd Importera → Välj fil i stället |
| Import nekad: inte en arbetsytedatabas från Control Center | Filen har ingen workspace_meta-rad – den är inte en arbetsytaexport, eller så är den trunkerad. Inget ersattes |
| En ögonblicksbild listas som Ofullständig | Dess manifest saknas eller anger filer som inte finns. Ta en ny; ta under tiden över enskilda arbetsytefiler från den |
| En ögonblicksbild säger att arbetsytor inte fångades | De arbetsytorna har aldrig skrivits till, eller så misslyckades deras kopia. Kontrollera serverloggen |
| En återställd installation har inga uppgifter för kodvärd eller SSO | secrets.json finns inte i en ögonblicksbild. Återställ den från var du än förvarade den, eller återanslut leverantörerna |
| En återställd arbetsyta saknar inklistrade bilder | Blobs ligger bredvid databasen, inte i den. Kopiera <workspaceId>/blobs/ också |
Relaterade guider
Avsnitt med rubriken “Relaterade guider”- Kör en headless-server: varifrån datakatalogen kommer
- Anslut till en fjärrserver: direkta anslutningar kontra anslutningar via relä
- Para en enhet: uppgiften som överföringsrutterna signerar med
Relaterade koncept och referens
Avsnitt med rubriken “Relaterade koncept och referens”- Säkerhetskopia, export och import: varje operation, rutt, fält och gräns
- Arbetsytor och isolering: varför en arbetsyta är en fil
cc_serverCLI: datakatalogens layout