计费项
目前在线迁移服务公测中,不收取服务费用,但是由于迁移数据时涉及到API请求及数据的上传、下载,仍会产生一定的费用,包括:第三方存储服务的网络传输费用、API请求费用、解冻取回费用等,且不同源端到目的端迁移数据的收费情况不同。
计费组成
概述
不同源端到目的端迁移数据的收费情况如下表所示:
| 源端 | 目的端 | 源端下行流量费 | 源端请求费 | 目的端请求费 | 传输加速的费用 | 
| OSS | OSS | 请参见阿里云OSS之间迁移,以获取OSS之间迁移数据的详细收费信息。 | 收费 | 收费 | 收费(开启时) 说明  在中国内地向非中国内地,或者非中国内地向中国内地迁移数据时,建议开启传输加速,以提高数据迁移效率。开启传输加速时,会产生传输加速的费用,此费用由目的端OSS收取。 | 
| 第三方存储服务(如AWS S3、腾讯COS、华为OBS、火山TOS、七牛kodo) | OSS | 收费 | 收费 | 收费 | - | 
| HTTP/HTTPS | OSS | 收费 | 收费 | 收费 | - | 
| LocalFS | OSS | - | - | 收费 | - | 
| LocalFS | LocalFS | - | - | - | - | 
| OSS | LocalFS | 请参见OSS迁移至LocalFS,以获取OSS迁移至LocalFS迁移数据的详细收费信息。 | 收费 | - | - | 
计费场景
阿里云OSS之间迁移
阿里云OSS之间迁移的计费项组成如下图所示,详细示例请参见源端为OSS:
源端和迁移服务部署同地域
当数据源所在地域与所选的迁移服务部署地域一致时,数据源OSS将不会产生外网读取费用。

源端和迁移服务部署跨地域
当数据源所在地域与所选的迁移服务部署地域不一致时,数据源OSS将会产生外网读取流量费用。

OSS之间如需跨境迁移数据,建议目的端OSS开启传输加速,此费用将由目的端OSS收取。
HTTP/HTTPS迁移至OSS
HTTP/HTTPS迁移至OSS的计费项组成如下图所示:

第三方存储服务迁移至OSS
第三方存储服务迁移至OSS的计费项组成如下图所示:
LocalFS迁移至OSS
LocalFS迁移至OSS的计费项组成如下图所示:

OSS迁移至LocalFS
OSS迁移至LocalFS的计费项组成如下图所示:
源端和迁移服务部署同地域

源端和迁移服务部署跨地域

LocalFS之间迁移
LocalFS之间迁移的计费项组成如下图所示:

