https://github.com/clivern/gulper
🔥 A Command Line Tool to Backup and Restore MySQL and PostgreSQL.
https://github.com/clivern/gulper
Last synced: 5 months ago
JSON representation
🔥 A Command Line Tool to Backup and Restore MySQL and PostgreSQL.
- Host: GitHub
- URL: https://github.com/clivern/gulper
- Owner: Clivern
- License: mit
- Created: 2018-06-06T23:54:41.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-03-04T21:58:27.000Z (10 months ago)
- Last Synced: 2025-03-04T22:28:42.097Z (10 months ago)
- Language: Python
- Homepage:
- Size: 71.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.rst
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Authors: AUTHORS.rst
Awesome Lists containing this project
README
.. image:: https://images.unsplash.com/photo-1589995186011-a7b485edc4bf
:width: 700
:alt: Cover Photo
.. image:: https://img.shields.io/pypi/v/gulper.svg
:alt: PyPI-Server
:target: https://pypi.org/project/gulper/
.. image:: https://img.shields.io/badge/Docker-0.0.16-1abc9c.svg
:alt: Docker Image
:target: https://hub.docker.com/r/clivern/gulper/tags
.. image:: https://github.com/Clivern/Gulper/actions/workflows/ci.yml/badge.svg?branch=main
:alt: Build Status
:target: https://github.com/Clivern/Gulper/actions/workflows/ci.yml
.. image:: https://static.pepy.tech/badge/gulper
:alt: Downloads
:target: https://pepy.tech/projects/gulper
|
=======
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
.. code-block::
$ 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:
.. code-block:: yaml
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``):
.. code-block::
$ gulper --config config.yaml backup run $dbName
2. Restore a database from a specific backup or the latest db backup
.. code-block::
$ gulper --config config.yaml restore run $backupId
$ gulper --config config.yaml restore db $dbName
3. List all backups or for a specific database:
.. code-block::
$ 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"
4. Run scheduled backups in ``daemon`` mode:
.. code-block::
$ gulper --config config.yaml cron --daemon
5. To get a list of ``events``.
.. code-block::
$ 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.
.. _Semantic Versioning guidelines: https://semver.org/
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.
.. _Releases section of our GitHub project: https://github.com/Clivern/Gulper/releases
.. _Milestones section: https://github.com/Clivern/Gulper/milestones
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 `_
.. _hello@clivern.com : mailto: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.
.. _contributing guidelines: CONTRIBUTING.rst
License
=======
© 2025, Gulper. Released under `MIT License`_.
.. _MIT License: https://opensource.org/licenses/mit-license.php
**Gulper** is authored and maintained by `Clivern `_.