From 7e3a991b295521761cefd73387af8c63b371f612 Mon Sep 17 00:00:00 2001 From: Mike Goodfellow Date: Mon, 29 Jun 2015 21:33:40 +0100 Subject: [PATCH] Update the README.md --- README.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8e9bcad..30d0d79 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,87 @@ -# s3-backup +# S3Backup + Flexible python based backup utility for storing to S3 -**NOTE:** Currently in early development - doesn't actually do anything yet! :) \ No newline at end of file +## 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 + +```json +{ + "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: + +```python +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) \ No newline at end of file