阿里云OSS之间的迁移是指将数据从一个OSS存储桶(Bucket)复制到另一个存储桶的过程。这样的迁移可以用于数据备份、数据迁移、灾备恢复等场景,帮助用户在不同 Bucket 之间高效地传输和管理数据。本文介绍数据迁移的注意事项、迁移限制说明和操作步骤。
注意事项
使用在线迁移服务迁移数据时需要注意以下事项:
在线迁移服务使用源站存储服务提供商公开的标准接口来访问源数据,其行为依赖于源站存储服务提供商的具体实现。
在线迁移会占用源地址和目的地址的资源,可能会影响业务正常运行。若您的业务比较重要,请提前做好评估后对迁移任务设置限速,或在空闲时间启动迁移任务。
在线迁移前会检查源地址和目的地址的文件,但是若您源和目的地址有相同文件名的文件,且在迁移任务中配置了覆盖方式为覆盖,迁移时会直接覆盖目的地址的文件。若两个文件内容不同,必须更改文件名或做好备份。
在线迁移会保留源文件的最后修改时间属性,如果目的Bucket设置了生命周期规则,且迁移后文件处于该生命周期规则生效的时间范围内,则该文件可能会在规则生效时被删除或转为指定的归档类型。
迁移限制说明
若您迁移的源地址中设置了静态网站托管,数据迁移时会额外扫描出实际不存在的目录。例如上传文件myapp/resource/1.jpg,开启静态网站托管后,迁移服务扫描会得到3个对象,分别为myapp/、myapp/resource/和myapp/resource/1.jpg,其中myapp/和myapp/resource/会迁移失败,但不影响myapp/resource/1.jpg的正常迁移。
若您迁移的源地址中有软链接,数据迁移时,会直接迁移软链接。关于软链接的详细信息,请参见软链接。
目前仅支持单次迁移单个Bucket数据,无法将整个账号的数据一次性迁移。
不支持金融云、政务云的数据迁移。
阿里云OSS之间迁移数据的属性说明如下:
支持迁移的属性:x-oss-meta-*、LastModifyTime ,Content-Type,Cache-Control,Content-Encoding,Content-Disposition、Content-Language 、Expires。
不支持迁移的属性(包括但不限于):StorageClass、Acl、服务端加密、标签Tagging、用户自定义header x-oss-persistent-header等。
说明不支持迁移的属性包括但不限于以上列举的内容,其他未列举的属性行为暂无法确定,以实际迁移完成的内容为准。
步骤一:选择地域
如何选择地域
两个OSS Bucket之间的数据迁移操作是否产生下行流量费,与您是否在控制台上选择了正确的迁移服务部署地域有关,此处所指的迁移服务部署地域,是指如下图中所示的地域选择,您需要在创建任务前选择地域。
1.当数据源所在地域与所选的迁移服务部署地域一致时,数据源OSS将不会产生外网读取费用。
示例:源和目的同为北京OSS,在线迁移服务部署地域选择北京,迁移时不会在源端OSS产生外网读取费用。
2.当数据源所在地域与所选的迁移服务部署地域不一致时,数据源OSS将会产生外网读取费用。
示例:源为北京OSS,目的为新加坡OSS,在线迁移服务部署地域选择新加坡,迁移时会在源端OSS产生外网读取费用。
为了遵循传输链路最短原则,建议在迁移前,将迁移服务部署地域与数据源所在的地域保持一致。如果没有可用的地域,建议选择靠近您业务的地域,以确保迁移效果最佳。
操作步骤
使用创建的RAM用户登录阿里云在线迁移服务管理控制台。
说明跨账号迁移时,可选择源或目的阿里云账号生成的任一RAM用户登录。
在顶部菜单栏左上角处的地域选择代表“迁移服务部署地域”,因此请选择数据源所在地域或距离数据源最近的地域,如下图所示。
控制台上方所选地域(代表在线迁移服务的部署地域),中国内地地域包含北京、上海、杭州、深圳、乌兰察布,其他地域包含中国香港、新加坡、德国(法兰克福)、美国(弗吉尼亚)。
重要不同地域内的数据地址和迁移任务不通用,请谨慎选择。
优先选择源数据所在的地域,如果没有源数据所在地对应的地域,请尽可能选择接近源数据所在的地域创建迁移任务。
跨境迁移时,推荐您开启传输加速,提高迁移速度。开启了传输加速的Bucket会收取传输加速费用。关于传输加速的更多信息,请参见传输加速。
步骤二:创建源地址
在左侧导航栏,选择在线迁移服务 > 地址管理,单击新建地址。
在新建地址面板,配置如下参数,然后单击确定。
参数
是否必选
说明
名称
是
输入源数据地址名称。名称命名规则如下:
名称不能为空,长度为3~63个字符。
支持英文小写字母、数字和特殊字符短划线(-)和下划线(_),且区分大小写。
UTF-8编码不能以短划线(-)和下划线(_)开头。
类型
是
选择Alibaba OSS。
自定义域名
否
支持用户的自定义域名
地域
是
选择源地址所在的地域,例如华东1(杭州)。
授权角色
是
源Bucket归属于在线迁移控制台账号
源Bucket不归属于在线迁移控制台账号
存储桶(Bucket)
是
输入当前控制台所在账号下待迁移数据所在的存储桶(Bucket)名称。
前缀
否
您可以指定数据路径前缀迁移部分数据。格式要求不能以正斜线(/)开头,必须以正斜线(/)结尾,例如
data/to/oss/
。指定前缀:例如设置源数据地址前缀为
example/src/
,此路径下有文件example.jpg,设置目的数据地址前缀为example/dest/
,则迁移后文件example.jpg的完整路径为example/dest/example.jpg
。不指定前缀:例如不设置源数据地址前缀,需要迁移的文件路径为
srcbucket/example.jpg
,设置目的数据地址前缀为destbucket/
,则迁移后文件的完整路径为destbucket/srcbucket/example.jpg
。
通道
否
选择需要使用的通道名称。
重要仅通过专线或VPN迁移数据上云、自建存储数据迁移上云需要使用该参数。
目的数据地址是LOCALFS的以及需要走专线(金融云、专有云等)的场景需要关联代理。
代理
否
选择需要使用的代理名称。
重要仅通过专线或VPN迁移数据上云、自建存储数据迁移上云需要使用该参数。
指定通道下,最多可同时选择30个代理。
步骤三:创建目的地址
在左侧导航栏,选择在线迁移服务 > 地址管理,单击新建地址。
在新建地址面板,配置如下参数,然后单击确定。
名称不能为空,长度为3~63个字符。
支持英文小写字母、数字和特殊字符短划线(-)和下划线(_),且区分大小写。
UTF-8编码不能以短划线(-)和下划线(_)开头。
目的Bucket归属于在线迁移控制台账号
目的Bucket不属于在线迁移控制台账号
指定前缀:例如源数据地址前缀为
example/src/
,此路径下有文件example.jpg,设置目的数据地址前缀为example/dest/
,则迁移后文件example.jpg的完整路径为example/dest/example.jpg
。不指定前缀:不设置数据路径前缀时,会将源数据迁移至目的Bucket的根目录。
仅通过专线或VPN迁移数据上云、自建存储数据迁移上云需要使用该参数。
目的数据地址是LOCALFS的以及需要走专线(金融云、专有云等)的场景需要关联代理。
仅通过专线或VPN迁移数据上云、自建存储数据迁移上云需要使用该参数。
指定通道下,最多可同时选择30个代理。
参数 | 是否必选 | 说明 |
名称 | 是 | 输入目的数据地址名称。名称命名规则如下: |
类型 | 是 | 选择Alibaba OSS。 |
自定义域名 | 否 | 支持用户的自定义域名 |
地域 | 是 | 选择目的地址所在的地域,例如华东1(杭州)。 |
授权角色 | 是 | |
存储桶(Bucket) | 是 | 输入当前控制台所在账号下迁移后数据所在的存储桶(Bucket)名称。 |
前缀 | 否 | 您可以指定数据路径前缀将源数据迁移至指定目录下。格式要求不能以正斜线(/)开头,必须以正斜线(/)结尾,例如 |
通道 | 否 | 选择需要使用的通道名称。 重要 |
代理 | 否 | 选择需要使用的代理名称。 重要 |
步骤四:创建迁移任务
迁移任务并发数量限制:迁移服务部署地域每个地域最多支持5个任务并发,超出限制后可能导致定时任务调度无法按预期执行。
在左侧导航栏,选择在线迁移服务 > 迁移任务,单击新建任务。
在选择地址页面,配置如下参数,然后单击下一步。
参数
是否必选
说明
名称
是
输入迁移任务名称。名称命名规则如下:
名称不能为空,长度为3~63个字符。
支持英文小写字母、数字和特殊字符短划线(-)和下划线(_),且区分大小写。
UTF-8编码不能以短划线(-)和下划线(_)开头。
源地址
是
选择已创建的源地址。
目的地址
是
选择已创建的目的地址。
在配置任务页面,配置如下参数。
参数
是否必选
说明
迁移带宽
否
选择迁移带宽。
默认:默认最大带宽,实际速度取决于文件大小和文件数量。
指定上限:根据控制台提示指定具体的带宽上限。
重要实际迁移带宽与数据源、网络、目的限流、文件大小等因素有关,不一定能达到指定上限。
请您评估数据源、迁移目的、业务情况、网络带宽等,并根据实际情况选择合理数值,限流不恰当可能会影响业务的正常运行。
每秒迁移文件数
否
选择每秒迁移文件数。
默认:每秒迁移文件数。
指定上限:根据控制台提示指定具体的每秒迁移文件数。
重要实际迁移带宽与数据源、网络、目的限流、文件大小等因素有关,不一定能达到指定上限。
请您评估数据源、迁移目的、业务情况、网络带宽等,并根据实际情况选择合理数值,限流不当可能会影响业务的正常运行。
覆盖方式
是
选择同名文件的覆盖方式。
不覆盖:不迁移该文件。
全部覆盖:源地址中的文件会覆盖目的地址中的文件。
根据最后修改时间覆盖:
当源地址中的文件最后修改时间晚于目的地址中的文件最后修改时间时,目的地址中的文件会被覆盖。
当源地址中的文件最后修改时间与目的地址中的文件最后修改时间相同时,若二者的Size和Content-Type有一项不同,则目的地址中的文件会被覆盖。
根据最后修改时间覆盖无法严格保证一定不会覆盖更新的文件,存在旧文件覆盖新文件的风险。
若您选择根据最后修改时间覆盖的覆盖方式,请务必确保源端文件能返回最后修改时间、Size、Content-Type等信息,否则覆盖策略可能失效,产生非预期的迁移结果。
选择不覆盖或根据最后修改时间覆盖时,为执行后续覆盖判断,会分别请求源端和目的端meta信息一次,因此会在源端和目的端产生对应的请求费用。
警告迁移报告
是
迁移报告推送方式。
不推送(默认):不推送迁移报告至目的bucket。
推送:将迁移报告推送至目的bucket,详细路径请参考后续操作。
重要迁移报告推送会占用目的端一定的存储空间。
迁移报告的推送可能会存在一定的时间延迟,请您耐心等待迁移报告的生成。
每个任务执行记录都有一个唯一的ID,请注意,迁移报告只会推送一次,请谨慎删除!
迁移日志
是
迁移日志推送方式。
不推送(默认):不推送迁移日志。
推送:将迁移日志推送至日志服务SLS,可在SLS上查看迁移日志。
仅推送文件错误日志:仅将错误迁移日志推送至日志服务SLS,可在SLS上查看错误迁移日志。
当选择推送或仅推送文件错误日志时,在线迁移服务会在日志服务SLS中创建名称为aliyun-oss-import-log-阿里云账号ID-当前迁移服务部署地域的Project,例如aliyun-oss-import-log-137918634953****-cn-hangzhou。
重要请务必完成以下操作后,再选择推送或仅推送文件错误日志,否则可能会导致迁移任务异常。
已开通SLS服务。
已在日志服务授权项授权页面中同意授权。
日志服务授权
否
当迁移日志选择推送或仅推送文件错误日志时出现该选项。
单击授权进入云资源访问授权页面,页面会对应创建AliyunOSSImportSlsAuditRole角色,并对角色做授权,请单击同意授权完成授权。
文件名
否
文件名过滤器。
支持包含和排除两种过滤规则,请参见RE2库的正则表达式语法(仅支持部分表达式语法)。例如:
.*\.jpg$表示以.jpg结尾的所有文件。
^file.*默认表示根目录下以file开头的所有文件。
如果源数据地址设置了前缀,例如源数据地址前缀为data/to/oss/,则需要使用^data/to/oss/file.*来匹配指定前缀下以file开头的所有文件。
.*/picture/.*表示匹配某一级为picture的子目录。
重要当过滤规则为包含时,符合规则的文件都会被迁移,如果有多条规则,符合任意一个条件的文件都会被迁移。
例如2个文件picture.jpg和picture.png,设置一条包含规则过滤.*\.jpg$,此时只会迁移picture.jpg文件,如果同时也设置了包含规则过滤.*\.png$,则2个文件都会被迁移。
当过滤规则为排除时,符合规则的文件都不会被迁移,如果有多条规则,符合任意一个条件的文件都不会被迁移。
例如2个文件picture.jpg和picture.png,设置一条排除规则过滤.*\.jpg$,此时只会迁移picture.png,如果同时也设置了排除规则过滤.*\.png$,则2个文件都不会被迁移。
排除规则优先。当一个文件既在排除规则中又在包含规则中,则文件不会被迁移。
例如文件file.txt,设置排除规则过滤.*\.txt$文件,并同时设置包含规则过滤file.*,则此时file.txt文件不会被迁移。
文件修改时间
否
文件最后一次修改时间过滤器。
可指定文件最后一次修改时间作为过滤规则。如果指定了时间范围,则只迁移文件最后一次修改时间在指定时间范围内的文件,具体规则如下。
当仅指定开始时间为2019年01月01日,不指定结束时间时,则只迁移文件最后一次修改时间晚于等于2019年01月01日的文件。
当仅指定结束时间为2022年01月01日,不指定开始时间时,则只迁移文件最后一次修改时间早于等于2022年01月01日的文件。
当指定开始时间为2019年01月01日,结束时间为2022年01月01日,则迁移文件最后一次修改时间范围在晚于等于2019年01月01日,且早于等于2022年01月01日的文件。
执行时间
否
重要正在迁移中的任务,在下一个指定时间前仍未结束本轮迁移,则会在本轮迁移结束后,自动顺延至下一个指定时间启动任务,直至完成指定次数的迁移。
迁移任务并发数量限制:迁移服务部署地域选择中国香港或中国内地时最多支持10个任务并发,选择海外地域时最多支持5个,超出限制后可能导致定时任务调度无法按预期执行。
确定迁移任务的执行时间。
立即执行:立即执行当前任务。
指定执行时间:指定任务执行期间每天的执行时间段。默认情况下,任务将在指定的起始时间启动,在指定的停止时间暂停。
周期调度:通过调整执行频率和执行次数来启动任务。
执行频率:支持以每小时、每天、每周、一周中某些天、自定义等5种频率,具体请查看执行频率参考。
执行次数:指定任务的执行次数,如不设置则默认执行一次,最大执行次数请参考控制台提示。
重要可随时手动启动和暂停任务,不受自定义执行时间的影响。
阅读在线迁移服务协议,选中我已理解并确认,合规承诺声明且当迁移任务完成时,我有确认迁移数据一致性的义务和责任,然后单击下一步。
检查配置信息,确认无误后,单击确定,等待迁移任务执行。
执行频率参考
执行频率 | 说明 | 示例 |
每小时 | 选择以每小时为频率,可搭配执行次数一起使用。 | 当前时间为8:05分,指定每小时为频率,执行3次任务,则会在下一个整点9点钟开始第一次任务。
|
每天 | 选择以每天为频率时,需设置0~23小时中任意整点时间启动任务,可搭配执行次数一起使用。 | 当前时间为8:05分,指定每天10点,执行5次,会在当天10点开始第一次任务。
|
每周 | 选择每周时,需指定周内任意一天,并设置0~23小时中任意整点时间启动任务,可搭配执行次数一起使用。 | 当前时间为周一8:05分,指定每周一的10点,执行10次,则会在当天10点时开始第一次任务。
|
一周中某些天 | 选择一周中某些天时,支持选择周内任意几天,并设置0~23小时中任意整点时间启动任务。 | 当前为周三8:05,指定每周一、三、五的10点,则会在当天的10点时开始第一次任务。
|
自定义 | 使用Cron表达式自定义设置任务启动时间。 | 说明 Cron表达式由6个字段组成,每个字段之间使用空格分隔,依次表示任务的执行时间规则:秒 分钟 小时 日 月 星期。 以下Cron表达式示例仅供参考,更多请参照Cron表达式生成器:
|
步骤五:校验数据
迁移服务仅负责数据的迁移,无法保证数据的一致性和完整性。迁移任务完成后,请您全量校验迁移的数据,务必自行做好源端和目的端数据一致性校验。
请您务必在迁移任务完成后,校验目的端迁移数据。您在删除源数据前,未校验目的端迁移数据无误,导致数据丢失所引起的一切损失和后果均由您自行承担。