https://github.com/solectrus/backup-restore
Create (and restore) backups of the SOLECTRUS databases
https://github.com/solectrus/backup-restore
backup influxdb postgresql
Last synced: 5 months ago
JSON representation
Create (and restore) backups of the SOLECTRUS databases
- Host: GitHub
- URL: https://github.com/solectrus/backup-restore
- Owner: solectrus
- Created: 2024-10-06T07:33:23.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-28T09:07:14.000Z (over 1 year ago)
- Last Synced: 2025-10-05T04:57:53.164Z (9 months ago)
- Topics: backup, influxdb, postgresql
- Language: Shell
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SOLECTRUS Backup & Restore
This repository contains scripts to backup and restore both PostgreSQL and InfluxDB databases for a SOLECTRUS installation. The following scripts are provided:
## backup.sh
The `backup.sh` script creates backups of both PostgreSQL and InfluxDB databases and combines them into a single compressed file. It is designed specifically for use within a SOLECTRUS setup, ensuring consistent backups of the required services.
How it works:
- A PostgreSQL backup is created using `pg_dumpall` and compressed with `gzip`.
- An InfluxDB backup is created using the `influx backup` command.
- Both backups are combined into a single `tar.gz` file named `solectrus-backup-.tar.gz`.
Usage:
```bash
./backup.sh
```
The backup file will be saved in the current directory with the format `solectrus-backup-.tar.gz`, where `` is the current date.
You can optionally provide a target directory where the backup file should be stored:
```bash
./backup.sh --backup-dir /path/to/backups
```
You can also specify the number of days to keep backups (older backups will be deleted):
```bash
./backup.sh --retention-days 10
```
Without specifying `--retention-days`, older backups will not be deleted.
## restore.sh
The `restore.sh` script restores both PostgreSQL and InfluxDB databases from a previously created backup file. It ensures that only PostgreSQL and InfluxDB containers are running during the restore process to prevent any conflicts.
How it works:
- It checks for the presence of a valid `.env` file and a valid Docker Compose configuration using `docker compose config`.
- It extracts the combined backup file and restores the databases.
- The PostgreSQL database is restored using `psql`, and the InfluxDB database is restored using the `influx restore` command.
- It stops all other containers except PostgreSQL and InfluxDB during the restore process.
Usage:
```bash
./restore.sh
```
You need to provide the filename of the backup (containing the date as YYYY-MM-DD) as a parameter, e.g.:
```bash
./restore.sh /path/to/backups/solectrus-backup-2024-10-06.tar.gz
```
Requirements:
- Valid SOLECTRUS installation (including both PostgreSQL and InfluxDB services)
- Docker Compose configuration file (e.g., `docker-compose.yml` or `compose.yaml`)
- `.env` file with necessary environment variables for InfluxDB
With these scripts, you can easily manage the backup and restore processes for PostgreSQL and InfluxDB databases in your SOLECTRUS setup.
## Download and Installation
To use the scripts, you can download them directly into your SOLECTRUS installation directory:
```bash
# Change to your SOLECTRUS installation directory
cd /path/to/solectrus
# Download backup.sh and restore.sh
curl -o backup.sh https://raw.githubusercontent.com/solectrus/backup-restore/refs/heads/main/backup.sh
curl -o restore.sh https://raw.githubusercontent.com/solectrus/backup-restore/refs/heads/main/restore.sh
# Make both scripts executable
chmod +x backup.sh restore.sh
```
## Automating Backups with CRON
To ensure regular backups, you can set up a cron job to execute the backup script automatically, e.g. daily at a specific time. Here's how you can do it:
1. Open the crontab editor:
```bash
crontab -e
```
2. Add the following line to schedule a daily backup at 2:00 AM:
```bash
0 2 * * * cd /path/to/solectrus && ./backup.sh --backup-dir /path/to/backups --retention-days 10
```
**Explanation:**
- `0 2 * * *` → Runs the backup script daily at 2:00 AM
- `cd /path/to/solectrus` → Path to the backup script (change to your SOLECTRUS installation directory)
- `--backup-dir /path/to/backups` → Directory where backups will be stored (change to your desired backup directory)
- `--retention-days 10` → Optional parameter to specify the number of days to keep backups (deleting older backups)
To verify that the cron job is active, run:
```bash
crontab -l
```