OssImport是一款将数据迁移至OSS的工具,您可以将ossimport部署在本地服务器或云上ECS实例内,轻松将您本地或其它云存储的数据迁移到OSS。支持本地、七牛、百度BOS、又拍云、腾讯云COS、金山KS3、HTTP等等,数据源非常丰富,而且可以实现流量控制、断点续传等等。
OssImport软件特色
1、支持的丰富的数据源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍云、腾讯云COS、金山KS3、HTTP、OSS等,并可根据需要扩展;
2、支持断点续传;
3、支持流量控制;
4、支持迁移指定时间后的文件、特定前缀的文件;
5、支持并行数据下载、上传;
6、支持单机模式和分布式模式,单机模式部署简单使用方便,分布式模式适合大规模数据迁移。
运行环境
ossimport可以部署在Linux或Windows系统上,要求如下:Windows7及以上版本
Linux系统最新版本
Java 1.7及以上版本
分布式部署暂时不支持Windows系统。
迁移失败常见问题
如果迁移文件失败,建议您先查看迁移失败日志,确认失败的原因。您可以在解决这些问题后使用retry命令进行重试。迁移失败日志的路径为master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log。
使用stat命令查看任务状态显示失败解决方案:使用stat命令查看迁移任务状态,如果JobState为failed,则迁移任务失败。迁移完成后请使用retry命令进行重试。
- 部分文件迁移失败后反复重试都无法成功迁移
- 解决方案:
- 查看迁移失败文件列表master/jobs/${JobName}/failed_tasks/${TaskName}/error.list,获取失败文件的相对路径。
- 确认是否有这部分文件的权限访问、文件是否被删除、是否是软链接文件、文件名是否存在乱码等。
- 解决以上问题后,使用retry命令进行重试。
- 迁移失败日志报“The bucket you are attempting to access must be addressed using the specified endpoint”错误
Exception:com.aliyun.oss.OSSException: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. <Error> <Code>AccessDenied</Code> <Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message> <RequestId>56EA98DE815804**21B23EE6</RequestId> <HostId>my-oss-bucket.oss-cn-qingdao.aliyuncs.com</HostId> <Bucket>my-oss-bucket</Bucket> <Endpoint>oss-cn-hangzhou.aliyuncs.com</Endpoint> </Error>
问题分析:srcDomain或destDomain填写错误,请按照域名列表填写正确的Endpoint。
- 迁移失败日志报“The request signature we calculated does not match the signature you provided”错误
Exception:com.aliyun.oss.OSSException: The request signature we calculated does not match the signature you provided. Check your key and signing method. [ErrorCode]: SignatureDoesNotMatch [RequestId]: xxxxxxx [HostId]: xxx.oss-cn-shanghai.aliyuncs.com
问题分析:destAccessKey和destSecretKey有误,请填写正确的AK信息。
- 迁移失败日志报“The bucket name “xxx/xx” is invalid”错误
java.lang.IllegalArgumentException: The bucket name "xxx/xx" is invalid. A bucket name must: 1) be comprised of lower-case characters, numbers or dash(-); 2) start with lower case or numbers; 3) be between 3-63 characters long.
问题分析:检查配置项destBucket是否填写正确,Bucket名称是不带正斜线(/)以及路径的。
- 迁移失败日志报“Connect to xxx.oss-cn-beijing-internal.aliyuncs.com:80 timed out”错误
Unable to execute HTTP request: Connect to xxx.oss-cn-beijing-internal.aliyuncs.com:80 timed out [ErrorCode]: ConnectionTimeout [RequestId]: Unknown
问题分析:这个是连接超时的报错,通常原因是迁移用的设备非ECS实例或不是与OSS同地域的ECS实例,但是配置文件使用了OSS的内网域名。OSS内网域名仅支持同地域ECS实例访问。
解决方案:- 修改配置文件中域名为外网Endpoint,清除任务后重新提交任务。
- 使用与OSS同地域的ECS实例运行迁移任务。
- 迁移失败日志报“The specified bucket is not valid”错误
com.aliyun.oss.OSSException: The specified bucket is not valid. [ErrorCode]: InvalidBucketName [RequestId]: 57906B4DD0EBAB0FF553D661 [HostId]: you-bucket.you-bucketoss-cn-hangzhou-internal.aliyuncs.com
问题分析:配置文件里的destDomian配置的域名是Bucket所在地域的Endpoint地址,而不是带Bucket名称的二级域名。例如Bucket在华北2(北京),应填写oss-cn-beijing.aliyuncs.com。详情请参见配置文件示例。
- 迁移失败日志报“Unable to execute HTTP request: The Difference between … is too large”错误
Unable to execute HTTP request: The Difference between the request time and the current time is too large. [ErrorCode]: RequestTimeTooSkewed [RequestId]: xxxxxxx