2011-12-28 45 views
4

我有大約60,000個小圖像文件(總大小爲200mb),我想從我的項目存儲庫移到Amazon S3。有效地將許多小文件移動到Amazon S3

我試過s3fs(http://code.google.com/p/s3fs/),通過在Mac OS X上傳輸安裝S3以及Amazon AWS S3網絡上傳器。不幸的是,似乎所有這些都需要很長時間,一兩天才能完成。

有沒有更好的方法?

+0

您已經嘗試了客戶端沒有多上傳?這可能只是許多文件可以上傳到一個請求中。另請參閱:http://aws.typepad.com/aws/2010/11/amazon-s3-multipart-upload.html – praseodym

+0

您是否增加了傳輸中同時傳輸的數量? (首選項 - >傳輸 - >同時傳輸到__文件)如果您有足夠的本地帶寬,請嘗試設置爲100. –

回答

2

Jeff Atwood在幾年前發表了一篇博客文章,標題爲Using Amazon S3 as an Image Hosting Service。他針對類似問題的解決方案(圖像託管通常由託管許多小文件組成)將使用S3Fox Organizer for Firefox

要解決以前的答案,Amazon S3不允許您解壓縮文件(要做到這一點,您需要下載,解壓縮和重新上傳)。

4

有可能被限制數據流量的幾件事情,每個人都有不同的方式,以減輕它:

  1. 你轉學申請可能會增加開銷。如果s3fs太慢,您可以嘗試其他選項,如AWS控制檯上的S3選項卡或s3cmd之類的工具。

  2. 您的計算機和S3之間的網絡延遲以及API調用響應中的延遲可能是您在單個線程中可以執行多少操作的嚴重因素。解決這個問題的關鍵是並行上傳多個文件(幾十個)。

  3. 您和S3之間的網絡連接速度可能會很慢,因此可能會限制總數據傳輸速度。如果您可以壓縮這些文件,則可以將它們以壓縮形式上載到臨時EC2實例,然後解壓並從實例上傳到S3。

我打賭是在數字2這並不總是最容易解決,除非你有上傳工具,將並行爲你。

+1

對API的並行調用對我來說確實有竅門。 2k文件(〜106mb)<10秒內。單線程需要20分鐘或更長的時間。 –

+0

@ Mahdi.Montgomery:你並行運行了多少個線程? –

+0

我通過PHP運行了50個併發apache實例,以實現這些速度,檢​​查臨時本地文件,以便不會在1gb突發行上下載重複文件。 –