2015-11-16 105 views
1

我正在尋找一種解決方案,將容器從一個蔚藍存儲區複製到另一個蔚藍存儲區,這是最簡單的方法。它需要獲取源存儲的容器名稱,並在目標存儲中製作容器名稱的精確副本。任何幫助或想法?對於很多容器2500+。將azure存儲容器複製到其他帳戶存儲容器

回答

1

好吧,我把所有的容器從存儲到存儲,這一點我是怎麼做的:

  1. 我在哪裏是我的目標存儲在同一區域中創建一個虛擬機在蔚藍。

  2. 我下載了命令行工具「Cloudcopy」,你可以在這裏找到它:https://cloudcopy.codeplex.com/關於這個工具的好處是,我爲你創建了容器,以防它們在目標存儲中不存在的情況下( - P最終使容器公開的方式)

  3. 我做了一箇舊學校舊時尚批處理腳本(在我的情況下,我所有的容器編號00000001/00000002/etc.),將所有容器提取到我的虛擬機臨時存儲(d :)以及在將文件發送到目標存儲並刪除臨時存儲之後(在臨時存儲已滿的情況下,在我的情況下將其限制爲382GB,並且我的文件超過2TB)

下面是批處理腳本我使用(CMD):

@echo off 
setlocal enabledelayedexpansion 

REM Adds zeros to the container name 
SET /a counter=100000000 
REM set the count starting value 
SET /a count=1 

:loop 
REM Yes i know very old fashion loop 

set /a calculation=%counter%+%count% 
set directoryname=%calculation:~-8% 
REM the ~-8% cuts off the 1 in the beginning from the counter 

START /WAIT c:\\CloudCopy.exe "https://<STORAGENAMESOURCE>.blob.core.windows.net/%directoryname%/*.*" "d:\%directoryname%" "DefaultEndpointsProtocol=https;AccountName=<STORAGENAMESOURCE>;AccountKey=<STORAGEKEYSOURCE>" 
START /WAIT c:\\CloudCopy.exe "d:\%directoryname%\*.*" "https://<STORAGENAMEDESTINATION>.blob.core.windows.net/%directoryname%" "DefaultEndpointsProtocol=https;AccountName=<STORAGENAMEDESTINATION>;AccountKey=<STORAGEKEYDESTINATION>" -P 

rd /s /q d:\%directoryname% 

set /a count=%count%+1 

goto loop 

當然你也可以更換你想要什麼都%目錄名%變量,它的工作原理,你可以忽略整櫃一部分例如,您可以添加特定容器名稱的列表,並確保創建更好的循環。這一個爲我工作,我很忙,所以現在對我來說很好:)嗯,順便說一下,Cloudcopy也支持非常大的文件,就像我的大小爲2GB +的虛擬機在目標區域中一樣。

0

AzCopy讓你相同的存儲帳戶內或不同存儲設備之間複製斑點佔

AzCopy.exe 
https://<sourceaccount>.blob.core.windows.net/<sourcecontainer>/ 
https://<destaccount>.blob.core.windows.net/<destcontainer>/ 
/sourcekey:<key> /destkey:<key> /S 

以下可選參數可以是有用的:

  • /MOV刪除源文件複製

  • /NC:<number>併發網絡呼叫數量(默認爲8 X內核)

+1

請注意,Chui提供的命令行已過期。在最新版本的AzCopy中,指定源位置和目標位置時需要Options/Source和/ Dest,並且不再支持/ Mov。欲瞭解更多詳情,請訪問http://aka.ms/azcopy並在那裏下載最新版本。 –

+0

謝謝,但這使得我每次添加一個容器時,我需要爲每個要複製的容器指定源和目標容器的名稱。我在我的存儲器中儲存了大約2500多個容器。我在尋找的是能夠從源存儲中複製所有容器並自動在目標存儲中創建容器。 –

相關問題