HostOnNet Blog

Backup Site to Amazon S3

Looking for Linux Server Admin or WordPress Expert? We can help.

One of the dedicated customer wanted to backup his web site to Amazon S3. To upload files to Amazon S3, i installed awscli with

pip install awscli

and configured it with

aws configure

Now to take backup, i created following shell script

mkdir /usr/hostonnet
touch /usr/hostonnet/backup.sh
chmod 755 /usr/hostonnet/backup.sh

Edit the file

vi /usr/hostonnet/backup.sh

Add following to the file

#!/bin/bash

# https://blog.hostonnet.com/backup-amazon-s3
# 2 12 * * * /usr/hostonnet/backup.sh >> /var/log/s3-backup.log

BACKUP_TIME=`date +%Y-%m-%d-%H-%I-%S`

echo "Backup starting at $BACKUP_TIME"

# Check for directory

if [ ! -d /home/backup/ ]; then
    mkdir /home/backup/
fi

mysqldump hostonnet > /home/backup/mysql-db-$BACKUP_TIME.sql

# Generate tar file.

tar -cpzf /home/backup/hostonnet-$BACKUP_TIME.tgz /home/hostonnet/public_html  /home/backup/mysql-db-$BACKUP_TIME.sql

rm -f /home/backup/mysql-db-$BACKUP_TIME.sql

export AWS_CONFIG_FILE=/root/.aws/config
/usr/local/bin/aws s3 cp /home/backup/hostonnet-$BACKUP_TIME.tgz s3://hostonnet-bak

# Delete backup from local HDD after 12 days.

find /home/backup/ -maxdepth 1 -type d -mtime +12 -exec rm -rf {} \;

echo "====================================================="
echo " "

s3://hostonnet-bak is the Amazon S3 bucket name. You need to create it.

Now set cronjob

2 12 * * * /usr/hostonnet/backup.sh >> /var/log/s3-backup.log

Adjust time as needed. Here it is set to run 12:02 hours everyday.

Posted in Cloud

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.