⚒linux通过shell脚本上传文件至minio中

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

前言

之前数据库是备份到了七牛云上了,但是眼看着数据库文件越来越大,七牛云里面的余额越来越少,所以,转移阵地。

家里的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

image.png

配置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 

image.png

实际场景

最后,我们来看看如何结合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 "备份完成"



image.png

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值