链接复制成功!
使用OMS实现跨账号同区域桶之间数据复制
使用场景
跨账号同区域复制是指将某个账号某个区域下的源桶中的数据复制到另一账号同区域下的目标桶中。
本节介绍使用对象存储迁移服务(Object Storage Migration Service,OMS)的控制台和API以及OBS的API、SDK、Browser+工具、obsutil工具实现跨账号同区域桶之间数据复制。
支持复制的对象范围:指定文件/文件夹、对象列表、对象前缀、URL列表、指定时间修改后的对象会被复制。
支持复制的对象内容:对象内容、元数据(对象名称、大小、最后修改时间、创建者、版本号、用户定义的元数据)、ACL(OBS API、obsutil支持)、存储类别、WORM保留策略(OBS API支持)、对象标签(OBS API支持)。


OBS帮助您将存储于华为云对象存储的业务数据复制到同区域另一个桶,但华为云并不感知您的数据的具体内容,也不对您使用本服务的合法合规性负责。
约束与限制
使用OMS迁移数据时的约束限制,请参见OMS约束与限制。
跨账号同区域复制费用说明
前提条件
- 已在某个账号某个区域下创建源桶。
- 已在另一个账号的同区域下创建目标桶。创建桶操作请参见创建桶。
跨账号同区域数据复制
支持使用对象存储迁移服务(Object Storage Migration Service,OMS)控制台和API来进行跨账号同区域数据迁移,支持使用OBS的API、SDK、命令行工具obsutil进行跨账号同区域数据复制。

OMS迁移数据为非自动迁移,即源桶中数据修改后,不会自动同步至目标桶。源桶中数据修改后,需要再次执行迁移任务后,才可将源桶中数据的增量同步至目标桶中。
使用OMS控制台
以下以源端和目的端数据均存放于华为云OBS桶中为例,介绍将账号E下的“华北-北京四”区域的桶bucket-E中的数据通过OMS迁移至账号F下的“华北-北京四”区域的桶bucket-F中。

- 创建源端和目的端的访问密钥(AK/SK)。
- 源端:使用账号E登录控制台,按照获取访问密钥(AK/SK)获取源端的AK/SK。

