目录css
因为项目需求,须要将项目目前使用的OSS进行迁移到新的阿里云帐号下的OSS,查看官方文档介绍,可使用阿里云自带的ossimport工具进行单机以及分布式迁移html
OssImport工具能够将本地、其它云存储的数据迁移到OSS,它有如下特色:java
[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)
OssImport有单机模式和分布式模式两种部署方式。vim
对于小于 30TB 的小规模数据迁移,单机模式便可完成。下载地址
对于大规模的数据迁移,请使用分布式模式。下载地址api
Master、Worker、Tracker、Console运行在一个机器上,系统中有且只有一个Worker。咱们对单机模式的部署和执行进行了封装优化,单机部署和执行都很简单。单机模式下Master、Worker、TaskTracker、Console四个模块统一打包成ossimport2.jar
。七牛云存储
# 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/
单机模式下文件结构以下:bash
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
[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名称
#是否打开增量模式,若是设为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
提示:并发
log/ossimport2.log
。master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log
。master/jobs/${JobName}/failed_tasks/${TaskName}/error.list
。