批量解冻文件

归档、冷归档或深度冷归档存储类型的数据在存储时为了降低成本而被冻结无法直接读取,您可以使用ossutil 2.0提供的restore(解冻文件)命令对文件进行批量解冻,完成解冻后支持访问。

说明

归档存储类型的文件支持开启归档直读功能,而冷归档和深度冷归档文件则必须通过解冻操作才能访问。

前提条件

批量解冻

ossutil 2.0 提供了多种方式来执行批量解冻操作,允许您根据业务需求灵活选择最合适的方案。

  • 通过指定前缀实现批量解冻位于相同前缀下的所有目标文件。

  • 通过读取包含待解冻对象的文件列表或清单批量执行解冻任务。

计费说明

解冻文件会产生存储费用、数据取回容量费用、请求费用,如果您解冻的是冷归档和深度冷归档类型的数据,还会产生临时存储费用。

  • 存储费用:归档、冷归档、深度冷归档类型的Object在解冻过程中和完成后,均按照相应的存储类型计算存储费用。更多信息,请参见存储费用

  • 数据取回容量费用:解冻归档、冷归档、深度冷归档类型的Object会产生数据取回容量费用。更多信息,请参见数据处理费用

  • 请求费用:

    • 解冻归档类型的Object会产生Put类型请求次数费用。更多信息,请参见请求费用

    • 解冻冷归档、深度冷归档类型的Object会产生取回请求次数费用。更多信息,请参见请求费用

  • 临时存储费用:冷归档、深度冷归档类型的Object在解冻时,会生成一份标准存储类型的文件副本用于访问,该文件在解冻时间结束前会以标准存储的存储费率计算临时存储费用。更多信息,请参见临时存储费用

注意事项

  • 建议您指定-j参数增加 ossutil v2.0 的并发度以提升命令执行效率,在机器 CPU 和内存支持的情况下,推荐设置-j 128

  • 可以通过对Meta字段过滤,跳过已解冻或正在解冻中的Object。

  • 批量解冻时,错误结果会存在ossutil_output/文件夹下。

命令格式

ossutil restore oss://bucket/object [flags]

参数

类型

说明

-r, --recursive

/

进行递归操作。启用此选项时,将对存储空间中所有符合条件的对象进行操作;否则,仅处理指定路径的对象。

-j,--job

/

多文件操作的并发任务数,默认值为3,取值范围为1~10000。

--days

int

解冻天数。取值范围1~365。

说明

在批量操作中,如果对象包含多种存储类型且 --days 设置超出某种类型的最大支持值,则会自动调整为该类型的最大值。

例如:归档存储类型最多支持 7 天,深度冷归档最多支持 365 天。当 --days 设置为 100 时,归档存储对象将自动调整为 7 天,而深度冷归档对象仍为 100 天。

--metadata-include

stringArray

指定需包含的元数据规则,即仅显示符合这些规则的Object。

--metadata-exclude

stringArray

指定需排除的元数据规则,符合条件的Object将不被显示。

--list-format

string

列表文件的格式,取值:plaininventory

--list-manifest-from

string

当列表文件的格式为 inventory 时,必须配置此参数以读取文件中的描述信息。

关于该命令支持的更多参数,请参见参数说明

示例

解冻固定前缀下的全部对象

以下命令用于解冻存储空间examplebucket中前缀为prefix的全部对象。

ossutil restore -r oss://examplebucket/prefix -j 128

解冻特定存储类型的对象

说明

ossutil v2.0 中多条件过滤的匹配规则:

  • include 类规则从左到右逐条处理,一旦匹配上,则会立即包含该文件或目录。

  • exclude 类规则也是从左到右匹配,一旦匹配上,则会立刻排除该文件或目录。

因此如果需要筛选所有不含 Restore 信息的冷归档对象,需要先指定参数--metadata-exclude "x-oss-restore=*",后指定参数--metadata-include "x-oss-storage-class=ColdArchive"

以下命令用于解冻所有存储空间examplebucket中存储类型为冷归档的所有对象。

ossutil restore -r oss://bucket --metadata-include "x-oss-storage-class=ColdArchive" -j 128

以下命令用于解冻存储空间examplebucket中未被解冻过的冷归档对象,并设置解冻后的对象保持可读状态的持续时间为7天。

ossutil restore -r oss://bucket -j 128 --days=7 --metadata-exclude "x-oss-restore=*" --metadata-include "x-oss-storage-class=ColdArchive" -j 128

使用本地列表解冻

您可以通过读取包含待解冻对象的文件列表执行解冻任务。

对象的列表格式:每行包含一个对象,格式为标准 OSS 对象路径,如内容如下:

oss://examplebucket/object1
oss://examplebucket/object2
oss://examplebucket/object3

以下命令用于解冻本地列表object_list.txt中未被解冻过的对象,并设置解冻后的对象保持可读状态的持续时间为7天。

ossutil restore list://object_list.txt --days=7 --no-check-status
说明

基于本地列表进行批量解冻时,添加--no-check-status参数忽略解冻前的对象状态检查,可进一步提升执行效率(v2.0.4 以上版本支持)。

使用本地清单解冻

说明

执行清单任务后,会在清单结果中生成一个 csv.gz 和 manifest.json 文件。从清单文件里解冻对象需要用到这两个文件,关于如何创建清单请参见存储空间清单

以下命令用于通过 OSS 清单批量解冻所有清单中的冷归档对象。

ossutil restore list://object_list.csv.gz --list-format inventory --list-manifest-from manifest.json --days=7 --no-check-status --metadata-include "x-oss-storage-class=ColdArchive"