Skip to main content
Cover Photo PyPI-Server Docker Image Build Status Downloads

Gulper

Gulper is a powerful and flexible command-line utility designed for backing up and restoring SQLite, MySQL, and PostgreSQL databases. It offers a range of features to streamline database management tasks, including scheduled backups, multiple storage options, and easy restoration.

Features

  • Multi-Database Support: Backup and restore SQLite, MySQL, and PostgreSQL databases.

  • Flexible Storage Options: Store backups locally or in cloud storage (AWS S3, DigitalOcean Spaces).

  • Scheduled Backups: Automate backups using cron-like expressions.

  • Point-in-Time Recovery: Restore databases to a specific point in time.

  • Compression: Reduce backup size with built-in compression options.

  • Retention Policies: Automatically manage backup retention periods.

  • Logging: Comprehensive logging of all backup and restore activities.

Installation

To install gulper, use the following command

$ pip install gulper

Configuration

Gulper uses a YAML configuration file to manage settings. By default, it looks for the configuration at /etc/config.yaml. You can specify a different path using the --config option.

Example configuration:

temp_dir: /tmp
state_file: /etc/gulper.db

logging:
  level: error
  handler: console
  path: ~

event:
  retention: 1 month

storage:
  local_01:
    type: local
    path: /opt/backups/

  aws_s3_01:
    type: s3
    access_key_id: your_access_key_id
    secret_access_key: your_secret_access_key
    bucket_name: your_bucket_name
    region: your_region
    path: /

  do_s3_01:
    type: s3
    access_key_id: your_access_key_id
    secret_access_key: your_secret_access_key
    endpoint_url: https://nyc3.digitaloceanspaces.com
    bucket_name: your_bucket_name
    region: nyc3
    path: /team_name/db_backups

schedule:
  hourly:
    expression: 0 * * * *

database:
  db01:
    type: mysql
    host: localhost
    username: root
    password: your_password
    port: 3306
    database:
      - db01
      - db02
    storage:
      - local_01
    schedule: hourly
    options:
      quote-names: True
      quick: True
      add-drop-table: True
      add-locks: True
      allow-keywords: True
      disable-keys: True
      extended-insert: True
      single-transaction: True
      create-options: True
      comments: True
      skip-ssl: True
      no-tablespaces: True
      net_buffer_length: 16384
    retention: 3 months

  db02:
    type: postgresql
    host: localhost
    username: root
    password: your_password
    database: db01
    storage:
      - aws_s3_01
    schedule: hourly
    retention: 7 days

  db03:
    type: sqlite
    path: /opt/app/opswork.db
    storage:
      - aws_s3_01
    schedule: hourly
    retention: 1 year

Usage

Backup Commands

  • List backups: gulper [--config PATH] backup list [--db DB] [--since SINCE] [--json]

  • Run backup: gulper [--config PATH] backup run DB [--json]

  • Get backup details: gulper [--config PATH] backup get BACKUP_ID [--json]

  • Delete backup: gulper [--config PATH] backup delete BACKUP_ID [--json]

Restore Commands

  • Restore from backup: gulper [--config PATH] restore run BACKUP_ID [--json]

  • Restore specific database: gulper [--config PATH] restore db DB [--json]

Cron Command

  • Run scheduled backups: gulper [--config PATH] cron [--daemon]

Event Command

  • List events: gulper [--config PATH] event list [--db DB] [--since SINCE] [--json]

Examples

  1. Backup a database (MySQL or SQLite or PostgreSQL):

$ gulper --config config.yaml backup run $dbName
  1. Restore a database from a specific backup or the latest db backup

$ gulper --config config.yaml restore run $backupId
$ gulper --config config.yaml restore db $dbName
  1. List all backups or for a specific database:

$ gulper --config config.yaml backup list
$ gulper --config config.yaml backup list --json
$ gulper --config config.yaml backup list --db $dbName
$ gulper --config config.yaml backup list --db $dbName --since "3 hours ago"
  1. Run scheduled backups in daemon mode:

$ gulper --config config.yaml cron --daemon
  1. To get a list of events.

$ gulper --config config.yaml event list
$ gulper --config config.yaml event list --db $dbName --since "1 hour ago"
$ gulper --config config.yaml event list --json

Versioning

For transparency into our release cycle and in striving to maintain backward compatibility, Tyran is maintained under the Semantic Versioning guidelines and release process is predictable and business-friendly.

See the Releases section of our GitHub project for changelogs for each release version of Tyran. It contains summaries of the most noteworthy changes made in each release. Also see the Milestones section for the future roadmap.

Bug tracker

If you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/Clivern/Gulper/issues

Security Issues

If you discover a security vulnerability within Gulper, please send an email to hello@clivern.com

Contributing

We are an open source, community-driven project so please feel free to join us. see the contributing guidelines for more details.

License

© 2025, Gulper. Released under MIT License.

Gulper is authored and maintained by Clivern.

Metadata

Release files for gulper 0.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gulper 0.0.17
File Size Uploaded
gulper-0.0.17.tar.gz 84.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gulper 0.0.17
File Interpreter ABI Platform
gulper-0.0.17-py3-none-any.whl Python 3 none any Details

Total release size: 135.9 kB

Release files / gulper-0.0.17.tar.gz

Download URL gulper-0.0.17.tar.gz
Size 84.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1e486a410cda4c035f0826c9e1fae100ea184194151fdf1c6e8f2633a7adb5b2
BLAKE2b-256 checksum
How to use checksums
93bd2cab6f7f54b024b9a55ab8f0c845fa998598ffd59ded4a564bd43252da6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / gulper-0.0.17-py3-none-any.whl

Download URL gulper-0.0.17-py3-none-any.whl
Size 51.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19fb7e95d19c423e09da087b9068fafaf0b47a6b6293b5994dc48aa280e9b759
BLAKE2b-256 checksum
How to use checksums
568f46dbf669a25a9c62f62209674c6dd07167724c1541c3e1b160d3d785b3e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.0.17 This release

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page