#!/bin/bash# filename: /etc/baidu/all-minio-backup.sh# doc: http://wiki.baiduq.com/web/#/99?page_id=9999functionlog(){time_now=$(date +%F-%T)echo"$time_now$1"}functiontoday(){date +%F
}functionyesterday(){date --date='1 days ago' +%F
}functionthe_day_before_yesterday(){date --date='2 days ago' +%F
}HOSTNAME=$(hostname)TODAY_STR=$(today)YESTERDAY_SRT=$(yesterday)THE_DAY_BEFORE_YESTERDAY_SRT=$(the_day_before_yesterday)MINIO_DEST_PREFIX="myminio/baidu/qq_backup/${HOSTNAME}"MINIO_COMMON_PARA="--recursive --json --no-color"backup_dir=(
tt123.mm__/data0/testq/testq-tt193__tt194.tt196 #300GB
tt124.mm__/data0/testq/testq-tt193__tt194.tt196 #20GB
tt125.mm__/data0/testq/testq-tt193__tt195.tt196 #17GB)
log "START $HOSTNAME BACKUP"# shellcheck disable=SC2068fordin${backup_dir[@]};doMY_HOSTNAME=$(echo $d |awk -F '__''{print $1}')SOURCE_DIR=$(echo $d |awk -F '__''{print $2}')DEST_DIR=$(echo $d |awk -F '__''{print $3}')if["$MY_HOSTNAME"="$HOSTNAME"];then# set backup status = 0echo0| /opt/baidu2021/mc pipe ${MINIO_DEST_PREFIX}/${TODAY_STR}/${DEST_DIR}/kvm_backup_status.txt
# this file is write on remote server directlybackup_status=$(/opt/baidu2021/mc cat ${MINIO_DEST_PREFIX}/${YESTERDAY_SRT}/${DEST_DIR}/kvm_backup_status.txt)if[ -z $backup_status];thenbackup_status=0fiif[${backup_status} -eq 1];then# delete last last day backup on remote server if last day backup successful
/opt/baidu2021/mc rm${MINIO_COMMON_PARA} --force ${MINIO_DEST_PREFIX}/${THE_DAY_BEFORE_YESTERDAY_SRT}/${DEST_DIR}fi# online copy data to remote server for backupdu -sh ${SOURCE_DIR}
log "START ${SOURCE_DIR} BACKUP"
/opt/baidu2021/mc cp${MINIO_COMMON_PARA}${SOURCE_DIR}${MINIO_DEST_PREFIX}/${TODAY_STR}/${DEST_DIR}
log "END ${SOURCE_DIR} BACKUP"# set backup status = 1 indicate backup successecho1| /opt/baidu2021/mc pipe ${MINIO_DEST_PREFIX}/${TODAY_STR}/${DEST_DIR}/kvm_backup_status.txt
fidone# if last last day backup dir is empty, delete it# actually, below code is unnecessary, on minio server if directory is empty, it delete automatically# file_nums=$(/opt/baidu2021/mc ls ${MINIO_DEST_PREFIX}/${THE_DAY_BEFORE_YESTERDAY_SRT} | wc -l)# if [ ${file_nums} -eq 0 ]; then# /opt/baidu2021/mc rm ${MINIO_COMMON_PARA} --force ${MINIO_DEST_PREFIX}/${THE_DAY_BEFORE_YESTERDAY_SRT}# fi
log "END $HOSTNAME BACKUP"