相关文章推荐
威武的企鹅  ·  opencv ...·  7 月前    · 
威武的香瓜  ·  Android studio 中使用svn ...·  1 年前    · 
伤情的莴苣  ·  unity game engine - ...·  1 年前    · 
慷慨大方的脸盆  ·  Wpf xceed data grid ...·  1 年前    · 
无聊的豆浆  ·  springboot - ...·  1 年前    · 

利用多版本控制,您可以在一个桶中保留多个版本的对象,使您更方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。

默认情况下,新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。

多版本控制

版本说明:

版本 描述
最新版本 多版本控制开启后,同名对象多次操作,每次操作都会对应一个版本号进行保存。最后一次操作保存的版本号,为最新版本。
历史版本 多版本控制开启后,同名对象多次操作,每次操作都会对应一个版本号进行保存。除最后一次外的,其他保存的版本号为历史版本。

只有 MinIO 本身才能生成版本 ID,并且不能被编辑。版本 ID 很简单,使用DCE 1.1 v4 UUID 4(基于随机数据)算法,UUID 是 128 位数字,旨在在空间和时间上具有很高的唯一性,并且在计算上难以猜测。它们是全球唯一标识符,无需联系全球注册机构即可在本地生成。UUID 旨在作为具有极短生命周期的大量标记对象的唯一标识符,并可靠地识别网络中非常持久的对象。

当您将对象放入启用版本控制的存储桶中时,不会覆盖非当前版本。下图显示当一个新版本的PUT 到一个已经包含同名对象的桶中时,原来的对象(ID =fae684ddsd )留在桶中,MinIO 生成一个新版本(ID = fae684da),并添加存储桶的较新版本。

在这里插入图片描述
当你 DELETE 一个对象时,所有版本都保留在存储桶中,MinIO 会添加一个删除标记,如下所示:
在这里插入图片描述
现在删除标记成为对象的当前版本。默认情况下,GET 请求总是检索最新存储的版本。因此,当当前版本是删除标记时执行简单的 GET 对象请求将返回404。
在这里插入图片描述
通过指定如下所示的版本 ID GET 请求,您可以检索特定对象版本。
在这里插入图片描述
永久删除对象需要指定要删除的版本,只有拥有相应权限的用户才能永久删除版本。如下所示,使用特定版本 ID 调用的 DELETE 请求会从存储桶中永久删除对象。不会为具有版本 ID 的 DELETE 请求添加删除标记。
在这里插入图片描述

  • 列出桶内对象列表时默认列出最新对象列表。
  • 可以指定版本号下载对象,不指定版本号默认下载最新的对象。
  • MinIO 上的所有 Bucket 始终处于以下状态之一:未版本控制(默认)和所有其他现有部署、启用版本控制或暂停版本控制。
  • 版本控制状态适用于启用版本控制的存储桶中的所有对象。首次为存储桶启用版本控制时,存储桶中的对象此后始终进行版本控制并被赋予唯一的版本 ID。
  • 可以在启用版本控制的情况下创建现有或更新的存储桶,最终也可以暂停。对象的现有版本保持原样,仍然可以使用版本 ID 访问。
  • 在删除存储桶之前,应删除所有版本,包括删除标记。
  • 版本控制功能仅在纠删码和分布式纠删码设置中可用。

开启多版本

必须在存储桶上显式启用版本控制,默认情况下不启用版本控制。启用对象锁定的存储桶会自动启用版本控制。启用和暂停版本控制是在存储桶级别完成的。

要控制数据保留和存储使用,请将对象版本控制与对象生命周期管理结合使用。如果您的非版本控制存储桶中有对象过期生命周期策略,并且您希望在启用版本控制的存储桶上保持相同的永久删除行为,则必须添加非当前过期策略。非当前到期生命周期策略将管理启用版本控制的存储桶中非当前对象版本的删除。(启用版本的存储桶维护一个当前和零个或多个非当前对象版本。)

1. 页面开启

