一、操作说明
1、java版迁移工具说明
java版s3transfer工具目前为公测阶段,此迁移工具支持从aws s3、阿里云、腾讯云、百度云等存储迁移文件到京东云对象存储;同时也支持本地文件列表迁移。大概逻辑为先获取文件的地址或外链,然后根据外链读取数据,然后进行迁移,这个工具是listobject,transfer,md5check 三个工具的集成:
listobject工具的目的是列出用户配置bucket下的所有文件的列表。如配置prefix,则列出该prefix下的所有文件列表;
transfer工具的目的是将源文件迁移到oss对象存储中;
md5check工具用于md5值校验。
2、工具特点
-
支持丰富的数据源:
本地数据:将本地存储的数据迁移到 oss;
其他对象存储:目前支持 aws s3,阿里云 oss,腾讯云cos,百度bos,华为 obs存储迁移至京东云oss,后续会不断扩展;
url 列表:根据指定的 url 下载列表进行下载迁移到 京东云oss;
bucket 相互复制:京东云oss的 bucket 数据相互复制, 支持跨账号跨地域及同区域的数据复制。 -
支持断点续传;
-
支持流量控制;
-
支持迁移特定前缀的文件;
-
支持并行数据下载、上传;
-
迁移校验:对象迁移后的校验。
3、实操迁移场景说明
为保证实操的可操作性和直观性,本文档采用大文件传输(2个10g大小的文件),类型为s3file,从京东云账号①通过外网传输至京东云账号②对象存储空间,用来模拟跨公有云之间的对象存储迁移,任务控制端为京东云的一台centos 7.4云主机。
4、备注
-
大文件传输会将单个文件分成若干个切片进行传输,如图:
2. 迁移过程中,迁移日志将默认打印到 ./log 目录下。迁移的所有文件将打印到audit-0.log中,迁移成功的文件将打印到audit.success日志中(如果将目标端传输成功的文件删除后,需要删除audit.success日志文件方可进行重新传输),如果需要筛选迁移失败的文件,请使用命令:
1 grep "1$" audit-0.log*
二、环境准备
1、新建云主机
地域 | 操作系统 | 配置 | 带宽 | jdk版本 |
---|---|---|---|---|
华北-北京 | centos 7.4 64位 | 8核16g | 20mbps | 1.8.0_191 |
2、新建bucket
需要准备两个京东云账号,一个在华北-北京
创建对象存储空间,一个在华东-上海
创建对象存储空间,以此来模拟跨公有云的对象存储迁移。
账号①-华北-北京:beijing-to-shanghai
账号②-华东-上海:shanghai-from-beijing
3、使用s3fs在云主机实例上挂载bucket
-
安装依赖包
1 yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -y
2.安装以及编译
1 git clone https://github.com/s3fs-fuse/s3fs-fuse.git 2 cd s3fs-fuse 3 ./autogen.sh 4 ./configure 5 make && make install
3.创建密码文件
1 echo access_key_id:access_key_secret > ~/.passwd-s3fs 2 chmod 600 ~/.passwd-s3fs
4.挂载对象存储到本地目录/hcc(目录名称根据自己的名字简称定义)
1 mkdir /hcc 2 s3fs bucketname /hcc -o passwd_file=~/.passwd-s3fs -o url="https://s3.cn-north-1.jcloudcs.com"
5.查看挂载结果
1 df -h
6.通过dd命令在所挂载的对象存储里生成文件
1 cd /hcc 2 for ((i=1;i<=2;i++));do dd if=/dev/zero of=block_$i.file bs=1m count=10240;done
文件生成结果:
4、部署java环境
下载解压jdk
1 [root@pocenv-hcc-test-hb ~]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/jdk-8u191-linux-x64.tar.gz && tar zxf jdk-8u191-linux-x64.tar.gz && mv jdk1.8.0_191/ /usr/local/ && ln -s /usr/local/jdk1.8.0_191/ /usr/local/jdk
配置环境变量
1 vim /etc/profile
在配置文件尾部加入
1 ######## jdk ####### 2 java_home=/usr/local/jdk1.8.0_191 3 java_bin=/usr/local/jdk1.8.0_191/bin 4 path=$path:$java_bin 5 classpath=$java_home/lib/dt.jar:$java_home/lib/tools.jar 6 export java_home java_bin path classpath
重新加载变量配置文件并查看jdk版本
1 [root@pocenv-hcc-test-hb jdk8]# source /etc/profile 2 [root@pocenv-hcc-test-hb jdk8]# java -version 3 java version "1.8.0_191" 4 java(tm) se runtime environment (build 1.8.0_191-b12) 5 java hotspot(tm) 64-bit server vm (build 25.191-b12, mixed mode)
三、迁移操作
1、下载java 版s3transfer
1 [root@pocenv-hcc-test-hb ~]# mkdir -p /root/java_transfer;cd /root/java_transfer;wget https://downloads.oss.cn-north-1.jcloudcs.com/transfer-tools-java-1.0.0.jar;wget https://downloads.oss.cn-north-1.jcloudcs.com/application.yml
2、配置文件说明`application.yml`
重点说明:
-
jobtype:任务类型,分为listobject列出文件、transfer传输、md5check md5检查,我们这里是传输,所以选择transfer;
-
sourcetype:数据来源的类型,分别为urlfile,diskfile,s3file(aws s3、腾讯云cos、百度bos、华为 obs、京东云 oss)aliyunfile,disklistfile(本地文件列表),我们京东云是兼容s3的,所以选择s3file;
-
src.access.id/ src.secret.key:源对象存储的ak/sk;
-
src.endpoint:源对象存储的endpoint;
阿里云:https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.6.572.6a537f5ewphzjz
腾讯云:https://cloud.tencent.com/document/product/436/6224
百度云:https://cloud.baidu.com/doc/bos/s3.html#.e6.9c.8d.e5.8a.a1.e5.9f.9f.e5.90.8d
华为云:https://support.huaweicloud.com/api-obs/zh-cn_topic_0136050628.html -
src.bucket:源对象存储的bucket;
-
des.access.id/des.secret.key:目标对象存储的ak/sk;
-
des.endpoint:目标对象存储的endpoint;
-
des.bucket:目标对象存储的bucket;
注:如下标红内容是我们需要关注的(“:“ 后要加个空格才能生效):
3、启动 s3transfer
后台启动:
1 [root@springboot-forbuild java_transfer]# nohup java -jar transfer-tools-java-1.0.0.jar --dspring.config.location=application.yml &
前台启动:
1 [root@springboot-forbuild java_transfer]# java -jar transfer-tools-java-1.0.0.jar --dspring.config.location=application.yml
4、启动效果
通过传输过程提示,我们可以看到文件传输状态和结果:
5、传输结果
任务传输完成后如下图:
我们点击目标对象存储空间shanghai-from-beijing
,能看到在源对象存储空间beijing-to-shanghai
生成的两个10gb文件已经传输过来了。
发表评论