This article is part of “The Ultimate Backup Script” series we are creating to provide you with database backup scripts that not only allow you to create database backups, but also upload the backup dumps to Amazon S3 and automate the process daily.

Our goal in this tutorial is to back up your MongoDB database and store it remotely, all on autopilot.
In this example we'll focus on storing the backup on Amazon S3, but you can use any cloud storage provider you want as long as it's S3 compatible.
🧑💻 So here are the steps we'll follow:
ℹ️ Key Points to Understand Before We Begin:
Why Choose Amazon S3?
In this tutorial, we've selected Amazon S3 for its widespread use and reliability.
If you prefer a different cloud storage provider, feel free to make that choice. The steps will remain largely similar as long as the chosen provider is compatible with S3.
What is Cron?
Cron is a time-based job scheduling software utility, supporting Unix-based operating systems. Developers utilize Cron to schedule tasks, like executing commands or shell scripts, at specific intervals. These intervals can be set to daily, weekly, or any other frequency according to your needs.
Understanding Chmod
Chmod, short for ‘change mode’, is a command used to set file handling rules. Through the “chmod” system call, an administrator can alter access permissions of file system objects.
We'll be using mongodump to create your backup.
In this tutorial we'll keep it simple, but we've also written a detailed guide on mongodump, which I'm sure will be useful to you.
Here is the command to create a backup of your MongoDB database:
mongodump -h localhost:27017 -d my_db_name -o my_backup_dirBecause we want to automate the process, we'll create a shell script db_backup.sh that will run this command for us.
cd ~
mkdir scripts
cd scripts
nano db_backup.shCopy and paste the script below to it
#!/bin/bash
DIR=`date +%d-%m-%y`
DEST=~/db_backups/$DIR
mkdir $DEST
mongodump -h localhost:27017 -d my_db_name -o $DESTNow chmod the script to allow it to for execution
chmod +x ~/scripts/db_backup.shNow that we have a script that creates a backup of our MongoDB database, we need to upload it to Amazon S3.
Note that you can use any cloud storage provider you want as long as it's S3 compatible.
And if you're looking for a simple way to automate this process, you can use SimpleBackups to do it for you.
First, let's make sure we have the proper tools installed.
We'll use the AWS CLI to sync the backup files with Amazon S3.
Before installing the AWS CLI you need to install python-pi. Type the following commands:
apt-get update
apt-get -y install python-pip
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"Install the AWS CLI
Type the following command:
pip install awscliSet up AWS key & Secret
Configuration and credential file settings
cd ~
mkdir .aws
nano ~/.aws/configPaste in key_id and secret_access_key as shown below
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYNow that AWS CLI is installed and configured, we can sync the backup with Amazon S3.
For this, we'll create a new script db_sync.sh that will sync the backup directory with Amazon S3.
Copy and paste the script below to it
#!/bin/bash
/usr/local/bin/aws s3 sync ~/db_backups s3://my-bucket-nameNow chmod the script to allow it for execution:
chmod +x ~/scripts/db_sync.shAt this stage, we have a script that creates a backup of our MongoDB database and another script that syncs the backup with Amazon S3.
Now it's time to automate the process using Cron.
crontab -ePaste the below commands at the bottom to automate the process
0 0 * * * ~/scripts/db_backup.sh # take a backup every midnight
0 2 * * * ~/scripts/db_sync.sh # upload the backup at 2amThis way the backup script will run and also sync with Amazon S3 daily.
Here you go! You now have a shell script that can be executed to backup your MongoDB database and sync it with your specified Amazon S3 bucket.
Have you tried simplebackups.com yet?
SimpleBackups will save you a lot of time setting up scripts and ensuring they run without problems. It will alert you when things go wrong, and allows you store your backups on many cloud storage services like Google, DigitalOcean, Wasabi, Dropbox, and more…
Free 7-day trial. No credit card required.
Have a question? Need help getting started?
Get in touch via chat or at hello@simplebackups.com