oss迁移我采用的是阿里提供的ossimport2工具
迁移采用的方式是单机迁移的方式,这种工具配置简单,迁移效率高
ossimport2工具配置文件结构大概如下:
├── bin
│ └── ossimport2.jar 启动服务需要的jar
├── conf 配置文件位置
│ ├── local_job1.cfg 每一个cfg可以代表一个bucket
│ ├── local_job.cfg
│ └── sys.properties 配置任务运行的并发度以及资源分配
├── console.bat
├── console.sh
├── import.bat
├── import.sh 系统的导入脚本,不需要更改
工具中需要更改的文件是local_job.cfg:
其实在下载ossimport之后,里面的readme 会有详尽的配置项说明,此处我就不赘述了
(ossimport2支持多种源端迁移 此处是以源端目标端都为oss为例)
#源端的类型
srcType=oss
#源access key
srcAccessKey=xxxx
#源secrect key
srcSecretKey=xxxx
#源endpoint,
srcDomain=http://xxxx
#源bucket名字
srcBucket=xxx
#目的 access key
destAccessKey=xxx
#目的 secret key
destSecretKey=xxx
#目的endpoint(不要加上bucket的名字)
destDomain=http://xxx
##目的bucket,不需要加上"/"
destBucket=xxxx
#job名字,每个任务唯一,不同的bucket起不同的名字
jobName=local_testxx
sys.properties
一般不需要更改
命令行查看oss内容
ossutil
在oss帮助文档界面下载:ossutil
./ossutil64 ls --config-file ossconfigfile oss://bucketname```
# 启动
**声明变量**
export work_dir=/dir of ossimport
**启动进程**
nohup java -jar ${work_dir}/bin/ossimport2.jar -c ${work_dir}/conf/sys.properties start > ${work_dir}/logs/ossimport2.log 2>&1 &
**启动任务**
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/conf/local_job1.cfg
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/conf/local_job2.cfg (多个bucket多个cfg文件)
查看任务状态
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail
#校验
> 迁移后需要对源端目标端的迁移数据进行校验,从数量以及内容两方面进行比对校验,确保迁移的一致性
文件数校验
./ossutil64 ls oss://bucketname --config-file ./ossconfigfile | sed '/^Last/d' | grep Object >count.txt`
内容校验比对
oss内容校验采用比对etag的方式
获取etag的方式如下:
./ossutil64 ls oss://bucketname --config-file ./ossconfigfile | sed '/^Last/d' | awk '{print $7}' >etag.txt
数据量校验
./ossutil64 ls oss://bucketname --config-file ./ossconfigfile | sed '/^Last/d' | awk 'BEGIN {size=0} {size=size+$5} END{print "endsizeis",size/1024/1024,"M"}' >count_data.txt
校验中使用的ossconfigfile其实就是oss的鉴权信息,内容如下:
[Credentials]
language=EN
endpoint=http://ossxxxx.com
accessKeyID=xxxxx
accessKeySecret=xxxx