36 lines
2.1 KiB
Markdown
36 lines
2.1 KiB
Markdown
# 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.
|