API请求费用
在线迁移任务在进行数据迁移前,需要进行以下操作:对源端数据进行扫描(ListObject)、对源地址和目的地址的文件进行对比(HeadObject)、在迁移时将源文件下载后上传到目的地址,并在迁移完成后对文件的元数据进行校验,这些过程都会产生相应的API请求。
由于源端的文件数量不同,对源端数据进行扫描(ListObject)请求的次数也不同,每次最多返回1000个文件。在不同的数据迁移场景下以及选择不同的覆盖方式,API请求的次数也会有所不同。对于单个文件,API请求次数的介绍如下:
数据从OSS迁移到OSS时,对于150MB以上的appendable类型文件,不会进行分片迁移,而是按照小文件计算API请求次数。
若待迁移的文件大小大于或等于150MB,系统将在进行数据迁移时对文件进行分片后再上传,每个分片大小为50MB。因此,实际的数据迁移请求次数将取决于迁移数据的大小,而请求的次数则取决于文件的分片数量(N)。举例来说,如果文件大小为159MB,则N = 159MB/50MB ≈ 4;如果文件大小为150MB,则N = 150MB/50MB = 3。N的计算公式如上所述。(以上阈值仅供参考,建议以实际访问次数为准。)
以下说明默认为文件迁移成功的状态,不涉及迁移失败时的API请求。
覆盖方式:不覆盖
针对源地址中存在,目的地址中不存在的文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × 1 - - - 2 - 目的地址 - HeadObject × 1 - PutObject × 1 - HeadObject × 1 - 3 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × N - - - 1+N - 目的地址 - HeadObject × 1 - InitiateMultipartUpload × 1 - UploadPart × N - ListParts × 1 - CompleteMultipartUpload×1 - HeadObject × 1 - 5+N 
针对源地址和目的地址都存在的同名文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - - - - - 1 - 目的地址 - HeadObject × 1 - - - - - 1 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - - - - - 1 - 目的地址 - HeadObject × 1 - - - - - 1 
覆盖方式:全部覆盖
针对源地址中存在,目的地址中不存在的文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × 1 - - - 2 - 目的地址 - - - PutObject × 1 - HeadObject × 1 - 2 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × N - - - 1+N - 目的地址 - - - InitiateMultipartUpload × 1 - UploadPart × N - ListParts × 1 - CompleteMultipartUpload×1 - HeadObject × 1 - 4+N 
针对源地址和目的地址都存在的同名文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject ×1 - - - 2 - 目的地址 - - - PutObject × 1 - HeadObject × 1 - 2 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × N - - - 1+N - 目的地址 - - - InitiateMultipartUpload ×1 - UploadPart × N - ListParts × 1 - CompleteMultipartUpload ×1 - HeadObject × 1 - 4+N 
覆盖方式:根据最后修改时间覆盖
针对源地址中存在,目的地址中不存在的文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × 1 - - - 2 - 目的地址 - HeadObject × 1 - PutObject × 1 - HeadObject × 1 - 3 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × N - - - 1+N - 目的地址 - HeadObject × 1 - InitiateMultipartUpload × 1 - UploadPart × N - ListParts ×1 - CompleteMultipartUpload ×1 - HeadObject × 1 - 5+N 
针对源地址和目的地址都存在的同名文件,且目的地址文件版本均早于源地址文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × 1 - - - 2 - 目的地址 - HeadObject × 1 - PutObject × 1 - HeadObject × 1 - 3 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - GetObject × N - - - 1+N - 目的地址 - HeadObject × 1 - InitiateMultipartUpload × 1 - UploadPart × N - ListParts × 1 - CompleteMultipartUpload×1 - HeadObject × 1 - 5+N 
针对源地址和目的地址都存在的同名文件,且目的地址文件版本均晚于源地址文件
- 当源地址中的文件大小小于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - - - - - 1 - 目的地址 - HeadObject × 1 - - - - - 1 
- 当源地址中的文件大小大于或等于150MB时: - 操作位置 - 迁移前数据对比请求 - 迁移数据请求 - 迁移后数据校验请求 - API请求次数 - 源地址 - HeadObject × 1 - - - - - 1 - 目的地址 - HeadObject × 1 - - - - - 1 
计费案例
用户场景:某用户需要迁移1000个文件,其中900个文件大小均为500KB,还有100个大小均为160MB的文件。
示例默认迁移任务正常完成,未产生迁移错误。
案例一:目的地址都没有同名文件
覆盖方式:不覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件 | HeadObject: 900 GetObject: 900 | 1800 | HeadObject: 900*2 PutObject: 900 | 2700 | 
| 大文件 | HeadObject: 100 GetObject: 100*4 | 500 | HeadObject: 100*2 InitiateMultipartUpload: 100 UploadPart: 100*4 ListParts: 100 CompleteMultipartUpload: 100 | 900 | 
| 扫描次数 | ListObject: 1 | 1 | - | - | 
| 合计请求次数 | - | 2301 | - | 3600 | 
覆盖方式:全部覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件操作 | HeadObject: 900 GetObject: 900 | 1800 | HeadObject: 900 PutObject: 900 | 1800 | 
| 大文件操作 | HeadObject: 100 GetObject: 100*4 | 500 | HeadObject: 100 InitiateMultipartUpload: 100 UploadPart: 100*4 ListParts: 100 CompleteMultipartUpload: 100 | 800 | 
| 扫描次数 | ListObject: 1 | 1 | - | - | 
| 合计请求次数 | - | 2301 | - | 2600 | 
案例二:目的地址已存在同名文件,且目的地址文件版本均早于源地址文件
覆盖方式:不覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件操作 | HeadObject: 900 | 900 | HeadObject: 900 | 900 | 
| 大文件操作 | HeadObject: 100 | 100 | HeadObject: 100 | 100 | 
| 扫描次数 | ListObject: 1 | 1 | - | - | 
| 总计 | - | 1001 | - | 1000 | 
覆盖方式:全部覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件操作 | HeadObject: 900 + GetObject: 900 | 1800 | HeadObject: 900 + PutObject: 900 | 1800 | 
| 大文件操作 | HeadObject: 100 + GetObject: 100×4 | 500 | HeadObject: 100 + InitiateMultipartUpload: 100 + UploadPart: 100×4 + ListParts: 100 + CompleteMultipartUpload: 100 | 800 | 
| 扫描次数 | ListObject: 1 | 1 | - | - | 
| 总计 | - | 2301 | - | 2600 | 
覆盖方式:根据最后修改时间覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件操作 | HeadObject: 900 + GetObject: 900 | 1800 | HeadObject: 900×2 + PutObject: 900 | 2700 | 
| 大文件操作 | HeadObject: 100 + GetObject: 100×4 | 500 | HeadObject: 100×2 + InitiateMultipartUpload: 100 + UploadPart: 100×4 + ListParts: 100 + CompleteMultipartUpload: 100 | 900 | 
| 扫描次数 | ListObject: 1 | 1 | - | - | 
| 总计 | - | 2301 | - | 3600 | 
案例三:目的地址和源地址均存在同名文件,且目的地址文件均晚于源地址文件
覆盖方式:不覆盖或者根据最后修改时间覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件 | HeadObject: 900 | 900 | HeadObject: 900 | 900 | 
| 大文件 | HeadObject: 100 | 100 | HeadObject: 100 | 100 | 
| 扫描次数 | ListObject: 1 | 1 | ||
| 总计 | 1001 | 1000 | 
覆盖方式:全部覆盖
| 描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 | 
| 小文件 | HeadObject: 900 GetObject: 900 | 1800 | HeadObject: 900 PutObject: 900 | 1800 | 
| 大文件 | HeadObject: 100 GetObject: 100×4 | 500 | HeadObject: 100 InitiateMultipartUpload: 100 UploadPart: 100×4 CompleteMultipartUpload: 100 | 800 | 
| 扫描次数 | ListObject: 1 | 1 | ||
| 总计 | 2301 | 2600 | 
API请求的实际费用以各存储服务商的定价为准。,OSS的费用请参见计量项和计费项。
解冻取回费用
对于归档类型的数据,需要您提前进行解冻操作,待解冻完成后再创建迁移任务,解冻时请注意如下事项:
- 请您务必完成解冻操作后再创建源数据地址和迁移任务。 
- 请您根据待迁移的数据总量确保解冻时长,以防迁移期间数据再次变成冻结状态。 
- 解冻操作会收取数据取回的费用,部分解冻服务收费较高。具体计费规则可咨询您的源存储空间服务运营商。 
在线迁移服务并不会对源端数据执行解冻操作。若您源端有未解冻、解冻中的文件,则这些文件都会迁移失败。
下载与上传流量费用
数据迁移时,在线迁移服务会先将数据从源端下载,再将数据上传至OSS。这个过程会产生一定的流量费用,不同场景下的流量费用如下:
以下说明默认为迁移成功的状态,不涉及迁移失败时流量费用。
源端为第三方存储服务商
此时会在源端产生数据下载费用,产生的流量由数据的实际大小决定,由源地址所在存储服务商收取。数据在一定带宽范围内上传至OSS不收取流量费用,更多信息,请参见使用限制及性能指标。
源端为OSS
两个OSS Bucket之间的数据迁移操作是否产生下行流量费,与您是否在控制台上选择了正确的迁移服务部署地域有关,此处所指的迁移服务部署地域,是指如下图中所示的地域选择,您需要在创建任务前选择地域。

1.当数据源所在地域与所选的迁移服务部署地域一致时,数据源OSS将不会产生外网读取费用。
示例:源和目的同为北京OSS,在线迁移服务部署地域选择北京,迁移时不会在源端OSS产生外网读取费用。

2.当数据源所在地域与所选的迁移服务部署地域不一致时,数据源OSS将会产生外网读取费用。
示例:源为北京OSS,目的为新加坡OSS,在线迁移服务部署地域选择新加坡,迁移时会在源端OSS产生外网读取费用。

为了遵循传输链路最短原则,建议在迁移前,将迁移服务部署地域与数据源所在的地域保持一致。如果没有可用的地域,建议选择靠近您业务的地域,以确保迁移效果最佳。