一、JAVA版遷移工具說明html
Java版S3Transfer工具目前爲公測階段,此遷移工具支持從AWS S三、阿里雲、騰訊雲、百度雲等存儲遷移文件到京東雲對象存儲;同時也支持本地文件列表遷移。大概邏輯爲先獲取文件的地址或外鏈,而後根據外鏈讀取數據,而後進行遷移,這個工具是listObject,transfer,md5check 三個工具的集成:java
listObject工具的目的是列出用戶配置bucket下的全部文件的列表。如配置prefix,則列出該prefix下的全部文件列表;linux
transfer工具的目的是將源文件遷移到oss對象存儲中;c++
md5check工具用於md5值校驗。git
二、工具特色github
三、實操遷移場景說明spring
爲保證明操的可操做性和直觀性,本文檔採用大文件傳輸(2個10G大小的文件),類型爲s3file,從京東雲帳號①經過外網傳輸至京東雲帳號②對象存儲空間,用來模擬跨公有云之間的對象存儲遷移,任務控制端爲京東雲的一臺Centos 7.4雲主機。vim
四、備註api
1.大文件傳輸會將單個文件分紅若干個切片進行傳輸,如圖:app
2.遷移過程當中,遷移日誌將默認打印到 ./log 目錄下。遷移的全部文件將打印到audit-0.log中,遷移成功的文件將打印到audit.success日誌中(若是將目標端傳輸成功的文件刪除後,須要刪除audit.success日誌文件方可進行從新傳輸),若是須要篩選遷移失敗的文件,請使用命令:
1 grep "1$" audit-0.log*
一、新建雲主機
二、新建Bucket
須要準備兩個京東雲帳號,一個在華北-北京建立對象存儲空間,一個在華東-上海建立對象存儲空間,以此來模擬跨公有云的對象存儲遷移。
帳號①-華北-北京:beijing-to-shanghai
帳號②-華東-上海:shanghai-from-beijing
三、使用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...
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
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
文件生成結果:
四、部署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)
一、下載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 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
四、啓動效果
經過傳輸過程提示,咱們能夠看到文件傳輸狀態和結果:
五、傳輸結果
任務傳輸完成後以下圖:
咱們點擊目標對象存儲空間shanghai-from-beijing,能看到在源對象存儲空間beijing-to-shanghai生成的兩個10GB文件已經傳輸過來了。
歡迎點擊「京東雲」瞭解更多精彩