2015-05-21 65 views
0

如何在Windows Azure blob容器中創建子目錄? 我知道我們可以使用blob名稱,如「content/2015/images/mypicture.jpg」。如何在Windows Azure blob容器中創建子目錄並重命名目錄

但我們需要更改父目錄名稱。子目錄可能包含許多文件。更改子目錄中的每個blob名稱都需要時間。這個怎麼做? 我已閱讀下面的鏈接。但是他們沒有提及如何處理重命名父目錄。由於

Windows Azure: How to create sub directory in a blob container

How to create a sub container in azure storage location

回答

2

但我們需要改變父目錄名。子目錄可能包含 許多文件。更改子目錄中的每個blob名稱都需要時間。 如何做到這一點?

因此,有在Blob存儲兩件事情:

  1. 正如你提到的,沒有文件夾存在的概念。要創建文件夾錯覺,請在您想要的文件夾前加上blob名稱。
  2. Blob存儲本身不支持重命名功能。爲了完成重命名,您需要對blob執行2次操作:複製+刪除。

這裏是如何在Blob存儲的文件夾重命名:

  1. 首先,你需要列出文件夾中的所有斑點。您可以使用ListBlobs方法並將該文件夾的名稱作爲prefix參數傳入。在這裏看到我的答案:How to load list of Azure blob files recursively?
  2. 接下來,您需要複製這些blob,因爲您只是重命名文件夾,您基本上會創建一個新的blob名稱,將old folder name替換爲new folder name
  3. 一旦斑點被複制,你可以再次迭代你的斑點並逐個刪除它們。

您也可以合併第2步和第3步並對每個blob執行copy + delete操作。所以你迭代你的blob列表,首先複製它的新名稱,刪除它,然後移動到下一個blob。

底線是,您需要在文件夾中的每個blob上執行Copy+Delete以重命名該文件夾。

+0

謝謝。但使用複製+刪除可能需要很長時間。一個「重命名」請求可能需要數百個「複製+刪除」請求。這看起來很奇怪,Azure blob系統不支持目錄概念作爲窗口文件系統。 – Kevin

+0

我同意如果你有很多blob,它可能需要很多時間。但不幸的是截至今天,這是唯一的選擇。我會建議'Azure文件服務「,它非常模仿目錄概念,但它不像今天的BLOB服務那麼豐富。 –

+0

嗨Gaurav,我們想使用像窗口文件系統的Azure存儲。例如列表文件/目錄,重命名文件/目錄,獲取目錄大小...我們需要使用什麼Azure服務?使用Azure blob是一件令人頭痛的事情。它需要手動使用表來記錄文件樹,列出所有blob來計算「目錄」大小,「鎖定系統」禁止同時上傳同一文件...謝謝。 – Kevin