一、需求说明

由于项目需求,需要将项目目前使用的OSS进行迁移到新的阿里云账号下的OSS,查看官方文档介绍,可以使用阿里云自带的ossimport工具进行单机以及分布式迁移

二、Ossimport概述

OssImport工具可以将本地、其它云存储的数据迁移到OSS,它有以下特点:

  • 支持的丰富的数据源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍云、腾讯云COS、金山KS3、HTTP、OSS等,并可根据需要扩展;
  • 支持断点续传;
  • 支持流量控制;
  • 支持迁移指定时间后的文件、特定前缀的文件;
  • 支持并行数据下载、上传;
  • 支持单机模式和分布式模式,单机模式部署简单使用方便,分布式模式适合大规模数据迁移。

三、配置运行环境

1、配置jdk环境

[root@izuf64sdfavcgse80z ~]# yum install -y java
[root@izuf64sdfavcgse80z ~]# java --version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

2、部署方式

OssImport有单机模式和分布式模式两种部署方式。

对于小于 30TB 的小规模数据迁移,单机模式即可完成。下载地址

对于大规模的数据迁移,请使用分布式模式。下载地址

  • 单机

Master、Worker、Tracker、Console运行在一个机器上,系统中有且只有一个Worker。我们对单机模式的部署和执行进行了封装优化,单机部署和执行都很简单。单机模式下Master、Worker、TaskTracker、Console四个模块统一打包成ossimport2.jar

3、下载并部署ossimport

# wget http://gosspublic.alicdn.com/ossimport/standalone/ossimport-2.3.1.zip?spm=a2c4g.11186623.2.12.58b029d8vsI8DG&file=ossimport-2.3.1.zip
# cd /usr/local && mkdir ossimport
# unzip ossimport-2.3.1.zip -d ossimport/

单机模式下文件结构如下:

ossimport
├── bin
│ └── ossimport2.jar # 包括Master、Worker、Tracker、Console四个模块的总jar
├── conf
│ ├── local_job.cfg # 单机Job配置文件
│ └── sys.properties # 系统运行参数配置文件
├── console.bat # Windows命令行,可以分布执行调入任务
├── console.sh # Linux命令行,可以分布执行调入任务
├── import.bat # Windows一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试
├── import.sh # Linux一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试
├── logs # 日志目录
└── README.md # 说明文档,强烈建议使用前仔细阅读 其中: Job:用户通过提交的数据迁移任务,对用户来说一个任务对应一个配置文件job.cfg。 Task:Job按照 “数据大小” 和 “文件个数” 可以分成多个 Task ,每个 Task 迁移部分文件。Job切分成Task的最小单位是文件,同一个文件不会切分到多个Task中。 注意:
执行命令时请保证工作目录为 import.sh 的同级目录,即直接执行 bash import.sh

四、修改单机Job的配置文件local_job.cfg

[root@izuf64sdfavcgse80z ~]# vim /usr/local/ossimport/local_job.cfg #修改单机job配置文件

#以下为需要修改的内容

isIncremental=false	#不开启增量模式

srcAccessKey=ADSCVSDdc8OOFwececHd5	#配置源oss的access key
srcSecretKey=fjOKSDksdxceca8O57wdmPV #配置源oss的SecretKey
srcDomain=http://oss-cn-hangzhou-internal.aliyuncs.com #配置源oss的内网地址
srcBucket=abcimg #配置源Bucket名称 destAccessKey=LTAIabQkcs7sxZqMd #配置目标access key
destSecretKey=aPKlasdfickv9wsd23ZOUKo4sd #配置目标secret key
destDomain=http://oss-cn-hangzhou-internal.aliyuncs.com #配置目标oss的内网地址
destBucket=abcoss #配置目标bucket名称
  • 上面配置的AccessKey和SecretKey需要在阿里云上进行查看并配置,如图:

  • 下面为全部local_job的配置文件解析
