开启版本控制下如何下载、删除、恢复文件

您所在的位置:网站首页 删除历史资料 开启版本控制下如何下载、删除、恢复文件

开启版本控制下如何下载、删除、恢复文件

2024-07-17 10:48| 来源: 网络整理| 查看: 265

注意事项

当您在已开启版本控制的Bucket中进行上传文件、列举文件、下载文件、删除文件、恢复文件等操作时,有如下注意事项:

对于已开启版本控制的Bucket中的Object,OSS会维护一个当前版本Object以及零个或零个以上历史版本Object。

如果在Bucket开启版本控制前上传了Object,则OSS将Object的版本ID值置为null。

本文图示中的版本ID均以简短版本ID代替。

关于版本控制的更多信息,请参见版本控制介绍。

上传文件

在已开启版本控制的Bucket中上传Object时,OSS会为这些上传的Object自动添加唯一的版本ID。

说明

PutObject、PostObject、CopyObject 、MultipartUpload等操作都会为新生成的Object自动添加唯一的版本ID。

通过PUT操作上传Object(key=example.jpg)时,OSS为该Object指定了唯一的版本号(ID=111111),如下图所示。

通过PUT操作第一次上传同名Object(key=example.jpg)时,原始Object版本(ID=111111)作为历史版本,生成的新版本(ID=222222)将作为当前版本保存在Bucket中。当再次上传同名Object时,原始Object版本(包括ID=111111以及ID=222222)将作为历史版本,而生成的新版本(ID=333333)则作为当前版本保存在Bucket中,如下图所示。

使用OSS控制台

登录OSS管理控制台。

单击Bucket 列表,然后单击目标Bucket名称。

在左侧导航栏,选择文件管理>文件列表

文件列表页面,单击上传文件

上传文件面板,按如下说明配置各项参数。

设置基础选项。

参数

说明

上传到

设置文件上传到目标Bucket后的存储路径。

当前目录:将文件上传到当前目录。

指定目录:将文件上传到指定目录,您需要输入目录名称。如果输入的目录不存在,OSS将自动创建对应的文件目录并将文件上传到该目录中。

目录命名规范如下:

请使用符合要求的UTF-8字符;长度必须在1~254字符之间。

不允许以正斜线(/)或反斜线(\)开头。

不允许出现连续的正斜线(/)。

不允许出现名为 .. 的目录。

文件ACL

设置文件读写权限ACL。

继承Bucket:以Bucket读写权限为准。

私有(推荐):只有文件Owner拥有该文件的读写权限,其他用户没有权限操作该文件。

公共读:文件Owner拥有该文件的读写权限,其他用户(包括匿名访问者)都可以对文件进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。

公共读写:任何用户(包括匿名访问者)都可以对文件进行访问,并且向该文件写入数据。这有可能造成您数据的外泄以及费用激增。如果被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您为文件配置公共读写权限。

关于文件ACL的更多信息,请参见设置Object ACL。

待上传文件

选择您需要上传的文件或文件夹。

您可以单击扫描文件扫描文件夹选择本地文件或文件夹,或者直接拖拽目标文件或文件夹到待上传文件区域。

如果上传文件夹中包含了无需上传的文件,请单击目标文件操作列的移除将其移出文件列表。

重要

在未开启版本控制的Bucket中上传文件时,如果上传的文件与已有文件同名,则覆盖已有文件。

在已开启版本控制的Bucket中上传文件时,如果上传的文件与已有文件同名,则上传的文件将成为最新版本,已有文件将成为历史版本。

可选:单击高级选项右侧的image.png图标,设置文件存储类型、加密方式等高级选项。

参数

说明

存储类型

设置文件存储类型。 取值范围如下:

继承Bucket(默认):以Bucket存储类型为准。

标准存储:提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问。适用于各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景。

