1. 程式人生 > >ossutil命令上傳檔案到阿里雲oss詳解,使用Shell指令碼實現資料的自動上傳下載Bucket物件儲存

ossutil命令上傳檔案到阿里雲oss詳解,使用Shell指令碼實現資料的自動上傳下載Bucket物件儲存

安裝ossutil

yum -y install wget
wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/50452/cn_zh/1524643963683/ossutil64
mv ossutil64 /home
cd /home
chmod +x ossutil64
mv ossutil64 ossutil

測試執行

./ossutil help ls -L ch

個人中心找到AK和SK(AccessKey/SecretKey)
https://usercenter.console.aliyun.com/#/manage/ak
可以在訪問控制 RAM中自由建立子賬戶AK單獨只授權OSS

 

可用地域,根據自己伺服器地域建立,下方需要加-e引數

設定ak和sk資訊

./ossutil config -e oss.aliyuncs.com -i ak -k sk

測試是否成功

cat /root/.ossutilconfig
[[email protected] oss]# cat /root/.ossutilconfig
[Credentials]
language=ch
accessKeySecret=91232tgtgbqg6Q6i4KQ9BHMtJ2qpL2
endpoint=oss-cn-beijing.aliyuncs.com  #ecs寫內網地址
accessKeyID=LTAIdwedwedwwefthOngJ6X

安裝結束

上傳檔案:

./ossutil cp 123 -r oss://jesse1
#jesse1 倉庫名

./ossutil cp 1.txt oss://jesse1
#jesse1 倉庫名

上傳檔案
ossutil提供了上傳/下載/拷貝檔案、設定object的acl、設定object的meta、檢視object的meta資訊等功能。
使用這些命令前請使用config命令配置訪問AK。

上傳/下載/拷貝檔案
強烈建議在使用cp命令前使用ossutil help cp先檢視幫助。
可以使用cp命令進行上傳/下載/拷貝檔案,使用-r選項來拷貝資料夾,對大檔案預設使用分片上傳並可進行斷點續傳(開啟分片上傳的大檔案閾值可用--bigfile-threshold選項來設定)。


使用-f選項來預設強制上傳,當目標端存在同名檔案時,不詢問,直接覆蓋。
當批量上傳/下載/拷貝檔案時,如果某個檔案出錯,ossutil預設會將錯誤資訊記錄在report檔案,並跳過該檔案,繼續其他檔案的操作(當錯誤為Bucket不存在、accessKeyID/accessKeySecret錯誤造成的許可權驗證非法等錯誤時,不再繼續其他檔案拷貝)。更多資訊請見ossutil help cp。
ossutil支援特定場景下的增量上傳策略:--update和--snapshot-path選項,請參見ossutil help cp。
ossutil從1.0.0.Beta1版本開始,上傳檔案預設開啟crc64。

檢視Bucket空間列表

  1. ./ossutil ls

複製程式碼


輸出:
CreationTime                                 Region    StorageClass    BucketName
2016-08-16 11:50:32 +0800 CST       oss-cn-hangzhou        Standard    oss://test
上傳單個檔案:

  1. ./ossutil cp lxzPV.mp4 oss://test

複製程式碼


輸出:
Succeed: Total num: 1, size: 36,622,683. OK num: 1(upload 1 files).                
6.882928(s) elapsed

上傳資料夾:

  1. ./ossutil cp -r video oss://test

複製程式碼


輸出:
Succeed: Total num: 35, size: 464,606. OK num: 35(upload 34 files, 1 directories).
0.896320(s) elapsed

上傳/下載/拷貝檔案的效能調優
在cp命令中,通過-jobs項和-parallel項控制併發數。-jobs項控制多個檔案上傳/下載/拷貝時,檔案間啟動的併發數。-parallel制分片上傳/下載/拷貝一個大檔案時,每一個大檔案啟動的併發數。
預設情況下,ossutil會根據檔案大小來計算parallel個數(該選項對於小檔案不起作用,進行分片上傳/下載/拷貝的大檔案檔案閾值可由—bigfile-threshold選項來控制),當進行批量大檔案的上傳/下載/拷貝時,實際的併發數為jobs個數乘以parallel個數。該兩個選項可由使用者調整,當ossutil自行設定的預設併發達不到使用者的效能需求時,使用者可以自行調整該兩個選項來升降效能。

警告
一般ECS虛擬機器或者伺服器,在網路、記憶體、CPU等資源不是特別大的情況下,建議將併發數調整到100以下。如果網路、記憶體、CPU等資源沒有佔滿,可以適當增加併發數。
如果併發數調得太大,由於執行緒間資源切換及搶奪等,ossutil上傳/下載/拷貝效能可能會下降。併發數過大可能會產生EOF錯誤。所以請根據實際的機器情況調整-jobs和-parallel選項的數值。如果要進行壓測,可以一開始將這兩項數值調低,慢慢調大尋找最優值。




列舉阿里雲oss空間裡面的所有檔案
顯示所有檔案和上傳產生的碎片管理(Multipart)分塊檔案UploadID

  1. ./ossutil ls oss://test -a

複製程式碼


結果
LastModifiedTime                   Size(B)  StorageClass   ETAG                                  ObjectName
2018-08-27 03:21:26 +0800 CST     36622683      Standard   16111CADE9D171195743893742255398      oss://test/111.mp4
2018-08-27 03:21:27 +0800 CST     36622683      Standard   16111CADE9D171195743893742255398      oss://test/lxzPV.mp4
Object Number is: 2
UploadID Number is: 0
0.935311(s) elapsed

檢視檔案描述資訊(meta)

  1. ./ossutil stat oss://test/lxzPV.mp4

複製程式碼


結果
ACL                         : default
Accept-Ranges               : bytes
Content-Length              : 36622683
Content-Md5                 : FhEcrenRcRlXQ4k3QiVTmA==
Content-Type                : video/mp4
Etag                        : 16111CADE9D171195743893742255398
Last-Modified               : 2018-08-27 03:21:27 +0800 CST
Owner                       : 1293873287869883
X-Oss-Hash-Crc64ecma        : 3385307402401995135
X-Oss-Object-Type           : Normal
X-Oss-Storage-Class         : Standard
0.909793(s) elapsed




刪除檔案
示例

  1. ./ossutil rm oss://test[/prefix]

複製程式碼


引數
引數名        描述
m    刪除以指定prefix開頭的所有object下的Multipart Upload任務。
r     刪除以指定prefix開頭的所有object,可以進行objects檔案的批量刪除(prefix為空代表bucket空間下的所有objects檔案)。
f     刪除前不會進行詢問提示。

刪除空間test裡面的視訊lxzPV.mp4

  1. ./ossutil rm oss://test/lxzPV.mp4

複製程式碼


輸出:
Succeed: Total 1 objects. Removed 1 objects.       
1.290539(s) elapsed


刪除分塊檔案UploadID
刪除test空間下的所有以obj開頭命名的UploadID:

  1. ./ossutil rm -rfm oss://test/obj

複製程式碼


輸出:
Succeed: Total 4 uploadIds. Removed 4 uploadIds.
1.922915(s) elapsed


刪除空間test中的所有檔案:

  1. ./ossutil rm -rf oss://test

複製程式碼