Skip to main content

Defines your backup strategy based on bash commands

Project description

Bashbackup Test GitHub tag (latest SemVer) PyPI version

It is a python application that allows you to easily describe the backup steps you want. It is possible to describe the steps in YAML or in CLI. The tool also allows to manage the restoration based on the backup steps.

Installation

pip install bashckup

Examples

With YAML file

bashckup backup file --config-file /home/bashckup/config.yml

Config file:

Show up
---
- name: Backup MariaDB database
  id: backup-maria-db2
  reader:
    module: mariaDBDatabase
    args:
      database-name: "myDatabase"
  transformers:
    - gzip
    - crypt:
        args:
          password-file: password-safe.txt
  writer:
    module: outputFile
    args:
      path: ./
      file-name: output.sql.gz
- name: Backup website folder
  id: backup-website
  reader:
    module: files
    args:
      path: testfolder/
      incremental-metadata-file-prefix: tar-snap
      level-0-frequency: 'weekly'
  transformers:
    - gzip:
        args:
          level: 9
  writer:
    module: outputFile
    args:
      path: ./
      file-name: backup.tar.gz
  post-backup:
    - rsync:
        args:
          ip-addr: 10.8.0.1
          dest-module: test
          dest-folder: bck
          user: user
    - cleanFolder:
        args:
          retention: 31

With CLI inputs

bashckup backup cli --reader-module mariaDBDatabase --reader-args database-name='myDatabase' --transformer-module gzip --transformer-args nop --transformer-module crypt --transformer-args password-file=password-safe.txt  --writer-module outputFile --writer-args path='.' file-name='output.sql.gz'

Table of content

TODO

Modules

Reader Transformer Writer Post backup
files gzip outputFile cleanFolder
mariaDBDatabase crypt - rsync

Readers

File reader

Use tar bash command and allows to save files from file systems

Configuration

Parameter name Description Required Default value
path Folder path for the backup. It will create a sub-folder with the backup id True -
incremental-metadata-file-prefix Name of metadata-file used to store difference between backups False -
level-0-frequency When a full backup have to be done ? You have to choose in ['weekly', 'monthly'] False weekly

MariaDB database

⚠️You have to be root to use it, no authentication method is available yet ⚠️

Use mysqldump bash command and allows to generate a backup based on SQL instructions.

Configuration

Parameter name Description Required Default value
database-name Name of mariadb database True -

Transformers

Gzip

Use gzip bash command and allows to compress.

Configuration

Parameter name Description Required Default value
level Regulate the speed of compression using the specified digit #, where 1 indicates the fastest compression method (less compression) and 9 indicates the slowest compression method (best compression). The default compression level is 6 (that is, biased towards high compression at expense of speed). False 6

Crypt

Use openssl bash command and allows to do symmetric encryption.

Configuration

Parameter name Description Required Default value
password-file Path to the file that contains the password False -

Writer

Output file

Use cat bash command and allows to save backup on fil systems.

Configuration

Parameter name Description Required Default value
path Path to the output folder True -
file-name File name of the backup file True -

Post backup

Clean folder

Remove outdated backups

Configuration

Parameter name Description Required Default value
retention Retention duration in days True -

Rsync

⚠️You have to use password-file if user needs a password to login, otherwise backup will be stuck waiting password from stdin ⚠️

Use rsync bash command and allows to push backups's folder to a remote location.

password-file must point to a file that must be owned by the user running "bashckup", and it must be accessible only by him (chmod 600)

Configuration

Parameter name Description Required Default value
ip-addr IP address of remote host True -
dest-module Destination rsyncd module False -
dest-folder Destination folder True -
user Username to use to log in True -
password-file Path to the file that contains the password False -

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bashckup-0.0.2.tar.gz (6.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bashckup-0.0.2-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file bashckup-0.0.2.tar.gz.

File metadata

  • Download URL: bashckup-0.0.2.tar.gz
  • Upload date:
  • Size: 6.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for bashckup-0.0.2.tar.gz
Algorithm Hash digest
SHA256 f34692195a1fa184855ba6245182e4c580975125b71d95bef66000d88d4bebed
MD5 2d86deddd63e8943107c0f39ae2ec9bc
BLAKE2b-256 4c245ec010a41732e49a7c9ace2b365fcd48f54c562103d42ba41b3b58540bf9

See more details on using hashes here.

File details

Details for the file bashckup-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: bashckup-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for bashckup-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 09d88e958b624df6b0b9fb1a3c2b15d5edcfd6d1af08d923e12d9b509c78dbdb
MD5 419f0b084bf737c3f103313c9979907d
BLAKE2b-256 d39c86399d033f96f79cd2b5fdf390b57126fdff432d095d5a9a2597da8fbf08

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page