HostOnNet Blog

Backup Site to Amazon S3

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