Gogs backup und restore
How to backup, restore and migrate
Gogs ist einfach zu betreiben. Wenn man nun auch mal ein Backup machen möchte ohne die Daten einzeln zu sichern (git repos und DB) dann gibt es von gogs selbst auch die Möglichkeit ein Backuppaket zu erstellen. Dies ist leider nicht in der offiziellen Doku zu finden.
How to backup, restore and migrate
Other than pack up gogs-repositories, custom and database separately, Gogs provides two commands for unified process
of backup, restore and even migrate to another database engine.
Beispielhaft würde das so ablaufen:
./gogs backup
./gogs restore --from="gogs-backup-xxx.zip"
Hinweis:
Mir ist aufgefallen das dieses Backup leider nicht die ssh keys aus dem $HOME Verzeichnis des ssh users mit nimmt. Daher ist diese Art von Backup für laufende sehr nützlich aber als vollständiges Backup sollte das komplette Installationsverzeichnis, Userordner des ssh users sowie die Datenbank gesichert werden.
Kopie der Beschreibung da Original nicht mehr vorhanden:
Backup
Go to the directory where your Gogs binary is located, and execute following command:
./gogs backup
Without any flags, backup command will pack up all gogs-repositories, custom and database into a single zip archive (e.g. gogs-backup-xxx.zip) under current directory. It could be a bad idea if your gogs-repositories contains GB of raw data, in that case, you can apply –exclude-repos flag:
./gogs backup --exclude-repos
If your custom/conf/app.ini is somewhere unusual, make sure you specify it via –config flag like always:
./gogs backup --config=my/custom/conf/app.ini
Database
If you’re only interested in backup database, or want to migrate from one database engine (e.g. SQLite3) to another engine (e.g. MySQL), –database-only is your friend:
./gogs backup --database-only
The backup format of database are portable JSON files, each file corresponds to a database table, you can do whatever you want with those files.
Restore
The restore command also has flags to indicate only restore database or everything in backup archive:
./gogs restore --database-only --from="gogs-backup-xxx.zip"
If a table that is not presented in backup archive, whatever in current database table will remain unchanged. Custom config file
There are 3 steps to determine which custom/conf/app.ini command uses:
Use the one you specified vis flag --config.
Use the one stored in backup archive.
Use the one in $(pwd)/custom/conf/app.ini.
If all 3 steps failed, sorry, impossible to perform restore process.