乾貨 | 非結構化數據遷移-Java 版S3Transfer

圖片描述

1、操做說明

一、JAVA版遷移工具說明html

Java版S3Transfer工具目前爲公測階段,此遷移工具支持從AWS S三、阿里雲、騰訊雲、百度雲等存儲遷移文件到京東雲對象存儲;同時也支持本地文件列表遷移。大概邏輯爲先獲取文件的地址或外鏈,而後根據外鏈讀取數據,而後進行遷移,這個工具是listObject,transfer,md5check 三個工具的集成:java

listObject工具的目的是列出用戶配置bucket下的全部文件的列表。如配置prefix,則列出該prefix下的全部文件列表;linux

transfer工具的目的是將源文件遷移到oss對象存儲中;c++

md5check工具用於md5值校驗。git

二、工具特色github

  • 支持豐富的數據源:
    本地數據:將本地存儲的數據遷移到 OSS;
    其餘對象存儲:目前支持 AWS S3,阿里雲 OSS,騰訊雲COS,百度BOS,華爲OBS存儲遷移至京東雲OSS,後續會不斷擴展;
    URL 列表:根據指定的 URL 下載列表進行下載遷移到 京東雲OSS;
    Bucket 相互複製:京東雲OSS的 Bucket 數據相互複製, 支持跨帳號跨地域及 同區域的數據複製。
  • 支持斷點續傳;
  • 支持流量控制;
  • 支持遷移特定前綴的文件;
  • 支持並行數據下載、上傳;
  • 遷移校驗:對象遷移後的校驗。

三、實操遷移場景說明spring

爲保證明操的可操做性和直觀性,本文檔採用大文件傳輸(2個10G大小的文件),類型爲s3file,從京東雲帳號①經過外網傳輸至京東雲帳號②對象存儲空間,用來模擬跨公有云之間的對象存儲遷移,任務控制端爲京東雲的一臺Centos 7.4雲主機。vim

clipboard.png

四、備註api

1.大文件傳輸會將單個文件分紅若干個切片進行傳輸,如圖:app

clipboard.png

2.遷移過程當中,遷移日誌將默認打印到 ./log 目錄下。遷移的全部文件將打印到audit-0.log中,遷移成功的文件將打印到audit.success日誌中(若是將目標端傳輸成功的文件刪除後,須要刪除audit.success日誌文件方可進行從新傳輸),若是須要篩選遷移失敗的文件,請使用命令:

1 grep "1$" audit-0.log*

2、環境準備

一、新建雲主機

clipboard.png

二、新建Bucket

須要準備兩個京東雲帳號,一個在華北-北京建立對象存儲空間,一個在華東-上海建立對象存儲空間,以此來模擬跨公有云的對象存儲遷移。

帳號①-華北-北京:beijing-to-shanghai
帳號②-華東-上海:shanghai-from-beijing

clipboard.png

clipboard.png

三、使用S3fs在雲主機實例上掛載Bucket

1.安裝依賴包

1 yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml
2 -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
Access_Key_ID:Access_Key_Secret獲取方式: https://uc.jdcloud.com/accoun...

clipboard.png

4.掛載對象存儲到本地目錄/hcc(目錄名稱根據本身的名字簡稱定義)

1 mkdir /hcc
2 s3fs bucketname /hcc -o passwd_file=~/.passwd-s3fs -o
url="https://s3.cn-north-1.jcloudcs.com" mkdir:建立hcc文件夾做爲本地掛載目錄
s3fs:手動掛載命令,其中bucketname爲bucket名稱、/hcc是本地掛載路徑、passwd_file爲密碼文件位置、url爲京東雲對象存儲兼容S3域名(請輸入空間的Bucket域名)

5.查看掛載結果

1 df -h

clipboard.png

6.經過dd命令在所掛載的對象存儲裏生成文件

這個命令會在所掛載的源對象存儲Bucket裏生成2個大小爲10GB的小文件。
1 cd /hcc
2 for ((i=1;i<=2;i++));do dd if=/dev/zero of=block_$i.file bs=1M count=10240;done

文件生成結果:

clipboard.png

clipboard.png

四、部署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)

3、遷移操做

一、下載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

二、配置文件說明application.yml

重點說明:

  • jobType:任務類型,分爲listObject列出文件、transfer傳輸、md5check md5檢查,咱們這裏是傳輸,因此選擇transfer;
  • sourceType:數據來源的類型,分別爲urlfile,diskfile,s3file(AWS S三、騰訊雲COS、百度BOS、華爲 OBS、京東雲 OSS)aliyunfile,disklistfile(本地文件列表),咱們京東雲是兼容s3的,因此選擇s3file;
  • src.access.id/ src.secret.key:源對象存儲的AK/SK;
  • src.endpoint:源對象存儲的Endpoint;
    阿里雲:https://help.aliyun.com/docum... spm=a2c4g.11186623.6.572.6a537f5ewpHZJZ
    騰訊雲:https://cloud.tencent.com/doc...
    百度雲:https://cloud.baidu.com/doc/B...
    華爲雲:https://support.huaweicloud.c...
  • src.bucket:源對象存儲的Bucket;
  • des.access.id/des.secret.key:目標對象存儲的AK/SK;
  • des.endpoint:目標對象存儲的Endpoint;
  • des.bucket:目標對象存儲的Bucket;

注:以下標紅內容是咱們須要關注的(「:「 後要加個空格才能生效):

##########################################################################################
#jobType 爲 listObject,transfer jobType: transfer
#sourceType 類型共有:urlfile,diskfile,s3file,aliyunfile,disklistfile sourceType: s3file
#urlType : onlyUrl
#############################################################################################
#sourceType 爲 urlfile ,diskfile時,filePath 爲必填項
#filePath:
#urlFilePrefix: 10
#該連接的Content-Disposition超過京東雲限制,如不獲取該header值繼續傳,則配置爲true;不然將該url打印在錯誤日誌裏,由用戶對該url的header值自行修改
ContentDispositionTooLongContinue: false
#sourceType爲urlfile,表示從用戶提供的url列表中遷移。文件列表內容爲[ object外鏈,objectkey ] 使用逗號分隔
###########################源bucket配置################################################
#jdcloud
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://s3.cn-north-1.jcloudc...
#aliyun
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://oss-cn-beijing.aliyun...
#tencent
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://cos.ap-beijing.myqclo...
#baidu
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://s3.bj.bcebos.com
#aws
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://s3.us-east-2.amazonaw...
#huawei
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://obs.cn-north-1.myhuaw...
#qiniu
#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#src.endpoint : https://cn-south-1-s3.qiniu.com
#src.domainOfBucket : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#-bucket
#src.bucket : beijing-to-shanghai
#src.prefix :
##################目標bucket配置 destination ############################################################ des.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX des.secret.key:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX des.endpoint :
http://s3.cn-east-2.jdcloud-o... des.bucket : shanghai-from-beijing
des.prefix :

三、啓動 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

四、啓動效果

經過傳輸過程提示,咱們能夠看到文件傳輸狀態和結果:

clipboard.png

五、傳輸結果

任務傳輸完成後以下圖:

clipboard.png

咱們點擊目標對象存儲空間shanghai-from-beijing,能看到在源對象存儲空間beijing-to-shanghai生成的兩個10GB文件已經傳輸過來了。

clipboard.png

歡迎點擊「京東雲」瞭解更多精彩

圖片描述

圖片描述

相關文章
相關標籤/搜索