#是否打开增量模式,如果设为true,会每间隔incrementalModeInterval(单位秒)重新扫描一次增量数据,并将增量数据同步到oss上,incrementalModeInterval不建议配置成小于3600秒的值,会浪费很多请求次数,造成额外的开销(目前可配置的最小间隔为900秒)
isIncremental=false #迁移不开启增量模式
incrementalModeInterval=900 ##############################################################同步源端设置##############################################################
#同步源类型,目前支持:
#1.local(本地文件,此选项只需要填写srcPrefix,不需要填写srcAccessKey,srcSecretKey,srcDomain,srcBucket)
#2.oss(从oss的一个bucket迁移到另一个bucket)
#3.qiniu(七牛)
#4.bos(百度的云存储)
#5.ks3(金山的云存储)
#6.s3(亚马逊s3)
#7.youpai(又拍云,又拍云获取文件列表的接口比较特殊,在同步时list不支持断点,因此在list没有完成时杀掉同步进程会导致下次会重新全部list文件列表)
#8.http (通过提供的http链接列表同步数据,此选项不需要填写srcAccessKey,srcSecretKey,srcDomain,srcBucket,srcPrefix)
#9.cos(腾讯云)
#10.azure(微软blob)
srcType=oss #源access key,同步本地文件以及通过http地址同步的不需要填,大部分云平台填写控制台获取的acceess key/accss key id,又拍云填写操作员账号
srcAccessKey=ADSCVSDdc8OOFwececHd5 #配置源oss的access key #源secrect key,同步本地文件以及通过http地址同步的不需要填,大部分云平台填写控制台获取的secret key/access key secret,又拍云填写操作员密码
srcSecretKey=fjOKSDksdxceca8O57wdmPV #配置源oss的SecretKey #源endpoint,同步本地文件以及通过http地址同步的不需要填
#1.oss: 从控制台获取域名(非带bucket前缀的二级域名),域名列表参考https://help.aliyun.com/document_detail/31834.html; 例:"srcDomain=http://oss-cn-hangzhou-internal.aliyuncs.com"; 如果用阿里云ecs虚拟机做迁移的,请使用internal域名,不计费且不受虚拟机带宽限制(非虚拟机无法使用);例:http://oss-cn-hangzhou-internal.aliyuncs.com
#2.七牛: 从七牛控制台获取对应bucket的域名
#3.百度bos: http://bj.bcebos.com或者http://gz.bcebos.com
#4.金山ks3: http://kss.ksyun.com或者http://ks3-cn-beijing.ksyun.com或者http://ks3-us-west-1.ksyun.com
#5.亚马逊s3: 各个region的地址请参考http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
#6.又拍云: http://v0.api.upyun.com(自动判断最优线路)或者http://v1.api.upyun.com(电信线路)或者http://v2.api.upyun.com(联通网通线路)或者http://v3.api.upyun.com(移动铁通线路)
#7.腾讯云: cos v3版本不需要填写;cos v4版本需要填上bucket所在的区域,比如华南园区填写:gz,华北园区:tj,华东园区:sh
#8.微软blob: 连接字符串中的EndpointSuffix,如core.chinacloudapi.cn
srcDomain=http://oss-cn-hangzhou-internal.aliyuncs.com #配置源oss的内网地址 #源bucket名字,同步本地文件以及通过http地址同步的不需要填,不需要加上"/";微软blob填container名称
srcBucket=abcimg #配置源Bucket名称 #源前缀,默认为空,如果srcType=local,则此目录是本地目录,如果是其他类型,则是源Bucket里需要同步的Object的前缀,注意如果是本地目录,需要完整目录路径(以'/'进行分割并且以'/'结尾,例: c:/example/)
srcPrefix= ##############################################################同步目的端设置################################################################
#目的 access key
destAccessKey=LTAIabQkcs7sxZqMd #配置目标access key #目的 secret key
destSecretKey=aPKlasdfickv9wsd23ZOUKo4sd #配置目标secret key #目的endpoint,请根据您的实际oss区域填写,默认为杭州的域名,如果用阿里云ecs虚拟机做迁移的,请使用internal域名,不计费且不受虚拟机带宽限制(非虚拟机无法使用);例:http://oss-cn-hangzhou-internal.aliyuncs.com
#注意:域名里不要带上bucket前缀,oss域名帮助页面:https://help.aliyun.com/document_detail/31837.html
destDomain=http://oss-cn-hangzhou-internal.aliyuncs.com #配置目标oss的内网地址 #目的bucket,不需要加上"/"
destBucket=abcoss #配置目标bucket名称 #目标前缀,默认为空,直接放在bucket下(如果要将数据同步到oss的某个目录下,请以'/'结尾),注意:oss不支持以 '/' 作为文件的开头,所以destPrefix请不要配置以'/'做为开头
#一个本地文件路径为 srcPrefix + relativePath的文件,迁移到oss的路径为destDomain/destBucket/destPrefix + relativePath
#一个云端文件路径为 srcDomain/srcBucket/srcPrefix + relativePath的文件,迁移到oss的路径为destDomain/destBucket/destPrefix + relativePath
destPrefix= ##############################################################srcType=cos时的配置项###########################################################
#腾讯云的appId
appId=0 ##############################################################srcType=http时的配置选项########################################################
#srcType="http"时,需要提供http列表文件的绝对路径,此文件中的http链接需要划分成两列,分别代表前缀以及上传到oss后的相对路径
#例,有一个完整的http链接是127.0.0.1/aa/bb.jpg,不同的切分方法最后会导致上传到oss的路径会不一样:
#c:/example/http.list文件内容:
#127.0.0.1/aa/ bb.jpg
#127.0.0.1/ aa/bb.jpg
# 第一行的文件导入到oss后的路径为 "destDomain/destBucket/destPrefix" + "bb.jpg"
# 第二行的文件导入到oss后的路径为 "destDomain/destBucket/destPrefix" + "aa/bb.jpg" httpListFilePath=c:/example/http.list
httpPrefixColumn=1
relativePathColumn=2 ##############################################################任务配置,没有特殊需求不需要修改#################################################
#job名字,每个任务唯一,单机模式下请不要修改此项
jobName=local_test #job类型(import/audit),import为同步数据到oss,audit为校验源端数据和oss数据是否一致
jobType=import #只导入源文件最后修改时间大于该时间的数据,默认为0,这个时间为unix时间戳(秒数)
importSince=0 #在校验时,如果文件的最后修改时间大于该值,则跳过此文件的校验,默认值0为关闭该功能,所有文件都需要校验,这个时间为unix时间戳(秒数),jobType为audit时此项不生效
lastModify=0 #数据迁移时,是否跳过已经存在的文件。当设置为true时,根据文件的size和LastModifiedTime判断是否跳过;为false时,总是覆盖OSS上已有文件。jobType为audit时此项不生效。
isSkipExistFile=false # 每个子任务最大的文件个数限制,这个会影响到任务执行的并行度,一般配置为总的文件数/120
taskObjectCountLimit=10000 #每个子任务下载的最大文件大小限制(bytes)
taskObjectSizeLimit=1000000000 #并行扫描文件列表的线程数,只影响扫描文件的效率,没有特殊需求不要修改
scanThreadCount=10000 #最大允许并行扫描目录的深度,默认为1就是只能在顶级目录间并行扫描,没有特殊需求不要修改,随意配置的过大会导致任务无法正常运行
maxMultiThreadScanDepth=1 #大于该值的文件使用分片上传,否则使用普通上传,请配置大于1MB以上;有效配置值如:50m/1024m/5g
multipartUploadThreshold=150m #分配上传时分片大小,请配置大于100k的数据,否则无效,采用默认值50MB;有效配置值如:500k/50m/2g
multipartUploadPartSize=50m #单个大文件分片上传并发数,默认超过150MB为大文件,分片为50MB,srcType=local时有效,其它情况该配置项无效
#uploadThreadNumPerLargeFile大于1时,workerRecordMd5无效
uploadThreadNumPerLargeFile=3 #存储在OSS上的数据否加密,默认不加密
isServerSideEncryption=false #local模式时,链接文件是否上传,默认不上传;该选择仅支持链接文件不包括链接目录
isAllowSymbolicLink=false # 七牛云存储获取Meta的方式,有效值head和stat,默认使用stat;head通过HTTP HEAD请求获取,stat通过BucketManager.stat
getObjectMetaMode=stat #数据迁移后是否进行数据的正确性校验,默认校验
isAuditAfterImport=true #数据校验方式,有效值为simple/general/detailed,默认值general;simple只校验文件的size,general校验文件的size/lastModify/header,detailed检验文件的CRC或MD5,开发中
auditMode=general

