Skip to main content

Perform scripted backups to Amazon S3

Project description

Flexible python based backup utility for storing to S3

About

This is a small python script to handle performing backups cross platform

Features

It supports the following features:

  • Plan based backups

  • Custom command run pre-backup

  • Storing to S3

  • Emailing the result of the backup plans

  • Python standard logging framework

Configuration

The backup utility is configured through the use of a JSON configuration file

{
  "AWS_KEY": "this is a key",
  "AWS_SECRET": "this is a secret",
  "AWS_BUCKET": "this is a bucket",
  "AWS_REGION": "this is a region",
  "EMAIL_FROM": "source@address.com",
  "EMAIL_TO": "recipient@address.com",
  "Plans": [
    {
      "Name": "MySQL Backup",
      "Command": "mysqldump -u bob -p password > mysql_backup.sql",
      "Src": "c:/mysql_backup.sql",
      "OutputPrefix": "main_db"
    },
    {
      "Name": "Website Backup",
      "Src": ["c:/website/*.html", "C:/website/src/**/*"],
      "OutputPrefix": "website"
    }
  ]
}

If emails are not required, then omit the EMAIL_FROM and EMAIL_TO fields of the configuration file.

Note: When on Windows, it is better to pass the paths using forward slashes (/) as then escaping isn’t required (as with backslashes). The script will normalize the paths in these cases. However, when providing the command, if paths are required they will need to be double escaped.

Usage

You will need to set up an AWS account if you do not have one, and then obtain AWS keys for an IAM account which has the following privileges:

  • S3 full access (for writing to the storage bucket)

  • SES full access (for sending emails)

Run the backup tool using the following method:

import logging
import os
import sys
from S3Backup import S3BackupTool

script_path = os.path.dirname(os.path.realpath(__file__)) + '/'

# Log to file
#logging.basicConfig(format='%(asctime)s - %(levelname)s - %(name)s - %(message)s',
#                    filename=script_path + "s3backup.log", level=logging.INFO)

# Log to stdout
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

s3backup = S3BackupTool("config.json")

s3backup.run_plans()

See test.py in the src folder for an example.

Future Improvements

These are some of the planned future improvements:

  • Run multiple pre-backup commands (by providing an array)

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

S3Backup-v0.4-alpha.zip (13.3 kB view details)

Uploaded Source

File details

Details for the file S3Backup-v0.4-alpha.zip.

File metadata

  • Download URL: S3Backup-v0.4-alpha.zip
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for S3Backup-v0.4-alpha.zip
Algorithm Hash digest
SHA256 3cd896328238e55947cde79db4660b92d187c6450171e7ad9b2f67ed94309c27
MD5 ac9bf4be989fa85de123e96e9704d373
BLAKE2b-256 7f7ec1c3dbcf282930f3c396e75beb0deb5f67d131b6ebc8f5a98f6554a305b1

See more details on using hashes here.

Supported by

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