Backup e ripristino del server Gitea

Possono accadere qualsiasi cosa in questi difficili tempi

Indice

Occorre eseguire il backup dei seguenti elementi: 1) database, 2) filestorage, 3) alcuni altri file di Gitea. Ecco come procedere.

foto molto bella di un HDD aperto

Nell’articolo Testing Gitea abbiamo installato il server Gitea.

Quando

Ora, semplicemente come precauzione nel caso in cui accadano cose terribili, è necessario esercitarsi nel procedimento di backup e ripristino.

Meglio prevenire che curare.

Dove

I dati del server Gitea sono composti da tre componenti:

  • codice
  • filestore
  • database

Nell’ambiente di test, tutti insieme occupano un po’ più di 700 MB:

utilizzo del disco di Gitea

Come consigliato, è necessario arrestare tutti i servizi e eseguire il backup di tutti, in un’unica transazione.

E lo stesso vale per il ripristino, in una transazione analoga.

Come - Backup

cd ~/gitea-srv-local

# backup del database
sudo docker exec -t gitea-srv-local_db_1 bash -c 'pg_dump gitea -U gitea  --file=/var/lib/postgresql/backups/gitea-db-$(date +%Y-%m-%d).sql'

# arresta Gitea
sudo docker-compose down

# verifica la cartella dei backup
sudo ls postgres-backups

# crea la cartella dei backup
mkdir gitea-backups

# backup della cartella Gitea
sudo tar -zcvf gitea-backups/gitea-gitea-$(date +%Y-%m-%d).tgz gitea/gitea

# backup della cartella repos
sudo tar -zcvf gitea-backups/gitea-git-$(date +%Y-%m-%d).tgz gitea/git

# riavvia i servizi
sudo docker-compose up -d

l’ultimo passo consiste nel accedere ad un altro server e copiare la cartella dei backup lì, oppure eseguire altre operazioni più elaborate sui file

scp -r uname@gitea-srv-ip-addr:/home/uname/gitea-srv-local/gitea-backups ~/gitea-backups
scp -r uname@gitea-srv-ip-addr:/home/uname/gitea-srv-local/postgres-backups ~/postgres-backups

Come - Ripristino

In realtà, c’è un po’ di più, soprattutto riguardo ai permessi e agli hook, ma l’idea è la stessa.

Ma! controlla il documento originale: https://docs.gitea.com/administration/backup-and-restore

# installalo prima
# poi arrestalo
sudo docker-compose down

# ripristina i file
tar -zxvf gitea-git-___.tgz gitea/git
tar -zxvf gitea-gitea-___.tgz gitea/gitea

# riavvialo
sudo docker-compose up -d

# qui alcune attività con psql o pg_restore
sudo docker exec -t gitea-srv-local_db_1 bash -c 'psql gitea -U gitea  --file=/var/lib/postgresql/backups/gitea-db-$(date +%Y-%m-%d).sql'

Poi vai nell’interfaccia utente e controlla