五、执行迁移

[root@izuf64sdfavcgse80z ~]# cd /usr/local/ossimport
[root@izuf64sdfavcgse80z ossimport]# /bin/bash import.sh

提示:

  • Job运行信息,可以查看log/ossimport2.log
  • Task的失败原因,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log
  • Task的失败文件,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/error.list

阿里云OSS不同账号之间的迁移的更多相关文章

  1. 用DzzOffice管理阿里云OSS

    在DzzOffice分两种方式管理阿里云OSS 1.把阿里云oss作为多人或企业的共享网盘使用. 2.接入个人的阿里云oss管理,可同时管理多个bucket,多个bucket之间可以互传文件. 下面先 ...

  2. 记一次阿里云oss文件上传服务假死

    引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...

  3. angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

    2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...

  4. 阿里云 OSS+CDN

    https://promotion.aliyun.com/ntms/ossedu2.html https://www.aliyun.com/act/aliyun/ossdoc.html 对象存储(Ob ...

  5. (转)云存储:阿里云OSS 、又拍云和 七牛 的比较

    阿里OSS:好处就是,那是一套完整的体系,存储,数据库,CDN,服务器,阿里都可以给你全包.缺点,费用对于没有盈利的网站来说太高了,好像定位就是给那些高端客户使用的,而且CDN,OSS的流量是分开收费 ...

  6. Markdown图片存储解决方法-利用阿里云OSS

    我们在用markdown写一些博客或者文章的时候,常常需要引用一些图片,一般都是找一个免费的图床上传,然后复制图片链接在我们的markdown文章中.类似像这样: 存在的隐患 一般的免费图片托管网站有 ...

  7. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  8. 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台

    GTX Compressor (直压上云技术预览版) Powered by GTXLab of Genetalks. 技术预览版本下载地址: https://github.com/Genetalks/ ...

  9. Linux本地数据上传到阿里云OSS

    这篇文章主要是介绍如何将服务器本地的数据上传到阿里云OSS的指定bucket中,最重要的参考文档是数据迁移单机部署.我第一次上传数据到OSS上时,步骤要比前面的链接中介绍的要麻烦,ossimport工 ...

