#!/usr/bin/env bash MINIO_SITE=minio BACKUP_DIR="/data/backup/minio" ARCHIVE_DIR='/data/backup/archive' MC_OPTS="--recursive --limit-download 10M" DATE_FORMAT=$(date +"%Y-%m-%d") KEEP_DAY=$(date -d "-3 days" +%Y-%m-%d) mc --version >/dev/null if [[ "$?" -eq "0" ]] then mc admin info ${MINIO_SITE} >/dev/null 2>/dev/null if [[ "$?" -eq "0" ]] then [[ -d ${BACKUP_DIR} ]] || install -d ${BACKUP_DIR} [[ -d ${ARCHIVE_DIR} ]] || install -d ${ARCHIVE_DIR} for bucket in $(mc ls ${MINIO_SITE} | awk '{print $5}' | sed 's@/@@') do echo "[ $bucket ] bucket start backup..." mc cp ${MC_OPTS} ${MINIO_SITE}/${bucket} ${BACKUP_DIR} >/dev/null 2>/dev/null & done wait # 归档压缩 cd ${BACKUP_DIR} && tar -cf - . | pigz > ${ARCHIVE_DIR}/minio-${DATE_FORMAT}.tar.gz || tar acvf ${ARCHIVE_DIR}/minio-${DATE_FORMAT}.tar.gz . # 删除旧备份数据 find ${ARCHIVE_DIR} -type f -name "minio-${KEEP_DAY}.tar.gz" -exec rm -f {} \; else echo "[ ${MINIO_SITE} ] not available, exit!" exit 67 fi else echo "mc tool does not exist,exit!" exit 67 fi