直接在桶管理页面,可以查看版本控制信息,点击切换开启或者关闭。
在这里插入图片描述

2. SDK 开启

通过以下API可以开启或者关闭版本控制:

// Enable versioning on 'my-bucketname'.
      minioClient.setBucketVersioning(
          SetBucketVersioningArgs.builder()
              .bucket("my-bucketname")
              .config(new VersioningConfiguration(VersioningConfiguration.Status.ENABLED, null))
              .build());
      System.out.println("Bucket versioning is enabled successfully");
      // Suspend versioning on 'my-bucketname'.
      minioClient.setBucketVersioning(
          SetBucketVersioningArgs.builder()
              .bucket("my-bucketname")
              .config(new VersioningConfiguration(VersioningConfiguration.Status.SUSPENDED, null))
              .build());
      System.out.println("Bucket versioning is suspended successfully");

同一个存储桶,上传多个同名对象,可以看到添加了多个版本号。
在这里插入图片描述
可以在获取对象时,指定版本号:

            InputStream stream =
                    minioClient.getObject(
                            GetObjectArgs.builder().bucket("aaaaa").object("my-objectname").versionId("aadsadsafsa").build());
                    前言使用场景利用多版本控制,您可以在一个桶中保留多个版本的对象,使您更方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。默认情况下,新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。多版本控制版本说明:版本描述最新版本多版本控制开启后,同名对象多次操作,每次操作都会对应一个版本号进行保存。最后一次操作保存的版本号,为最新版本。历史版本多版本控制开启后,同名对象多次操作,每次操作都会对应一个版本号进行保存。除最后一
An attempt was made to call a method that does not exist. The attempt was made from the following location:
  io.minio.S3Base.<clinit>(S3Base.java:105)
The following method did not exist:
  okhttp3.Requ...
				
minio version RELEASE.2022-02-01T18-00-14Z minio version RELEASE.2022-02-01T18-00-14Z minio version RELEASE.2022-02-01T18-00-14Z minio version RELEASE.2022-02-01T18-00-14Z minio version RELEASE.2022-02-01T18-00-14Z nohup ./minio server ./data/ --console-address :8090 > nohup.out 2>&1 & 5.启动后会在data/生成一个.minio.sys的隐藏文件夹 vi ./data/.minio.sys/config/config.json access_key为用户名,secret_key为密码, 修改为对应值, 保存后退出, 重启应用即可 资源整理不易还请给你赞哦!!!!!!!!!!!!
Minio是一个开源的对象存储项目,它提供了S3兼容的API接口,可以搭建私有云存储服务。在使用Minio时,我们需要对Minio桶进行一系列权限配置。 首先,我们需要创建一个桶,并设置桶的访问权限。桶的访问权限有三种:公共读写、私有读写和公共读私有写。公共读写意味着任何人都可以访问和修改桶中的对象;私有读写意味着只有桶拥有者拥有访问和修改桶中的对象的权限;公共读私有写意味着所有人都可以访问桶中的对象,但只有桶拥有者有权修改桶中的对象。 其次,我们需要为桶中的对象设置访问权限。对象的访问权限有四种:私有、公共读、公共读写和限制访问。私有意味着只有桶拥有者可以访问和修改对象;公共读意味着所有人都可以访问对象,但只有桶拥有者有权修改对象;公共读写意味着所有人都可以访问和修改对象;限制访问可以通过预签名URL、策略或条件指定等方式来限制对象的访问权限。 最后,我们需要为每个请求定义合适的策略,并使用用户、群组或IAM角色进行授权。可以为不同的用户、群组或IAM角色定义不同的权限,以控制他们能够访问和修改的对象及其操作。 总之,Minio桶的权限配置是一个细致而繁琐的过程,需要根据实际业务需求和安全性要求进行设置。只有合理设置权限,才能保障数据的安全和可靠性。
Access to XMLHttpRequest at ‘http://xx‘ from origin ‘http://xx‘ has been blocked by CORS policy: 32699