随机推荐

  1. CentOS 7 环境下 GitLab安装部署以及账号初始化

    1. 安装相关依赖 yum install curl policycoreutils openssh-server openssh-clients -y # 确保sshd启动(正常情况下, sshd是 ...

  2. SQL Server 高并发Insert数据解析,实践

    在现实的生产环境中,有可能遇到高并发insert的应用.在此应用时由于堆表(Heap)和聚集表的结构不同导致在高并发的情形下insert效率不尽相同.接下来我会简单的以测试用例来简要说明.并举例说明如 ...

  3. 在 Azure 中管理 Windows 虚拟机的可用性

    了解如何设置和管理多个虚拟机,以确保 Azure 中 Windows 应用程序的高可用性. 也可以管理 Linux 虚拟机的可用性. Note Azure 具有用于创建和处理资源的两个不同的部署模型: ...

  4. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  5. TCP的socket资源被耗尽的问题

    一. 故障现象 部分机顶盒用户出现大面积登录APP时,界面停留在登陆页面,无反应. 二. 现象初步分析 本次问题出现时,所有AAA出现了异常流量波动,在AAA异常流量段期间接到用户故障报障.此时主要表 ...

  6. UNIX高级环境编程(11)进程控制(Process Control)- 进程快照,用户标识符,进程调度

    1 进程快照(Process Accounting) 当一个进程终止时,内核会为该进程保存一些数据,包括命令的小部分二进制数据.CPU time.启动时间.用户Id和组Id.这样的过程称为proces ...

  7. Python学习--打码平台

    打码平台介绍 作用:可以通过第三方平台进行智能识别或者人工识别图片. 优点:1. 价格便宜: 2. 使用简单: 3. 识别率高 平台介绍: - 云打码(推荐) [http://www.yundama. ...

  8. Docker容器学习与分享10

    Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...

  9. 一次gcc编译失败分析

    1. 场景: ​ 在使用gcc编译时,编译器报错:xxx:'xxx'未定义的引用 2. 排查过程: 首先,我很自然的想到是不是自己使用了未定义的函数或者将函数名称写错了,在检查了一边过后,我发现自己使 ...

  10. mysql主从复制亲测,以及注意事项

    本人亲测,windows作为mysql主服务器,linux作为从服务器,使用两个linux配置步骤都一样,测一遍而已:区别配置文件在于windwos是my.ini.linux在/etc/my.cof ...