如何迁移 OSS 的文件_1|学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习如何迁移 OSS 的文件_1

开发者学堂课程【管理功能玩转对象存储 OSS 使用入门如何迁移 OSS 的文件_1】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/378/detail/4744


如何迁移 OSS 的文件_1


内容介绍

通过 API/SDK 上传文件

、Put0bject 注意事项

 

一、通过API/SDK上传文件

1、概述

Oss 所有的操作都是基于底层  resourceful  API 接口实现,因此所有关于 oss 的操作均可以通过 API 或者 SDK 进行操作,数据迁移样不例外,用户可遍历所有需上传的文件,通过 API/SDK 中的 Put0bject、PostObject  MultipartUpload 三个接口完成上传操作。

2、区别

(1)Put0bject

可用于服务器端 oss 上传不易太大的文件。

(2)PostObject

适合于通过html表单直接上传文件到 bucket, 不经过用户的应用服务器,这样减少用户应用服务器的负载情况。

(3)MultipartUpload

支持断点上传,适合于网络质量较差或者文件大小较大的情况下的上传。

3、优缺点

(1)优点:

 适用场景广泛、用户只要可以获取到原数据,即可在任何地点通过该方式迁移数据 oss ,不需要限制用户原数据的来源方式,以及其文件格式等。

 使用灵活,用户可根据自己的需要自行编写迁移逻辑。用户可以自行选择是全量迁移或者增量迁移,或者舍去部分文件格式不进行迁移等复杂的迁移轨迹,都由用户通过代码来实现。

(2)缺点:

 操作复杂,用户需要自行实现迁移逻辑包括便利源数据调用上传接口等操作,都需要用户通过代码来实现,需要用户有一定的代码基础。

 速度较慢如果用户在调用 API 或者 SDK 的时候选择 n.point为 oss 的公网域名的情况下,该上传操作即需要通过公网来传输虽然 oss 服务器端并未限制上传操作的带宽,但是该操作可能会受到源端公网带宽以及网络链路的影响,而导致上传速度较慢。

4、操作

通过 java sdk  Put0bject  MultipartUpload 的两个接口完成上传操作

(1)登陆阿里云的官网在帮助与文档中寻找 oss 点击 sdk 手册点击 sdk 开发包下载点击 java sdk  开发包点击下载最新的 java sdk 下载完成后将得到对应的 sdk 压缩包对其进行解压可以得到相应的文件夹点击进入文件夹可以得到整个 sdk 的文件目录其中包含 demo 主要是对 sdk 使用的实例用户可以根据 read me.txt 里的帮助文档来直接调用对应的 java 包进行应用 sdkDoc 主要包含 sdk 的说明文档包含其中的各个接口以及类的说明lib 包含了 fdk 的依赖包用户在加入 sdk 的时候需要将对应的 lib 文件夹下的所有 java 包加入工程中才可以正常使用 sdksamples 为用户提供的一些示例代码,根据其类别对其进行了分类,然后用户可以根据各名称进行挑选。Sources 主要包含了 SDK 的源代码,用户如果需要修改源代码,可以根据本源代码进行修改。read me.txt 包含了本 SDK 的一个说明文档。

(2)接下来通过 java sdk 调用 API  Putobject 和 MultipartUpload 完成上传操作。首先找到本地 eclipse 开发环境,将其打开。菜单栏中新建 Java project 这里定义 project 的名称为 OSStest_1 选择 next 。在 library 里添加额外的炸包。这时候找到 SDK 中的内部文件夹,将内部文件夹中的所有 java 找到 sdk 中的 lib 文件夹 lib 文件夹中的所有文件添加进来,点击 finish这样 JavaSDK 的项目就建成了,可以在 sources 里面添加对应的 class 来完成对应的操作,这里直接应用 SDK 中提供的示例代码进行讲解。

(3)首先通过 Putobject 上传文件,这里对 oss object sample.Java 里面的内容进行了更改,其中 Putobject 中主要的逻辑代码如以下代码

private static final String ACCESS_ID = "<your access key id>";

private static final String ACCESS_KEY= "<your access key secret>";

private static final String Endpoint="http//ass-cn-hangzhou.allyuncs.com";

publie static void maia(String[] args) throws Exception (

String bucketname = bucketname" ,

string key ="photo1-Jpg" ;

String filenme= "di/temp/photo. jpg" ;

其中重要的几个部分,分别注意是 ACCESS_KEY、 ACCESS_ID  ,这两个分别对应于用户账号的 ACCESS_KEY  ACCESS_secret 。Endpoint 指定的是对应的 bucket 所属的域名,用户可以根据 bucket 的地理数据中心来得到对应的 Endpoint 的值。这里以杭州为例, bucketname 指定的是用户设置的 bucket 的名称,用户可以选择自己在 os s的控制台上创建的 oss bucket 的名称,Key 指的是它对应上传的 object,它的 K 这里的 k 包含了 object它的相对目录以及它的文件名,用户可以在这个地方指定其相对目录,比如 aliyuntest 目录下的 picture1.pig 文件,根据 idkey 和Endpointpoint,可以用一个 ossclient 的对象得到对应的 client对象。

(4)调用 client 对象的 putobject 的接口来实现上传操作,这里主要有两种方法,第一种就是根据 stream lie 来上传的,首先去得到一个文件,然后将文件的内容过程捕获成 stream lie ,再通过putobject 上传进入 client 。这里需要注意的是在通过 lie 形式上传的时候需要指定它对应的  objectmatadata 其中必须要指定的有一个参数是 contentlength 该参数指定的文件的大小,而 contentType 主要是指定了文件的类型。第二种方法就是直接通过文件的形式进行上传,该方法如果是用户本地已有的文件建议使用第二种方法,这里只需要new 一个 file 对象即可通过 putobject 完成上传

 

二、Put0bject注意事项

1、用户在 metaData 中指定 Content -MD5 请求头,OSS 会在接收到完全的 body 之后会计算 body  Content -MD5 并与用户指定 MD5 请求头检查一致性如果一致性校验通过则该文件上传成功如果校验失败则会出现上传失败的操作。

2、如果 Head 中没有加入 Content length 参数, 会返回 411 Length Required 错误如果在 Head 中加入参数过小,可能会导致文件只上传了前半部分的 Content length 长度的文件,而后半部分的文件则直接进行丢弃。如果用户设置的 Content length 参数过大,可能会导致 oss 一直等待客户端发起的包,一直到 time out报超时错误。

3、ID/KEY/ENDPOINT 设置有误会报403, 错误码: AccessDenied。如果用户在创建 oss client 时候指定的 idkey  ENDPOINT 有误的时候,可能会报 403AccessDenied 的问题

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之上传素材文件不在同一地域的OSS,怎么上传多张图片
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
46 1
|
3月前
|
存储 运维 Serverless
函数计算产品使用问题之OSS触发器是否可以只设置文件前缀
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在使用MaxCompute进行数据集成同步到OSS时,出现表名和OSS文件名不一致且多了后缀,该如何处理
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
运维 Serverless 对象存储
函数计算产品使用问题之如何配合OSS实现接口收到的图片或文件直接存入OSS
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
分布式计算 DataWorks 数据管理
DataWorks操作报错合集之使用OSS读取CSV文件到ODPS时遇到报错,一般是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
4月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
18天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决