使用阿里云对象存储OSS时,将任意地域的本地存储数据、第三方存储数据、对象存储OSS数据迁移至任意地域的OSS中可以使用ossimport工具。本文介绍运用数据迁移工具ossimport迁移OSS资源失败的报错原因及解决方案。
使用ossimport迁移失败的常见原因有以下几个:
SIZE_NOT_MATCH
相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到OSS。当迁移失败时,执行bash console.sh stat
命令查看迁移任务的状态,如果JobState为failed,则迁移任务失败,请查看迁移失败的日志,根据日志中的报错信息参见以下内容进行解决,您可以在解决这些问题后使用retry命令进行重试:
说明:OSS迁移失败的日志路径为
master/jobs/[$JobName]/failed_tasks/[$TaskName]/audit.log
。
- [$JobName]:任务名字,字符串。
- [$TaskName]:Task名称。
错误码 | 错误信息 | 报错原因 | 解决方案 |
AccessDenied | The bucket you are attempting to access must be addressed using the specified endpoint | srcDomain或destDomain填写错误。 |
请按照域名列表填写正确的Endpoint。 |
SignatureDoesNotMatch | The request signature we calculated does not match the signature you provided |
destAccessKey和destSecretKey有误。 |
请填写正确的AK信息。 |
无 | The bucket name “xxx/xx” is invalid |
配置项destBucket填写不正确。 |
检查配置项destBucket是否填写正确,Bucket名称是不带正斜线(/)以及路径的。 |
ConnectionTimeout | Connect to xxx.oss-cn-beijing-internal.aliyuncs.com:80 timed out |
这个是连接超时的报错,通常原因是迁移用的设备非ECS实例或不是与OSS同地域的ECS实例,但是配置文件使用了OSS的内网域名。OSS内网域名仅支持同地域ECS实例访问。 |
该问题可以通过以下方法解决:
|
InvalidBucketName | The specified bucket is not valid |
配置文件里的destDomian配置的域名是Bucket所在地域的Endpoint地址,而不是带Bucket名称的二级域名。 |
填写正确的Bucket所在地域的Endpoint地址,例如Bucket在华北2(北京),应填写oss-cn-beijing.aliyuncs.com。详情请参见配置文件示例。 |
RequestTimeTooSkewed | Unable to execute HTTP request: The Difference between … is too large |
该报错可能是以下情况导致:
|
该问题可以通过以下方法解决:
|
无 | The object key “/xxxxx.jpg” is invalid |
该报错可能是以下情况导致:
|
该问题可以通过以下方法解决:
|
无 | No route to host |
这种情况一般是本地防火墙或者iptables等原因导致网络不通。 |
通过ping命令测试迁移服务器到源端和目的端网络是否正常。
|
无 | Unknown http list file format |
使用HTTP模式迁移时,该问题是因为指定的HTTP列表文件格式不对或内容不符合规范。 |
该问题可以通过以下方法解决:
|
部分文件迁移失败后反复重试都无法成功迁移的解决方案:
master/jobs/[$JobName]/failed_tasks/[$TaskName]/error.list
,获取失败文件的相对路径。