GitFlic Backup Procedures
Important Notice
The following utilities are required for backup operations:
Backup Process
-
Install required utilities:
sudo apt update && sudo apt install postgresql-common postgresql-client redis-tools rsync s3cmd -yq
-
Stop GitFlic service
-
Backup PostgreSQL database:
PGPASSWORD=<DB_Password> pg_dump -h <PostgreSQL_Address> -d <gitflic_DB_Name> -U <gitflic_DB_Role> -b -v -f dump.sql
PGPASSWORD=<DB_Password> pg_dump -h <PostgreSQL_Address> -d <gitflic_DB_Name> -U <gitflic_DB_Role> -F c -b -v -f dump.restore
-
Backup Redis database by copying dump.rdb:
redis-cli <DB_Connection_Parameters> save cp /var/lib/redis/dump.rdb ./dump.rdb
-
Copy GitFlic static data (default directories: img, repo, cicd, releases, registry):
for d in img repo cicd releases registry; do cp -r /var/gitflic/$d ./ done
for d in img repo cicd releases registry; do rsync /var/gitflic/$d -avxH --delete-during <username>@<server_address>:backup/$d done
# Requires pre-configured s3cmd for your S3 provider s3cmd sync "s3://<bucket_name>/" ./
-
Backup certificate files:
cp -r /opt/gitflic/cert ./
Restoration Process
-
Install required utilities (same as backup)
-
Stop GitFlic service
-
Restore PostgreSQL database:
3.1. Connect to gitflic database:
```shell PGPASSWORD=<DB_Password> psql -h <PostgreSQL_Address> -d <gitflic_DB_Name> -U <gitflic_DB_Role> ```
3.2. Drop existing tables:
```sql DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE'; END LOOP; END $$; \q ```
3.3. Restore from dump:
```shell PGPASSWORD=<DB_Password> psql -h <PostgreSQL_Address> -d <gitflic_DB_Name> -U <gitflic_DB_Role> < dump.sql ```
PGPASSWORD=<DB_Password> pg_restore -h <PostgreSQL_Address> -d <gitflic_DB_Name> -U <gitflic_DB_Role> -c --if-exists dump.restore
-
Restore Redis/KeyDB database:
-
Stop database service:
systemctl stop redis-server
-
Copy dump file:
cp dump.rdb /var/lib/redis/dump.rdb
-
Start database service:
systemctl start redis-server
-
-
Restore GitFlic static data:
for d in img repo cicd releases registry; do cp -r $d /var/gitflic/ done
for d in img repo cicd releases registry; do rsync <username>@<server_address>:backup/$d -avxH --delete-during /var/gitflic/$d done
s3cmd sync ./ "s3://<bucket_name>/"
-
Restore certificate files:
cp -r ./cert /opt/gitflic/cert
Best Practices
- Schedule regular backups during low-usage periods
- Verify backup integrity periodically
- Store backups in multiple locations (local + remote)
- Document your backup/restore procedures