使用Python将OSS文件免费下载到本地:项目分析和准备工作

2023-12-19 22:52

本文主要是介绍使用Python将OSS文件免费下载到本地:项目分析和准备工作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
大家好,我是水滴~~

本文将介绍如何使用Python编程语言将OSS(对象存储服务)中的文件免费下载到本地计算机。我们先进行项目分析和准备工作,为后续的编码及实施提供基础。

《Python入门核心技术》专栏总目录・点这里

文章目录

  • 1. 前言
  • 2. 项目分析
  • 3. 准备工作


1. 前言

在当今的云计算环境中,OSS(对象存储服务)成为存储和管理文件的常见选择。然而,随着时间的推移,OSS中的文件数量不断增加,导致存储费用越来越高(OSS计费规则)。

OSS产品定价中明确了存储费用的单价为元/GB/月,例如标准型(本地冗余存储)单价为0.12元/GB/月,那么存储1T的文件,每月约为122.88元。

为了节约成本,我们可以将旧的数据从OSS中下载到本地计算机,以便进行进一步处理或离线访问。通过使用Python编程语言,我们可以实现这个目标,并且可以免费完成。

本文将介绍如何使用Python编写代码,将OSS中的文件免费下载到本地。我们将从项目分析和准备工作开始,为后续的编码及实施提供基础。

2. 项目分析

阿里云为我们提供了两种网络环境来访问OSS资源,分别是外网访问和内网访问(OSS访问域名和数据中心)。然而,如果我们选择使用外网地址来下载文件,将会产生流量费用,这就无法实现免费下载的目标。不过,当您通过OSS内网地址访问OSS资源时,是不会收取任何流量费用的(ECS实例通过OSS内网地址访问OSS资源)。因此,利用OSS内网地址进行下载可以让我们免费获取所需的文件,从而节约了成本。这是一个非常有利的选择,尤其对于需要频繁下载大量文件的场景来说。

通过OSS内网地址访问OSS资源有以下两种方式:

  • 与OSS同地域ECS实例可以直接通过内网访问有权限的OSS资源。
  • 与OSS不同地域的ECS实例或公网用户可通过配置ECS反向代理,间接实现通过OSS内网地址访问OSS资源。

下面是借助于ECS服务器将OSS中的文件下载到本地的一个大致流程:

在这里插入图片描述

3. 准备工作

为了确保在下载过程中文件不丢失,需要规则好一个完整的流程。结合OSS的官方文档,可以分为下面五个步骤:

  1. 列举OSS中文件,并将文件名称存入MySQL数据库中,这样数据库中就会有一个完整的、待下载的文件列表;

  2. 查询数据库中的文件列表,逐个从OSS中下载文件到ECS服务器中;

  3. 下到好后,从OSS中删除文件;

  4. 再从ECS服务器下载到本地;

  5. 最后删掉ESC服务器中文件。

我们将这个完整流程记录到MySQL数据库中,表名为oss_file,字段如下图所示:

在这里插入图片描述

其中status为状态字段,对应着上边流程中的五个步骤。

在开始编程之前,需要将该表创建好,下面是建表语句:

CREATE TABLE `oss_file` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`prefix` varchar(255) NOT NULL COMMENT '前缀',`key` varchar(255) NOT NULL COMMENT '文件名',`last_modified` datetime NOT NULL COMMENT '最后修改时间',`size` bigint(20) NOT NULL COMMENT '文件大小',`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态:0-未处理;1-已下载至ECS;2-已从OSS删除;3-已下载至本地;4-已从ECS删除(完成)',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `i_key` (`key`),KEY `i_status_last_modified` (`status`,`last_modified`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

字段解释:

  • id:自增主键

  • prefix:文件名前缀

  • key:文件名,即 OSS 中的文件名

  • last_modified:OSS中的最后创建时间

  • size:文件大小,单位为字节

  • status:状态,标识该文件的处理进度

  • i_keykey字段的唯一索引(OSS中的文件名是唯一的)

  • i_status_last_modifiedstatuslast_modified 字段的联合索引(后面代码中会利用这两个字段查询文件列表)

而代码也将分为四部分,主要有:

  1. 列举OSS文件,并存入数据库的oss_file表中;

  2. 将OSS中文件下载到ECS中,并从OSS中删除;

  3. 提供一个从ECS中下载和删除文件的接口;

  4. 将ECS中文件下载到本地,并删除ECS中的文件。

后面的文章会逐一介绍每一部分代码,欢迎继续收看。

这篇关于使用Python将OSS文件免费下载到本地:项目分析和准备工作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513992

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]