5

我有一個工作者角色,用於從Blob Storage OnStart中提取數據。目前我正在通過上傳一個test.txt文件然後將其下載到本地目錄來進行測試。這工作正常。如何將文件夾上傳到Blob存儲?

我現在想上傳一個文件夾到blob存儲。該文件夾包含批處理腳本以及批處理腳本調用的幾個可執行文件。

推薦的方法是什麼?我認爲壓縮文件夾和上傳* .zip文件會很容易......但是,一旦我將本地下載的工作角色進行處理,我如何在沒有任何第三方庫的情況下將其解壓縮?

如果有更好的選擇,我願意接受任何建議。感謝這裏的幫助 - 這個社區對我來說是一個巨大的幫助,因爲我漸漸增加了:)

+0

爲什麼不上傳單個文件?存儲便宜。 – Paparazzi

+0

我應該注意到,還有一個包含數百個文件和其他文件夾的項目文件夾。我希望能夠下載容器的所有內容,同時保留文件夾,文件名等。這可能嗎? – RobVious

+0

請定義拉數據。你需要這些用於工作者角色,還是需要將這些文件下載到客戶端?或者是其他東西? – Paparazzi

回答

2

你可以採取兩種方法:單文件(例如zip)或多文件(每個文件在自己的blob )。以下是一張就可以了,然後約解壓注:

一個ZIP文件

這是保持一個分組組文件,像Apache的安裝非常簡單的方法,或一組靜態的資源。從blob下載到本地存儲非常簡單。而且,一個zip文件可以處理任何級別的嵌套目錄。

缺點:要更新單個文件,您需要創建一個新的zip文件;沒有辦法簡單地上傳一個修改後的資產。

個別塊

獨立斑點是偉大的,當你需要快速更新單獨的文件,而不用擔心其他文件。此外,您可以直接鏈接到這些blob,無論是公共的還是(與共享訪問簽名)私人和網頁中的enbed鏈接等。請查看我的回答here以及@ Sandrino的例子。哦,如果你打算通過CDN暴露斑點,他們將需要在個別斑點。

缺點:沒有絕對映射到嵌套目錄。 Blob存儲按帳戶\容器\ blob進行排列。雖然你可以模擬嵌套的文件夾,你需要做一些工作來映射單個文件。要下載單個斑點,您需要獲取容器並撥打ListBlobs()來枚舉各個斑點名稱。

如何解壓

Eclipse項目提供了一個vbs腳本這是微不足道的使用。從Visual Studio項目(或者其他任何腳本),我會考慮下載類似於7zip的東西,這是免費的,並且可以安裝。然後只需將blob存儲中的zip下載到本地存儲(位於正確的文件夾中),然後將其傳遞給7zip。

我希望這能夠爲您提供足夠的指導來做出正確的決定。如果它是me並且我正在存儲構建(如tomcat),我會將整個目錄結構保存在一個zip中。這讓我保證,我沒有通過修改單個文件來破壞某些東西。而且...我可以輕鬆地保留一個運行的tomcat版本歷史記錄,並帶有多個拉鍊(在不同的blob中)。

+0

非常酷。我想我會試着把所有東西都壓縮起來。這意味着在容器中需要三個文件:構建檔案,7zip可執行文件和一個批處理腳本,它告訴worker角色安裝7zip,解壓縮構建,然後運行部署。那個聽起來是對的嗎?歡呼聲:) – RobVious

+0

聽起來正確。 7zip不一定必須放在同一個容器中。儘可能多的容器,只要你喜歡。批處理腳本應該是Windows Azure部署的一部分。由於7zip提供了一個MSI,可以從啓動腳本執行。您仍然需要將7zip下載到本地存儲以進行安裝。易於使用公共blob,或直接從sourceforge下載。如果在私人blob中,您需要一種方法來訪問密鑰,或者擁有對blob或容器的共享訪問簽名。現在,我會開始簡單,並與公共blob去存儲7zip msi。 –

1

隨着AZCOPY工具的發佈,您可以在一行中完成此操作。 詳情here

Cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" 

.\AzCopy /Source:C:\Users\folderName\ ` 
/Dest:https://storageAccountName.blob.core.windows.net/storageContainerName ` 
/DestKey:yourStorageAccountKey /S 
相關問題