目錄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
。