|
| 1 | +#!/bin/sh |
| 2 | +# |
| 3 | +# Script for running mongodb_consistent_backup under Docker |
| 4 | +# with persistent data container for data, config and logs. |
| 5 | + |
| 6 | +ACTION=$1 |
| 7 | +[ -z $1 ] && echo "Usage: $0 [backup|list|get] [action flags]" && exit 1 |
| 8 | + |
| 9 | +BACKUP_DIR=/mongodb_consistent_backup |
| 10 | +BACKUP_CNF=$BACKUP_DIR/mongodb-consistent-backup.conf |
| 11 | +BACKUP_IMAGE=mongodb_consistent_backup |
| 12 | +BACKUP_DATA_IMAGE=mongodb_consistent_backup-data |
| 13 | +MCB_FLAGS="--config $BACKUP_CNF" |
| 14 | +DOCKER_IMAGE=timvaillancourt/mongodb_consistent_backup:latest |
| 15 | + |
| 16 | +if [ "$ACTION" = "backup" ]; then |
| 17 | + CNF=$2 |
| 18 | + [ -z $2 ] && echo "Usage: $0 backup [mongodb-consistent-backup config file]" && exit 1 |
| 19 | + |
| 20 | + docker ps -a | grep -q "$BACKUP_DATA_IMAGE" |
| 21 | + if [ $? -gt 0 ]; then |
| 22 | + echo "# Creating persistent volume for Docker image: $DOCKER_IMAGE" |
| 23 | + docker create -v $BACKUP_DIR --name $BACKUP_DATA_IMAGE $DOCKER_IMAGE |
| 24 | + fi |
| 25 | + |
| 26 | + if [ -f $CNF ]; then |
| 27 | + echo "# Loading config file $CNF into container" |
| 28 | + docker cp $CNF ${BACKUP_DATA_IMAGE}:${BACKUP_CNF} |
| 29 | + |
| 30 | + echo "# Running Docker image: $DOCKER_IMAGE" |
| 31 | + docker run -i --name $BACKUP_IMAGE --rm --volumes-from $BACKUP_DATA_IMAGE $DOCKER_IMAGE $MCB_FLAGS |
| 32 | + else |
| 33 | + echo "# Config file $CNF does not exist!" |
| 34 | + exit 1 |
| 35 | + fi |
| 36 | +elif [ "$ACTION" = "list" ]; then |
| 37 | + echo "# Listing backups in $BACKUP_DATA_IMAGE" |
| 38 | + docker run -it --rm --volumes-from $BACKUP_DATA_IMAGE --entrypoint /bin/find $DOCKER_IMAGE $BACKUP_DIR/data -maxdepth 2 -name "[0-9]*_*" |
| 39 | +elif [ "$ACTION" = "get" ]; then |
| 40 | + DIR=$2 |
| 41 | + [ -z $DIR ] && echo "Usage: $0 get [backup path]" && exit 1 |
| 42 | + docker cp $BACKUP_DATA_IMAGE:$DIR . |
| 43 | +fi |
0 commit comments