Varmuuskopiointi & Palautus
Kaikki, mitä Conzent tallentaa, sijaitsee Docker-tiloissa ja yhdessä konfigurointitiedostossa. Tämä sivu käsittelee, mitä kannattaa varmuuskopioida, miten automatisoida se ja miten saada kaikki takaisin.
Mikä oikeasti pitää tietosi
Docker Compose luo viisi nimettyä tilaa. Vain kaksi sisältää asioita, joita et voi rakentaa uudelleen.
| Volyymi / tiedosto | Sisältö | Varmuuskopioidaanko? |
|---|---|---|
oci-db-data | MariaDB: sivustot, bannerit, suostumuslokit, evästeiden kategoriat, politiikat, käyttäjät, skannausresultaatit | Kyllä — tämä on kaikki |
app-sites-data | Generoidut suostumusohjeet | Kyllä, vaikka voitaisiin uudelleen generoida |
.env | Tietokannan salasana, skannerin avain, kolmannen osapuolen tunnistetiedot | Kyllä — korvaamaton |
app-public | Rakennetut CSS/JS-resurssit | Ei — rakennetaan uudelleen kuvasta |
app-var | Välimuisti ja lokit | Ei |
oci-redis-data | Istunnot, työjonot, beacon-puskuri | Ei — ohimenevä suunnittelun vuoksi |
scripts/backup.sh tallentaa tarkalleen ensimmäiset kolme, plus .conzent-credentials, jos se vielä on olemassa.
Suostumusohjeet sisältyvät, koska niiden palauttaminen pitää aktiiviset bannerit toiminnassa palautuksen ja uudelleen generoinnin välisenä aikana — mutta ne eivät ole totuuden lähde. Jos ne katoavat kokonaan, php bin/oci scripts:regenerate rakentaa jokaisen uudelleen tietokannasta.
Varmuuskopion ottaminen
bash scripts/backup.sh
Se kirjoittaa backups/conzent-YYYYmmdd-HHMMSS.tar.gz, joka sisältää täydellisen tietokannan dumpin, generoidut suostumusohjeet, sinun .env:si ja manifestin, joka tallentaa, milloin se otettiin ja mistä APP_URL:sta.
bash scripts/backup.sh --output /mnt/backups # kirjoita johonkin muuhun paikkaan
bash scripts/backup.sh --keep 14 # pidä vain 14 uusinta arkistoa
Dumpissa käytetään --single-transaction, joten InnoDB-taulut tallennetaan johdonmukaisesti ilman kirjoitusten estämistä. Ei ole tarpeen pysäyttää sovellusta ensin.
Arkisto sisältää tietokannan ja salaisuutesi. Se kirjoitetaan tilassa 600. Käsittele sitä kuin salasana-tiedostoa: säilytä se palvelimen ulkopuolella ja salaa se, jos se päätyy jaettuun paikkaan.
Automatisointi
Yöaikainen varmuuskopiointi klo 03:00, pitäen kaksi viikkoa:
0 3 * * * cd /path/to/conzent && /bin/bash scripts/backup.sh --keep 14 >> /var/log/conzent-backup.log 2>&1
Käytä asennushakemiston absoluuttista polkua — cron ei peri shellisi työskentelyhakemistoa.
Varmuuskopiointi samalla levyllä kuin tietokanta ei ole varmuuskopiointi. Lisää ulkoista vaihetta:
15 3 * * * rsync -az /path/to/conzent/backups/ backup-host:/srv/conzent-backups/
Salaa ennen kuin se lähtee, jos kohde ei ole sinun: gpg --symmetric --cipher-algo AES256 backups/conzent-....tar.gz.
Palauttaminen
bash scripts/restore.sh backups/conzent-20260722-030000.tar.gz --yes
--yes on pakollinen — palautus korvataan nykyinen tietokanta suoraan. Mitä se tekee, järjestyksessä:
- Purkaa ja validoi arkisto, tulosta sen manifesti.
- Pysäyttää sovellusastiat, jättäen MariaDB:n toimimaan.
- Tuontaa dumpin tietokantaan, jonka nimi on sinun nykyisessä
.env:ssä. - Palauttaa suostumusohjeet-tilan.
- Käynnistää kaiken uudelleen.
- Suorittaa
migrations:migrate, jotta vanhempi arkisto päivitetään tämän version odottamaan skeemaan. - Suorittaa
scripts:regenerate, jotta ohjeet rakennetaan uudelleen sinun nykyisenAPP_URL:n mukaan, ei arkistossa olevan mukaan. - Tyhjentää Redis.
Vaiheet 6 ja 7 ovat syy siihen, miksi varmuuskopio, joka on otettu old-domain.com:sta, palautuu puhtaasti asennukseen, joka nyt palvelee consent.example.com:ta.
Oletusarvoisesti nykyinen .env jätetään rauhaan. Jos haluat ottaa myös arkiston version, lisää --restore-env; edellinen tiedostosi säilytetään nimellä .env.before-restore-<timestamp>. Käytä sitä, kun rakennat kadonnutta palvelinta, ei kun palautat tietoja toimivasta — arkistoitu DB_PASSWORD ei vastaa tuoreesti alustettua tietokantaa.
Palvelimen rakentaminen alusta alkaen
# 1. Tuore asennus uudelle koneelle
curl -sSL https://getconzent.com/install | sh -s -- --domain consent.example.com
# 2. Kopioi arkisto
scp backups/conzent-20260722-030000.tar.gz newhost:/root/conzent/
# 3. Palauta tiedot ja konfiguraatio
cd /root/conzent
bash scripts/restore.sh conzent-20260722-030000.tar.gz --yes --restore-env
# 4. Jos domaini muuttui, aseta se ja regeneroi
sed -i 's|^APP_URL=.*|APP_URL=https://consent.example.com|' .env
docker compose up -d
docker compose exec app php bin/oci scripts:regenerate
Suorita palautusharjoitus
Testaamaton varmuuskopio on arvailua. Tee tämä kerran, ennen kuin tarvitset sitä:
- Huomaa sivuston nimi, sen banneriasetukset ja tämän päivän suostumuslokimäärä.
- Ota varmuuskopio.
- Erillisellä koneella tai VM:llä, asenna tuore ja palauta arkisto.
- Kirjaudu sisään ja varmista, että sivusto, bannerikonfiguraatio ja suostumuslokit ovat kaikki siellä.
- Lataa sivu, joka sisältää kyseisen sivuston upotuksen, ja tarkista, että banneri renderöityy edelleen.
Kymmenen minuuttia nyt, verrattuna aukon löytämiseen onnettomuuden aikana.
Ennen jokaista päivitystä
Päivitykset säilyttävät tietokannan, mutta ota silti varmuuskopio ensin — migraatio on ainoa asia, jota palautus ei voi peruuttaa:
bash scripts/backup.sh --keep 14 && bash scripts/install.sh --update
Täydellinen viittaus löytyy koodista: docs/backup-restore.md GitHubissa.