低频访问存储:提供高持久性、较低存储成本的对象存储服务。有最小计量单位(64 KB)和最低存储时间(30天)的要求。支持数据实时访问,访问数据时会产生数据取回费用。适用于较低访问频率(平均每月访问频率1到2次)的业务场景。

归档存储:提供高持久性、极低存储成本的对象存储服务。有最小计量单位(64 KB)和最低存储时间(60天)的要求。数据需解冻(约1分钟)后访问,会产生数据解冻费用。如果开启归档直读,无需解冻就可以访问数据,会产生数据直读取回费用。适用于数据长期保存的业务场景,例如档案数据、医疗影像、科学资料、影视素材等。

冷归档存储:提供高持久性、比归档存储的存储成本更低的对象存储服务。有最小计量单位(64 KB)和最低存储时间(180天)的要求。数据需解冻后访问,解冻时间根据数据大小和选择的解冻模式决定,解冻会产生数据取回费用以及取回请求费用。适用于需要超长时间存放的冷数据,例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等业务场景。

深度冷归档存储:提供高持久性、比冷归档存储成本更低的对象存储服务。有最小计量单位(64 KB)和最低存储时间(180天)的要求。数据需解冻后访问,解冻时间根据数据大小和选择的解冻模式决定,解冻会产生数据取回费用以及取回请求费用。适用于需要超长时间存放的极冷数据,例如大数据及人工智能领域的原始数据的长期积累留存、媒体数据的长期保留、法规和合规性存档、磁带替换等业务场景。

更多信息,请参见存储类型介绍。

服务端加密方式

设置文件的服务端加密方式。 取值范围如下:

继承 Bucket(默认):以Bucket的服务器端加密方式为准。

OSS完全托管:使用OSS托管的密钥进行加密。OSS会为每个Object使用不同的密钥进行加密,作为额外的保护,OSS会使用主密钥对加密密钥本身进行加密。

KMS:使用KMS默认托管的CMK或指定CMK ID进行加解密操作。

使用KMS加密方式前,需要开通KMS服务。具体操作,请参见开通密钥管理服务。

KMS对应的加密密钥说明如下:

加密密钥格式为(CMK ID)。其中为用户主密钥的别名,CMK ID为用户主密钥ID。取值范围如下:

alias/acs/oss(CMK ID):使用默认托管的CMK生成不同的密钥来加密不同的Object,并且在Object被下载时自动解密。

alias/(CMK ID):使用指定的CMK生成不同的密钥来加密不同的Object,并将加密Object的CMK ID记录到Object的元数据中,具有解密权限的用户下载Object时会自动解密。其中为创建密钥时配置的主密钥可选标识。

使用指定的CMK ID前,您需要在KMS管理控制台创建一个与Bucket处于相同地域的普通密钥或外部密钥。具体操作,请参见创建密钥。

加密算法:可选择AES256或SM4加密算法。

用户自定义元数据

用于为Object添加描述信息。您可以添加多条自定义元数据(User Meta),但所有的自定义元数据总大小不能超过8 KB。添加自定义元数据时,要求参数以x-oss-meta-为前缀,并为参数赋值,例如x-oss-meta-location:hangzhou

单击上传文件

此时,您可以在任务列表面板的上传列表页签查看各个文件的上传进度。

使用阿里云SDK

以下仅列举常见SDK在已开启版本控制的Bucket中简单上传文件的代码示例。关于其他SDK简单上传的代码示例,请参见SDK简介

import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.common.auth.*; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import java.io.ByteArrayInputStream; public class Demo { public static void main(String[] args) throws Exception { // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // 填写Bucket名称,例如examplebucket。 String bucketName = "examplebucket"; // 填写Object的完整路径。Object完整路径中不能包含Bucket名称。 String objectName = "exampledir/object"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); try { // 以上传字符串为例。 String content = "Hello OSS"; PutObjectResult result = ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes())); // 查看此次上传Object的VersionId。 System.out.println("result.versionid: " + result.getVersionId()); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (ossClient != null) { ossClient.shutdown(); } } } }


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3