如果源端为其他云服务提供商,请参见其操作指导获取AK/SK。
- 目的端:使用账号F登录控制台,按照获取访问密钥(AK/SK)获取目的端的AK/SK。
- 源端:使用账号E登录控制台,按照获取访问密钥(AK/SK)获取源端的AK/SK。
- 使用账号F在OMS控制台创建迁移任务。
- 登录OMS管理控制台,区域选择和目的端桶同一区域。
- 在左侧导航栏选择“迁移任务”,并单击右上角的“创建迁移任务”。
- (可选)配置迁移前评估。您可以选择打开或关闭“迁移前评估”开关。
- 配置源端参数。具体参数配置,请参见表2。
表2 源端选择参数 参数
示例
说明
源端数据源
华为云
待迁移的源端云服务提供商。
源端访问密钥(Access Key)
华为云的有效AK,1获取的源端账号E的AK。
源端云服务提供商的访问密钥(AK)。最大长度是100个字符。
源端私有访问密钥(Secret Access Key)
华为云的有效SK,1获取的源端账号E的SK。
源端云服务提供商的私有访问密钥(SK),与AK相匹配。最大长度是100个字符。
KMS密钥
不开启
选择是否启用KMS密钥来加密您的源端密钥。
是否指定桶名
否
当您不具备列举桶权限,但具有列举桶中对象、获取对象元数据和获取对象权限时可以开启此参数,通过指定源端桶的路径来进行迁移。
设置说明参见表是否指定桶名的设置说明。
桶
桶名:bucket-E,源端桶名
单击“桶”下拉框或者单击“刷新”,选择待迁移数据所在的桶。对象存储迁移服务将检查源端信息填写是否正确。如果填写正确,且您的账号具有列举桶名的权限,则会在“桶”中列举您名下的所有桶。
- 配置目的端参数。具体参数配置,请参见表3。
- 单击页面右下角“下一步”,设置任务参数。
- 设置源端配置参数。更多迁移方式说明请参考选择迁移方式。
表4 源端配置选项说明 参数
示例
说明
选择迁移方式
选择文件/文件夹
根据迁移情况选择迁移方式。
选择文件/文件夹
文件夹:BigData,源端桶bucket-E中的文件夹
选择需要迁移的文件/文件夹。若不添加该参数,则默认迁移全桶的对象。若添加对象名称前缀,则会迁移所有匹配的对象。
- 设置目的端配置参数。
表5 目的配置选项说明 参数
示例
说明
保存到指定前缀
关闭
在创建迁移任务/迁移任务组时,设置“保存到指定前缀”参数,设置后源端对象迁移到目的端,会在对象名前增加设置的前缀。关于“保存到指定前缀”参数的详细设置方法请参考指定前缀参数设置规则。
配置存储策略
默认配置
选择迁移到华为云OBS后,对象的存储类型。更多存储策略说明请参见存储类别概述。
- 单击“高级选项”前面
,展开高级选项参数。根据表6,设置高级选项参数。 表6 高级选项参数说明 参数
示例
说明
元数据迁移方式
忽略元数据
为保证迁移任务正常运行,选择迁移元数据的方式。
迁移指定时间后的对象
关闭
设置迁移指定时间迁移在指定时间之后修改的源端待迁移对象。
记录失败对象
开启
选择是否记录迁移失败的对象。
解冻归档数据
关闭
选择是否自动解冻归档类型数据并迁移,开启期间会产生额外费用。
说明:目前仅支持以下云服务提供商的归档数据的自动解冻:华为云(归档存储(COLD))、阿里云(归档存储(Archive))、金山云(归档存储(ARCHIVE))、腾讯云(归档存储(ARCHIVE))、优刻得(归档存储(ARCHIVE))。
发送通知
不勾选
可以通知您迁移任务的结果。勾选时确保所选主题包含的订阅正确。 否则,SMN通知消息将不会发送到您希望的地址。
流量控制
关闭
设置迁移任务在指定时段的最大流量带宽。
同名对象覆盖方式
大小/最后修改时间对比覆盖
当源端和目的端存在同名对象时,根据哪种方式进行覆盖。
一致性校验
大小/最后修改时间校验
选择一致性校验方式,判断迁移后数据是否完整。
任务优先级
中
任务较多时,可以通过设置任务优先级制定迁移顺序。
描述
自定义输入
输入本次迁移任务的简单描述信息。最多可输入255个字符。
- 设置源端配置参数。更多迁移方式说明请参考选择迁移方式。
- 单击页面右下角“下一步”,进入“确认信息”页签。
- 确认迁移信息无误后,单击“开始迁移”启动迁移任务。
- 单击“返回任务列表”,返回迁移任务页面。查看已生成的迁移任务。
单击迁移任务名称,可查看已迁移对象数/对象总数、任务进度、迁移速率、源端/目的端信息以及您在创建迁移任务时设置的各项参数信息。
使用图形化工具OBS Browser+
约束与限制:
- 不支持复制外部桶中的文件或文件夹。
- 不支持复制归档存储对象的恢复状态。
- 仅支持将文件或文件夹复制到不同路径下。
操作步骤:
- 登录OBS Browser+。
- 选中待配置的桶,右键单击需要复制的文件或文件夹,并选择“复制”。
- 选择存放文件或文件夹的路径后,单击右键并选择“粘贴”。
使用OBS命令行工具obsutil
使用obsutil工具进行跨账号同区域复制对象,请勿开启跨区域复制模式,即请勿配置“crr”参数。

