Skip to content

Instantly share code, notes, and snippets.

@oleynikd
Last active June 25, 2018 16:43
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oleynikd/0a2cf2952ed32bf1f899 to your computer and use it in GitHub Desktop.
Save oleynikd/0a2cf2952ed32bf1f899 to your computer and use it in GitHub Desktop.
Amazon AWS (Amazon Linux AMI) Duplicity via Duply Backups to S3 installation and setup

Installing on Amazon Linux AMI (release 2014.09)

Installing using yum. By default Amazon Linux AMI release has only AWS's yum repos, but it has EPEL (Extra Packages for Enterprise Linux) predefined but not enabled. To temporarily enable the EPEL 6 repository, use the yum command line option --enablerepo=epel.

Installing duplicity and dependencies:

sudo yum install duplicity rsync gpg python python-devel python-pip --enablerepo=epel

Insalling duply manually (latest version can be found here):

cd ~
wget http://downloads.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/1.9.x/duply_1.9.1.tgz
tar -zxvf ./duply_1.9.1.tgz
sudo cp ./duply_1.9.1/duply /usr/bin/
rm -r ./duply_1.9.1

Install boto for S3 support:

sudo pip install boto

Test duply:

duply -v

This command should output something like:

  duply version 1.9.1
  (http://duply.net)

  Using installed duplicity version 0.6.22, python 2.6.9, gpg 2.0.25 (Home: ~/.gnupg), awk 'GNU Awk 3.1.7', bash '4.1.2(1)-release (x86_64-redhat-linux-gnu)'.

Configuring

To create backup profile (ex. www) use

duply www create

Edit default configuration (/home/ec2-user/.duply/www/conf)

vi /home/ec2-user/.duply/www/conf

conf file is pretty well documented, read it!

To use simple password protection comment line:

#GPG_KEY='_KEY_ID_'

And enter your password here:

GPG_PW='MYSUPERPASSWORD'

Set S3 bucket as a backup target:

TARGET='s3://s3-region.amazonaws.com/mybucket/some/sub/folder/'
#ex.:
TARGET='s3://s3-eu-west-1.amazonaws.com/mybackups/www/'

S3 Access Key ID gose here:

TARGET_USER='FEGAIKGR4OLIFF2UIP34'

S3 Secret Access Key gose here:

TARGET_PASS='aAezgEBvz6i34df0AHRTagNTS3wMT4w5np55eEDD'

Directory to backup:

SOURCE='/var/www/'

Set backup's max age (Used for the "purge" command.):

MAX_AGE=6M

Save and exit!

Run

Run backup:

duply www backup

Cron config

crontab -e

And add (newline at the end is requiered):

# Daily Backups @ 5 am
0 5 * * * duply www backup

To be quiet:

# Daily Backups @ 5 am (quiet)
0 5 * * * duply www backup > /dev/null 2>&1

@felipecarballo
Copy link

Hello friend! I don't know if you can help me. When try to run duplicity the following error occurs:

Traceback (most recent call last):
File "/usr/bin/duplicity", line 42, in
from duplicity import log
ImportError: No module named duplicity

Do you know what is going on?

@alheriau
Copy link

@felipecarballo
I had the same issue, my default version of python is 2.7 and the package require 2.6
install python26 and replace the first line in /usr/bin/duplicity:

#!/usr/bin/python

by

#!/usr/bin/python26

@bekce
Copy link

bekce commented Jun 4, 2018

TARGET_USER and TARGET_PASS won't work since duply 1.10.x. Source. Use these in config:

export AWS_ACCESS_KEY_ID='XXXXXXXXXXXX'
export AWS_SECRET_ACCESS_KEY='XXXXXXXXXXXX'

@johnfritz77
Copy link

johnfritz77 commented Jun 22, 2018

I am getting "UnsupportedBackendScheme: scheme not supported in url: s3://". Though I have confirmed I have the URL format for my buckets region correct. Has anyone else seen that issue?
UnsupportedBackendScheme: scheme not supported in url: s3://s3-us-east-2.amazonaws.com/pinknose1/backup/www/

Update - I am very new to Linux so I wanted to update this in case any others run into the same issue. The workaround for me was to simply re-create the EC2 instance I was building this on. The url structure was actually fine, however at some point one or more of the fixes I had tried to apply had corrupted my duplicity install. A fresh install resolved this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment