Initial commit

This commit is contained in:
Michael Smith
2023-03-01 18:46:58 +01:00
committed by Michael Smith
commit dc0584f503
9 changed files with 436 additions and 0 deletions

35
README.md Normal file
View File

@@ -0,0 +1,35 @@
# Pirate PostgreSQL backup script
Pirate PostgreSQL backup script written in Python.
This script backs up an entire PostgreSQL database to a remote server using scp. Backup files are
compressed and labeled with a precise timestamp.
Configuration is taken from environment variables.
## Dependencies
- PostgreSQL
- Python 3.9+
## Configuration environment variables
| Name | Purpose |
| ------------------ | ------------------------------------------------------------------------------------------------------------------- |
| **PG_DUMPALL_CMD** | Full path to the `pg_dumpall` command included with the PostgreSQL installation. Defaults to `/usr/bin/pg_dumpall`. |
| **DATABASE_HOST** | Database server host or socket directory. Defaults to `localhost`. |
| **DATABASE_PORT** | Database server port number. Defaults to `5432`. |
| **DATABASE_USER** | Connect as specified database user. Defaults to `postgres`. |
| **SSH_HOST** | Scp connect string. E.g. `user@host:/some/path/` |
## Usage example
```sh
SSH_HOST="user@host:~/pirate-backup-directory/" /usr/bin/python3 pirate-backup.py
```
## Notes
- This script relies on [Trust Authentication](https://www.postgresql.org/docs/current/auth-trust.html) of the backup user on the local server and therefore does not support passing a password through an environment variable. This is usually sufficient for local connections, although peer authentication is often times recommended.
- This script relies on a working ssh connection for the local user to the remote machine using a public-private key pair. See [How To Configure SSH Key-Based Authentication on a Linux Server](https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server) for instructions.