2017-02-17 129 views
1

我將大約31 TB的數據(包含4500個文件,文件大小範圍從69MB到25GB)從遠程服務器傳輸到s3存儲桶。我使用s4cmd put要做到這一點,並把它放在一個bash腳本upload.sh將大量大文件傳輸到s3

#!/bin/bash 

FILES="/path/to/*.fastq.gz" 
for i in $FILES 
do 
    echo "$i" 
    s4cmd put --sync-check -c 10 $i s3://bucket-name/directory/ 
done 

然後我用qsub提交作業:

qsub -cwd -e error.txt -o output.txt -l h_vmem=10G -l mem_free=8G -l m_mem_free=8G -pe smp 10 upload.sh 

這是服用了太多的時間 - 它需要10個小時上傳〜20個文件。有人可以提出對我的命令的替代或修改嗎?

謝謝!

+0

使用** GNU並行**並做一些並行可能嗎? 'parallel --eta -j 8 s4cmd put --sync-check -c 10 {} s3:// bucket-name/directory/:::/path/to/* fastq.gz' –

+1

從哪裏轉移?如果另一個AWS服務,可能這個速度太慢了,但是如果從你的公司數據中心發送到AWS,我希望在這個範圍內(因爲你有單線程)。即使使用GParallel,您也可能很容易陷入源系統和AWS之間的帶寬限制。 (我的想法可能已過時,所以我很想看到來自當前用戶的回覆(總是!))。祝你好運! – shellter

+1

您的互聯網連接有多快?對於這一數量的數據,儘管存在運輸費用,但使用[Snowball](https://aws.amazon.com/snowball/)可能會更快。 – stdunbar

回答

2

您的情況可能屬於將數據複製到物理介質並通過普通郵件發送的情況比通過互聯網傳輸數據更快,更便宜的情況。 AWS支持這樣一個「協議」並且有一個特殊名稱 - AWS Snowball

雪球是使用安全 家電大量數據傳入和傳出的AWS 雲的PB級數據傳輸解決方案。使用Snowball解決了大規模數據傳輸中常見的難題,包括高網絡成本,長傳輸時間和安全問題。使用Snowball傳輸數據非常簡單,快速,安全,而且可以低至互聯網高速的成本的五分之一。

藉助雪球,您不需要編寫任何代碼或購買任何 硬件來傳輸數據。只需在AWS 管理控制檯中創建一項作業,並且雪球設備將自動發送給您* *。一旦到達,將設備連接到本地網絡 ,下載並運行Snowball客戶端以建立 連接,然後使用客戶端選擇要傳輸到設備的文件目錄 。客戶端然後將 加密並高速將文件傳輸到設備。一旦 傳輸完成並且設備已準備好返回,E Ink的運輸標籤將自動更新,您可以通過亞馬遜簡單通知服務(SNS),文本 或直接在控制檯中跟蹤 作業狀態。

*部分地區目前有雪球。在AWS Management 控制檯中創建作業後,您的位置將被驗證。

他們較小的設備容量爲50TB,非常適合您的情況。

也有類似的服務AWS Import/Export disk,在那裏你船自己的硬件(硬盤驅動器),而不是他們的特殊裝置:

要使用AWS導入/導出磁盤:

  • 準備便攜式存儲設備(請參閱支持設備的Product Details頁面)。
  • 提交創建工作請求。您將獲得帶有用於驗證設備的數字簽名的工作ID。
  • 打印出您的預付運費標籤。
  • 安全地識別和驗證您的設備。對於Amazon S3,將簽名文件放置在設備的根目錄下。對於 Amazon EBS或Amazon Glacier,請將簽名條形碼粘貼到設備外部的 。
  • 將預付運費標籤附加到裝運箱並將設備及其接口連接器和電源 發送給AWS。

當你的包到達時,它將被處理並牢固地 轉移到AWS數據中心,在那裏設備將被附接到 到AWS導入/導出站。數據加載完成後, 設備將返回給您。

+0

嗨Leon。感謝你的回答。關於定價的一個問題 - 我可以理解,這個解決方案可以幫助更快的傳輸,但是你能解釋它如何比通過互聯網定期傳輸便宜嗎? –

+0

由於到AWS S3的傳入數據是免費的,因此只有當您爲互聯網連接支付流量而不是帶寬時,纔會顯示成本優勢。對於相反的情況(如果您必須將**從** S3而不是**轉移到** S3),此解決方案肯定會更便宜,因爲每個傳出TB的成本約爲85美元,相當於您的金額將近2.5萬美元數據的。 – Leon

+0

所以我理解你可以在S3上免費存儲任何數量的數據嗎? –