🔴大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

前言
之前数据库是备份到了七牛云上了,但是眼看着数据库文件越来越大,七牛云里面的余额越来越少,所以,转移阵地。
家里的nas,4个T的硬盘,是不是得利用起来,所以我就在nas上部署了个minio,
然后配置了下cdn
接下来就是通过shell脚本上传文件到minio中。
安装mc客户端
在linux中执行如下命令:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
下载完后,给授权一下:
chmod +x mc
然后移动到/usr/local/bin路径下。
mv mc /usr/local/bin
我们查看一下版本:
mc --version

配置mc客户端
一行命令搞定:
mc alias set myminio https://xxx.team:9000/ minioak miniosk
-  注意minio的地址不要写错,是你9000端口的那个哈,不要写配置了cdn的地址 
-  minioak:你的minio的ak 
-  miniosk:你的minio的sk 
上传文件的脚本
🔴单个文件的shell脚本:
#!/bin/bash
# MinIO别名
MINIO_ALIAS=myminio
# 要上传的本地文件路径
LOCAL_FILE_PATH=/home/project/dbBackUp/test/
# 目标MinIO桶名称  指定文件夹的话,用/隔开即可,如下所示
BUCKET_NAME=mxx-blognew/dbbackup
# 上传到MinIO后的文件名(可选,如果不指定则与本地文件名相同)
MINIO_FILE_NAME=$(basename "$LOCAL_FILE_PATH")
# 检查本地文件是否存在
if [ ! -f "$LOCAL_FILE_PATH" ]; then
    echo "本地未找到文件"
    exit 1
fi
# 上传文件至MinIO
mc cp "$LOCAL_FILE_PATH" "${MINIO_ALIAS}/${BUCKET_NAME}/${MINIO_FILE_NAME}"
# 检查上传是否成功
if [ $? -eq 0 ]; then
    echo "上传成功"
else
    echo "上传失败"
    exit 1
fi
🔵多个文件的shell脚本:
#!/bin/bash
# MinIO别名
MINIO_ALIAS=myminio
# 要上传的本地文件路径
LOCAL_DIR_PATH=/home/project/dbBackUp/test
# 目标MinIO桶名称
BUCKET_NAME=mxx-blognew/dbbackup
# 检查本地文件夹是否存在
if [ ! -d "$LOCAL_DIR_PATH" ]; then
    echo "本地文件夹未找到!!!"
    exit 1
fi
# 上传文件夹中的所有文件到MinIO
find "$LOCAL_DIR_PATH" -type f | while read -r file; do
    # 获取文件相对于本地文件夹的路径
    relative_path=${file#$LOCAL_DIR_PATH/}
    # 上传文件至MinIO
    mc cp "$file" "${MINIO_ALIAS}/${BUCKET_NAME}/${relative_path}"
    
    # 检查上传是否成功
    if [ $? -eq 0 ]; then
        echo "文件上传成功!"
    else
        echo "文件上传失败"
    fi
done
上传
执行上传文件的脚本即可,比如我的:
上传文件夹中所有文件:
sh minio-beifen-duoge.sh
上传单个文件:
sh minio-beifen-dange.sh 

实际场景
最后,我们来看看如何结合sql备份,然后同步上传到minio桶中的案例。
#!/bin/bash
# 数据库备份脚本
# ******配置部分*****
# 数据库用户名
DB_USER="root"            
# 数据库密码,请替换为您的密码 
DB_PASSWORD="123456" 
# 备份文件存放目录
BACKUP_DIR="/home/project/dbBackUp/db" 
# gzip压缩等级
COMPRESSION_LEVEL=9   
# 保留备份的天数     
KEEP_DAYS=7         
# 获取当前时间戳       
DATE=$(date +"%Y%m%d%H%M%S") 
# 日志文件路径
LOG_FILE="$BACKUP_DIR/backup.log" 
#当前时间
datetime1=$(date +"%Y%m%d")
# MinIO别名
MINIO_ALIAS="myminio"
# 要上传的本地文件路径
LOCAL_DIR_PATH="/home/project/dbBackUp/db"
# 目标MinIO桶名称
BUCKET_NAME="mxx-blognew/dbbackup/gouyun"
# 创建备份目录如果它不存在
mkdir -p "$BACKUP_DIR"
# ******上传部分*****
# 指定要备份的数据库列表
# 请替换为您的数据库名称,多个数据库之间用空格分隔
DATABASES="db1 db2 db3" 
# 开始备份
for DB in $DATABASES; do
    # 备份单个数据库
    mysqldump -u "$DB_USER" -p"$DB_PASSWORD" --databases "$DB" --single-transaction --quick --lock-tables=false --routines --triggers > "$BACKUP_DIR/${DB}_$DATE.sql"
    # 压缩备份文件
    gzip -$COMPRESSION_LEVEL "$BACKUP_DIR/${DB}_$DATE.sql"
    # 记录备份日志
    echo "备份 $DB 数据库 $DATE" >> "$LOG_FILE"
	#文件路径
	FILE_PATH="$BACKUP_DIR/${DB}_$DATE.sql.gz"
	# 文件名称
	FILE_NAME="${DB}_$DATE.sql.gz"
    echo "开始上传文件:$FILE_PATH下的$FILE_NAME文件 到minio存储桶: $BUCKET_NAME"
	# 上传文件至MinIO
	mc cp "$FILE_PATH" "${MINIO_ALIAS}/${BUCKET_NAME}/$datetime1/$FILE_NAME"
	
	# 检查上传是否成功
	if [ $? -eq 0 ]; then
		echo "文件上传成功!"
	else
		echo "文件上传失败"
	fi
done
echo "删除$KEEP_DAYS 天前的备份文件" >> "$LOG_FILE"
# 删除旧备份,保留最近$KEEP_DAYS天的备份
find "$BACKUP_DIR" -name "*.gz" -type f -mtime +$KEEP_DAYS -exec rm {} \;
echo "刪除成功!!"
# 脚本执行结束
echo "备份完成" >> "$LOG_FILE"
echo "备份完成"

##green##
🟢
至此,此文over。


















