日々精進

新しく学んだことを書き留めていきます

virtualbox上のgitlabのバックアップを取るスクリプト

以下のことをやろうとしたら思いの外苦労した。
VMのバックアップを取る
・バックアップファイルはファイルサーバに保存する
・ローカルではバックアップファイルは20日分保存する
参考までにスクリプトを貼ります。エラー処理とか全然してませんが。。

TODAY_DATE=`date '+%Y%m%d'`
DAYS20_BEFORE_DATE=`date -v-20d '+%Y%m%d'`
BACKUP_FILE_NAME=gitlabServerBackup
BACKUP_FILE_NAME_WITH_DATE=$BACKUP_FILE_NAME$TODAY_DATE
BACKUP_FILE_FOR_DELETE=$BACKUP_FILE_NAME$DAYS20_BEFORE_DATE
BACKUP_DIR=/Users/usr/Desktop/GitlabBackup
BACKUP_FILE_PATH=$BACKUP_DIR/$BACKUP_FILE_NAME.ova
BACKUP_FILE_WITH_DATE_PATH=$BACKUP_DIR/$BACKUP_FILE_NAME_WITH_DATE.ova
BACKUP_FILE_FOR_DELETE_PATH=$BACKUP_DIR/$BACKUP_FILE_FOR_DELETE.ova
MOUNT_PATH=$BACKUP_DIR/mount
FILE_SERVER_BACKUP_FILE_PATH=$MOUNT_PATH/GitlabBackup/$BACKUP_FILE_NAME.ova

# VMを止めてバックアップをとる
VBoxManage controlvm gitlabServer poweroff
VBoxmanage export gitlabServer -o $BACKUP_FILE_PATH
VBoxManage startvm gitlabServer

# ファイルサーバにバックアップファイルをアップロード。容量が大きいのでファイルサーバには1世代分のみ保存する。
mount_smbfs //user:pass@server/folder $MOUNT_PATH
cp $BACKUP_FILE_PATH $FILE_SERVER_BACKUP_FILE_PATH
umount $MOUNT_PATH

# バックアップファイルを世代管理する。20日前のバックアップファイルは削除する
mv $BACKUP_FILE_PATH $BACKUP_FILE_WITH_DATE_PATH
rm $BACKUP_FILE_FOR_DELETE_PATH