Skip to content

Instantly share code, notes, and snippets.

@KtanPatel
Last active September 22, 2023 05:39
Show Gist options
  • Save KtanPatel/55bca8b45af903fcc2786e416bd7d954 to your computer and use it in GitHub Desktop.
Save KtanPatel/55bca8b45af903fcc2786e416bd7d954 to your computer and use it in GitHub Desktop.
MongoDB Backup (mongodump) - CronJob - Daily - Ubuntu

MongoDB Backup (mongodump) - CronJob - Daily - Ubuntu

mongo_backup.sh

#!/bin/bash

set -e

URI=mongodb://user:password@0.0.0.0:27017
DB=test
DIR=mongo-backup
TODAY=$(date +%Y%m%d)
DAY_RM=$(date +%Y%m%d --date='-10 day')
SPACE_NAME=$HOME/$DIR
BACKUP_NAME=$DB$(date +_%y%m%d_%H%M%S).gz

date
echo "Backing up MongoDB database to Space: $SPACE_NAME"
mkdir -p $SPACE_NAME/$TODAY

echo "Dumping MongoDB $DB database to compressed archive"
mongodump --uri $URI --db $DB --archive=$SPACE_NAME/$TODAY/$BACKUP_NAME --gzip

echo "Remove backup directory which is created 10 days ago: $SPACE_NAME/$DAY_RM"
if [ -d "$SPACE_NAME/$DAY_RM" ]; then rm -rf $SPACE_NAME/$DAY_RM; fi

echo 'Backup complete!'

cron setting - commands

$ sudo mkdir /var/log/mongo_backup
$ sudo chown ubuntu:ubuntu /var/log/mongo_backup 
$ crontab -e

Append line

0 2 * * * /home/ubuntu/mongo-backup.sh >>/var/log/mongo_backup/mongo_backup.log 2>&1

Restore DB

$ mongorestore --uri $URI --db $DB --archive=$ARCHIEVE_NAME --gzip
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment