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

news2025/6/21 3:04:08

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

前言

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第20天|munger85

GAN图像生成 生成对抗网络中是为了让我们生成的东西向期望的那样,就是为了让生成的东西很像,真的,例如用它来画画。就是描述整个网络的逻辑和目的,它有两部分组成,一个是生成器,一个是辨别器。他希望的是辨…

C++程序编程中的 SetWindowLong 函数的几个常见用途(附源码)

目录 1、API函数SetWindowLong说明 2、修改窗口风格 3、给窗口指定新的窗口消息处理函数,以拦截窗口消息 4、可以给窗口设置关联的UserData数据,方便在窗口内部使用这些数据 5、64位程序中需要使用SetWindowLongPtr 6、最后 C++软件异常排查从入门到精通系列教程(专栏…

Sping项目只能勾选17和21 (已解决) 导致的后续Invalid bound statement (not found):

问题发现 今天创建项目的时候发现 idea初始化spring的时候选择不了Java8 解决方案:替换URL为 https://start.aliyun.com/ 将IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。 将https://start.spr…

TortoiseSVN安装使用教程(超详细)

目录 前言1. 下载2. 安装2.1 安装TortoiseSVN(看图操作)2.2 安装语言包(看图操作) 3. 使用3.1 版本库浏览器3.2 其他教程 前言 TortoiseSVN:(俗称小乌龟)Subversion版本控制系统的一个免费开源客…

Pytorch基础:Tensor的view方法(非连续张量也可以使用view)

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中,view是Tensor的一个重要方法,用于返回一个改变了形状,但数据和数据的顺序与原来一致的新张量,但是新张…

夸克Android一面凉经(2024)

夸克Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《夸克Android一面凉经(2024)》。 面试职位: 智能信息-客户端开发工程师-夸克小说 技术一…

20240728 每日AI必读资讯

Google Gemini 聊天机器人更新 可以免费使用Gemini 1.5 Flash 1. 引入Gemini 1.5 Flash模型: • 提供更快和更高质量的响应。 • 提升推理和图像理解能力。 • 上下文窗口扩大到 32Ktokens,允许进行更长的对话和处理更复杂的问题。 • 即将支持通过 Goo…

【你也能从零基础学会网站开发】 SQL结构化查询语言应用基础-- SQL Server数据库开发创建表之FOREIGN KEY外键约束完全详解最详细!

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 浅谈FOREIGN K…

故障诊断 | CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断(Matlab)

效果一览 文章概述 故障诊断 | CNN-LSSVM卷积神经网络结合最小二乘支持向量机故障诊断(Matlab) 模型描述 使用CNN进行特征提取: 使用CNN模型对数据进行训练,通常是图像数据。 通过CNN的卷积层和池化层提取图像的特征。 将提取到的特征作为输入,可以是全连接层的输出或者卷…

系统架构师考点--系统架构设计(上)

大家好。今天我来总结一下系统架构设计相关的考点。这块考点是重中之重,每年上午场客观题占20-25分左右,下午案例题也会考到,下午论文也会考到。大家要好好学学这部分内容。 一、软件架构概述 软件架构是指从需求分析到软件设计之间的过渡过…

机器学习 | 分类算法原理——逻辑回归

Hi,大家好,我是半亩花海。接着上次的线性可分继续更新《白话机器学习的数学》这本书的学习笔记,在此分享逻辑回归这一分类算法原理。本章的分类算法原理基于《基于图像大小进行分类》项目,欢迎大家交流学习! 目录 一、…

【51CTO-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

vim的使用及退出码(return 0)

linux基础之vim快速入门 linux基础之vim快速入门_基本linux vim-CSDN博客https://blog.csdn.net/ypxcan/article/details/119878137?ops_request_misc&request_id&biz_id102&utm_termvim%E7%BC%96%E8%BE%91%E5%99%A8%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E4%BA%…

达梦数据库激活

SSH登录 192.168.0.148 账号:root 密码:xxx 1.上传 dm.key 文件到安装目录 /bin 目录下 cd /home/dmdba/dmdbms/bin rz -E dm.key2.修改 dm.key 文件权限 chown -R dmdba.dinstall dm.key3.打开数据库工具,新建查询,输入 cd /…

Odoo 17 仪表盘开发指南:打造高效的数据可视化中心

在现代企业管理中,数据驱动的决策至关重要。Odoo 17 提供了强大的平台来构建自定义仪表板, 适用于数据统计、工作台、驾驶舱、数据可视化等场景,以便用户能够一目了然地监控关键指标并做出及时反应。本文将介绍如何在 Odoo 17 中开发一个灵活且高度定制化的仪表盘系统,包括…

CVE-2018-8715

目录 前言影响范围漏洞利用0x04 漏洞修复指纹总结 前言 AppWeb 是一个嵌入式 Web 服务器,基于由 Embedthis Software LLC 开发和维护的开源 GPL 协议。它是用 C/C 编写的,几乎可以在任何现代操作系统上运行。当然,它的作用是为嵌入式设备提供…

【CodinGame】趣味算法(教学用) CLASH OF CODE -20240728

文章目录 正文数字*三角形四舍五入 写在最后END 正文 数字* import sys import math# Auto-generated code below aims at helping you parse # the standard input according to the problem statement.n int(input()) for i in range(n):a, b [int(j) for j in input().sp…

【2024最新】国内6个免费的AI绘画网站,支持Midjourney等绘画模型

一、什么是AI绘画? AI绘画,也称为人工智能绘画或机器生成艺术,是指使用人工智能技术来创作视觉艺术作品的过程。这种技术通常涉及到深度学习模型,尤其是生成对抗网络(GANs)和变分自编码器(VAEs…

CTRL+Y,定位后快速复制

复制后可在EXCEL中进行粘贴。