バックアップのシェルスクリプト

バックアップ、圧縮保存、30日経過後は削除

#!/bin/sh

DB_NAME=$1
if [ -z $DB_NAME ]; then
  echo 'require database name'
  exit
fi

BACKUP_BASE_DIR=/backup/db
BACKUP_DIR=$BACKUP_BASE_DIR/$DB_NAME
DUMP_DIR=$BACKUP_DIR/dump
BACKUP_FILE=$BACKUP_DIR/${DB_NAME}_`date +"%Y%m%d-%H%M%S"`

# remove dump dir
rm -rf $DUMP_DIR

# dump db data
/usr/bin/mongodump -o $DUMP_DIR -d $DB_NAME

# remove old file
find $BACKUP_DIR -type f -mtime +30 | xargs rm -f

# compress
# tar vczPf $BACKUP_FILE.tar.gz $DUMP_DIR
tar cf - $DUMP_DIR | pbzip2 -f -p4 > $BACKUP_FILE.tar.bz2

cronに登録するときは、dbnameを忘れずに。

30 5 * * * /path/to/bin/backup.sh dbname >/dev/null 2>&1