- 复制对象或批量复制时,请确保OBS桶中的源对象不发生变化,否则可能产生复制失败或者数据不一致的问题。
- 如果被复制对象的存储类型为cold,必须首先恢复被复制对象,否则无法复制成功。
- 复制时需要有被复制对象的读权限和目标桶的写权限。
- 如果没有开启客户端跨区域复制模式,复制的源桶和目标桶必须在同一个区域(Region)。
- 如果源桶是并行文件系统(POSIX),则目标桶必须是并行文件系统。
约束与限制:
- 复制的源路径和目标路径不能完全相同。
- 批量复制时,源路径和目标路径不能相互嵌套:
- 目标路径以源路径为前缀时,可能会产生递归复制。
- 源路径以目标路径为前缀时,可能会产生覆盖拷贝。
命令结构:
- Windows操作系统
- 复制单个对象
obsutil cp obs://srcbucket/key obs://dstbucket/[dest] [-dryRun][-u] [-crr] [-vlength] [-vmd5] [-p=1] [-threshold=52428800] [-versionId=xxx] [-acl=xxx] [-sc=xxx] [-meta=aaa:bbb#ccc:ddd] [-ps=auto] [-cpd=xxx] [-fr] [-o=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 批量复制对象
obsutil cp obs://srcbucket[/key] obs://dstbucket[/dest] -r [-dryRun][-f] [-flat] [-u] [-crr] [-vlength] [-vmd5] [-j=1] [-p=1] [-threshold=52428800] [-acl=xxx] [-sc=xxx] [-meta=aaa:bbb#ccc:ddd] [-ps=auto] [-include=*.xxx] [-exclude=*.xxx] [-timeRange=time1-time2] [-mf] [-o=xxx] [-cpd=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 复制单个对象
- macOS/Linux操作系统
- 复制单个对象
./obsutil cp obs://srcbucket/key obs://dstbucket/[dest] [-dryRun] [-u] [-crr] [-vlength] [-vmd5] [-p=1] [-threshold=52428800] [-versionId=xxx] [-acl=xxx] [-sc=xxx] [-meta=aaa:bbb#ccc:ddd] [-ps=auto] [-cpd=xxx] [-fr] [-o=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 批量复制对象
./obsutil cp obs://srcbucket[/key] obs://dstbucket[/dest] -r [-dryRun] [-f] [-flat] [-u] [-crr] [-vlength] [-vmd5] [-j=1] [-p=1] [-threshold=52428800] [-acl=xxx] [-sc=xxx] [-meta=aaa:bbb#ccc:ddd] [-ps=auto] [-include=*.xxx] [-exclude=*.xxx] [-timeRange=time1-time2] [-mf] [-o=xxx] [-cpd=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 复制单个对象
运行示例:
- 以Windows操作系统为例,运行obsutil cp obs://bucket-test/key obs://bucket-test2 ,复制单个对象。
obsutil cp obs://bucket-test/key obs://bucket-test2 Start at 2024-09-30 08:30:09.0815415 +0000 UTC Parallel: 3 Jobs: 3 Threshold: 50.00MB PartSize: auto CheckpointDir: xxxx [=====================================================] 100.00% 6/s 0s Waiting for the copied key to be completed on server side. Copy successfully, 19B, obs://bucket-test/key --> obs://bucket-test2/key ext.txt, cost [1708], status [200], request id [00000192420D227E4017336A12F1DC22]
- 以Windows操作系统为例,运行obsutil cp obs://bucket-test/temp/ obs://bucket-test2 -f -r,批量复制对象。
obsutil cp obs://bucket-test/temp/ obs://bucket-test2 -r -f Start at 2024-09-30 08:34:02.7819703 +0000 UTC Parallel: 5 Jobs: 5 Threshold: 50.00MB PartSize: auto CheckpointDir: xxxx Task id: 0476929d-9d23-4dc5-b2f8-0a0493f027c5 OutputDir: xxxx [=============================================================] 100.00% 10/s 0s Succeed count: 5 Failed count: 0 Metrics [max cost:298 ms, min cost:192 ms, average cost:238.00 ms, average tps:9.71, transferred size: 7.20MB] Task id: 0476929d-9d23-4dc5-b2f8-0a0493f027c5
- 更多运行示例,请参见常见示例。
参数说明:
参数 | 约束 | 描述 |
|---|---|---|
srcbucket | 必选 | 源桶名。 |
dstbucket | 必选 | 目标桶名。 |
dest | 可选 | 复制对象时的目标对象名,或批量复制时目标对象名前缀。 |
key | 复制对象时必选 批量复制时可选 | 复制对象时的源对象名,或批量复制时源对象名前缀。 规则如下:
说明: 请参考复制示例理解该参数的使用方式。 |
fr | 附加参数,复制对象时可选 | 复制对象时生成结果清单文件。 |
flat | 附加参数,批量复制时可选 | 批量复制时,不包含上一级父对象名前缀。 |
dryRun | 附加参数,可选 | 测试模式运行,不执行实际的复制操作。 |
crr | 跨账号同区域复制,请勿配置该参数。 | 复制时使用客户端跨区域复制模式,以通过数据流的方式从源桶直接复制数据到目标桶,且两个桶可以是任意两个OBS服务的桶。
说明: 复制时源桶对应的配置信息为配置文件中的“akCrr/skCrr/tokenCrr/endpointCrr”,目标桶对应的配置信息为配置文件中的“ak/sk/token/endpoint”。 |
vlength | 附加参数,可选 | 复制完成后,验证目标桶对象大小是否与源桶中对象的大小一致。 该参数必须与“crr”参数配合使用。 |
vmd5 | 附加参数,可选 | 复制完成后,验证目标桶的MD5值是否与源桶中对象的MD5值一致。
|
u | 附加参数,可选 | 增量复制操作,设置该参数后,复制每个源对象时会对比目标桶中对应路径的目标对象,仅在目标对象不存在,或者目标对象大小与源对象大小不一致,或者目标对象的最后修改时间早于源对象的最后修改时间时进行复制。 |
p | 附加参数,可选 | 每个分段复制任务的最大并发数,默认为配置文件中的defaultParallels。 |
threshold | 附加参数,可选 | 开启分段复制任务的阈值。如果待复制的源对象小于该阈值,则使用直接复制模式;否则使用分段复制模式。 默认为配置文件中的defaultBigfileThreshold。 单位:字节 支持带容量单位配置,例如:配置1MB代表1048576字节。 说明: 直接复制模式不会产生断点记录文件,不支持断点续传。 |
versionId | 附加参数,复制对象时可选 | 复制单个对象时可指定的源对象版本号。 |
acl | 附加参数,可选 | 复制对象时可指定的目标对象的预定义访问策略。 支持的值:
|
sc | 附加参数,可选 | 复制对象时可指定的目标对象的存储类型。 支持的值:
|
meta | 附加参数,可选 | 复制对象时可指定的标准和自定义元数据。
|
fs | 附加参数,可选 | 是否使用并行文件系统的列举方式,如果桶是并行文件系统,推荐加上该参数。
|
ps | 附加参数,可选 | 每个分段复制任务的段大小。
|
cpd | 附加参数,可选 | 生成断点记录文件的文件夹,默认为运行obsutil命令的用户目录的子文件夹.obsutil_checkpoint。 每个分段复制任务会产生唯一对应的断点记录文件并保存至该文件夹的upload子文件夹下。分段任务执行成功后,对应的断点记录文件会被自动删除;分段任务执行失败或被中断后,下次执行该分段任务时会尝试通过对应的断点记录文件恢复任务。 |
r | 附加参数,批量复制时必选 | 按指定源桶的对象名前缀批量复制对象。 |
f | 附加参数,批量复制时可选 | 强制操作,不进行询问提示。 |
j | 附加参数,批量复制时可选 | 批量复制时的最大并发数,默认为配置文件中的defaultJobs。 说明: 工具会保证该值至少为1。 |
exclude | 附加参数,批量复制时可选 | 不包含源对象的匹配模式,设置该参数后,如果待复制的对象名匹配该参数,则跳过该对象的复制。如:*.txt,代表所有后缀为.txt的文件自动跳过,不复制。
约束限制: 该匹配模式仅适用于对象名非“/”结尾的对象。 说明:
|
include | 附加参数,批量复制时可选 | 包含源对象的匹配模式,设置该参数后,如果待复制的对象名匹配该参数,则复制该对象。如:*.txt,代表所有后缀为.txt的对象将会被复制。
约束限制:
示例: ./obsutil cp obs://src-bucket/ obs://target-bucket/ -include=/src-object/* -f -r 以上命令的含义是:复制src-bucket桶下符合匹配规则的文件到target-bucket桶下,匹配规则是以“src-object/”开头的对象名称。 说明:
|
timeRange | 附加参数,批量复制时可选 | 复制对象时的时间段匹配模式,仅复制最后修改时间在该时间段内的对象。 该匹配模式优先级低于文件名匹配模式:exclude和include,即优先执行exclude和include参数匹配,然后执行该匹配模式。
该匹配模式仅适用于对象名非“/”结尾的对象。 |
mf | 附加参数,可选 | 设置名称匹配模式(include、exclude)和时间匹配模式(timeRange)对对象名以“/”结尾的对象也生效。 |
o | 附加参数,可选 | 生成结果清单文件的文件夹,命令执行完成后,会在该文件夹下生成结果清单文件(可能包含成功结果、失败结果、警告结果三个文件)。 默认为运行obsutil命令的用户目录的子文件夹.obsutil_output。
|
config | 附加参数,可选 | 运行当前命令时的自定义配置文件。 可支持的配置参数请参考配置参数说明。 |
e | 附加参数,可选 | 指定终端节点。 |
i | 附加参数,可选 | 指定用户的AK。 |
k | 附加参数,可选 | 指定用户的SK。 |
t | 附加参数,可选 | 指定用户的securitytoken。 |
响应结果:
字段名 | 描述 |
|---|---|
Parallel | 请求中的-p参数。 |
Jobs | 请求中的-j参数。 |
Threshold | 请求中的-threshold参数。 |
PartSize | 请求中的-ps参数。 |
Exclude | 请求中的-exclude参数。 |
Include | 请求中的-include参数。 |
TimeRange | 请求中的-timeRange参数。 |
VerifyLength | 请求中的-vlength参数。 |
VerifyMd5 | 请求中的-vmd5参数。 |
CheckpointDir | 请求中的-cpd参数。 |
OutputDir | 请求中的-o参数。 |
ArcDir | 请求中的-arcDir参数。 |
Succeed count | 成功的任务数。 |
Failed count | 失败的任务数。 |
Skip count | 增量上传/下载/复制、同步上传/下载/复制跳过的任务数。 说明: 跳过的任务数也会记录到成功的任务数中。 |
Warning count | 执行完成但包含警告的任务数。 说明:
|
Succeed bytes | 上传/下载成功的字节数。 |
max cost | 所有任务中的最长耗时,单位:毫秒。 |
min cost | 所有任务中的最短耗时,单位:毫秒。 |
average cost | 平均耗时,单位:毫秒。 |
average tps | 平均每秒的任务完成个数。 |
Task id | 每次运行的唯一标识号,用于查找批量任务生成的结果清单文件。 |

