mongodbのバックアップをとって過去30日間分保存する

バックアップをとる簡単なシェルスクリプトのメモ。mongodbのdatabaseのデータをdumpしてtar.gzにして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"`.tar.gz

# 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 $DUMP_DIR

んでcrontabで一日一回実行。

0 4 * * * /path/to/bin/backup.sh dbname >/dev/null 2>&1