介紹如何在 Linux 系統中使用 aws
指令搭配 Linux 管線處理串流的上傳、下載與壓縮。
串流上傳
aws
指令可以透過減號(-
)來從標準輸入中讀取資料,例如:
# 以串流上傳檔案
cat data.txt | aws s3 cp - s3://MyBucket/data.txt
這樣就可以將串流資料直接上傳至 S3 儲存。
最常見的應用就是將資料壓縮之後在以串流上傳至 S3:
# 壓縮後以串流上傳
tar zcf - MyFolder | aws s3 cp - s3://MyBucket/MyFolder.tar.gz
串流下載
aws
在下載時亦可透過減號(-
)將輸出導入標準輸出:
# 以串流下載檔案 aws s3 cp s3://MyBucket/data.txt - | cat > data.txt
若要將壓縮檔案下載之後,直接以串流的方式解壓縮,就可以這樣寫:
# 以串流下載檔案並解壓縮
aws s3 cp s3://MyBucket/MyFolder.tar.gz - | tar zxf -
在使用 aws
指令處理串流的上傳或下載時,如果資料的大小在 50GB 以上,就必須要加上 --expected-size
參數來明確指定串流資料的大小(單位是 bytes),否則就會因為資料量太大而出現錯誤,例如:
# 以串流下載大型檔案 aws s3 cp s3://MyBucket/large.data - --expected-size 53687091200 | cat > large.data