Makefile-alapú mentési rendszer a Docker-adatbázisainkhoz és a Gitea-repókhoz: SQL-dumpok, git-tükrök, megőrzési takarítás és távoli rsync.
Környezeti változók a Makefile-ban:
| Változó | Jelentés |
|---|---|
BACKUP_BASE |
Minden mentés gyökere (alapérték /srv/backup) |
BACKUP_KEEP_DAYS |
Az adatbázisdumpok megőrzési ideje (alapérték 7) |
DATABASE_BACKUP_BASE |
Ide kerülnek az SQL-dumpok |
REPOSITORY_BACKUP_BASE |
Ide kerülnek a tükrözött repók |
GITEA_TOKEN |
API-token a repók listázásához |
RSYNC_* |
Távoli célpont: hoszt, felhasználó, port, útvonal |
export GITEA_TOKEN="your_token_here"
make backup # db dumps -> repos -> db_cleanup -> sync
make db_redmine db_wiki db_catalog # csak az adatbázisok
make repos # a git-tükrök frissítése
make db_cleanup # a lejárt dumpok törlése
Minden dump a szolgáltatás konténerén belül futtat egy szkriptet. A dumpok időbélyeggel a konténer /db_backup könyvtárába kerülnek, amelyet a hoszt DATABASE_BACKUP_BASE könyvtárára kell csatolni.
| Szolgáltatás | Szkript | Mire van szükség a konténerben |
|---|---|---|
| Redmine (MariaDB) | database/mariadb_backup.sh |
MARIADB_USER, MARIADB_PASSWORD, MARIADB_DATABASE |
| Wiki (PostgreSQL) | database/pg_backup.sh |
POSTGRES_USER, POSTGRES_DB |
| Katalógus (MySQL) | database/mysql_backup.sh |
MYSQL_ROOT_PASSWORD, MYSQL_DATABASE |
A make repos a Gitea API-ból kilistázza az összes privát és publikus repót, majd repónként: fetch --all --prune + pull, ha helyben már megvan, git clone, ha még nincs.
A make db_cleanup adatbázis-előtag szerint csoportosítja a dumpokat, és törli a BACKUP_KEEP_DAYS-nél régebbi fájlokat. Egy biztonsági ellenőrzés adatbázisonként legalább egy mentést mindig meghagy, akkor is, ha az régebbi a megőrzési ablaknál.
A make sync a DATABASE_BACKUP_BASE és a REPOSITORY_BACKUP_BASE tartalmát rsyncelli a távoli szerverre SSH-n, egyedi porttal és állítható távoli rsync útvonallal.
.
├── Makefile # minden mentési feladat
├── DOCS.md
└── database/
├── mariadb_backup.sh
├── mysql_backup.sh
└── pg_backup.sh
BACKUP_BASE=/srv/backup esetén:
/srv/backup/
├── database/
│ ├── redmine-2026-03-07-12-00.sql
│ ├── wiki-2026-03-07-12-00.sql
│ └── catalog-2026-03-07-12-00.sql
└── repositories/
├── project-a/.git/
└── project-b/.git/
https://git.teletypegames.org/infra/backup-scripts