2013-08-10 4 views
0

저는 여러 Azure 계정이 있습니다. 로컬 컴퓨터에서 다운로드 및 업로드하지 않고 한 계정에서 다른 계정으로 큰 블로그 (250GB vhd)를 복사하려고합니다.azcopy - 원격 서버가 403을 반환했습니다.

azcopy https://accountfrom.blob.core.windows.net/neo4j/neo4j-250gb.db.vhdhttps://accountto.blob.core.windows.net/neo4j/neo4j-250gb.db.vhd/DestKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SourceKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

그러나 이것은 나에게 오류 메시지를 제공합니다 : 오류를

나는이 (X 년대에 의해 대체 키)을 수행하려면 Microsoft 유틸리티 AZCOPY를 사용하여 시도 원격 서버에서 오류를 반환했습니다. (403) 금지되었습니다.

CloudBerry에서 계정을 열어 키와 계정을 테스트했습니다. 나는 또한 CloudBerry에서 URL을 얻었고, 그래서 나는 그뿐만 아니라 권리가 있다고 생각한다.

무엇이 403의 원인 일 수 있습니까?

+0

키와 같은 소리가 대상에 대해 잘못되었습니다. 또는 해당 키에 쓰기 권한이 없을 수도 있습니다. –

+2

필자가 권장하는 한 가지는 피들러 (Fiddler)와 같은 도구를 통해 요청/응답을 추적하는 것입니다. 403 오류에 대한 자세한 내용을 확인할 수 있습니다. 일반적으로 403 오류는 @PeterRitchie가 언급 한대로 키 관련 문제를 의미합니다. –

+0

귀하의 제안을 모두 시도했지만 아무 소용이 없습니다. AzCopy를 포기하고 PowerShell에 솔루션을 작성했습니다. – user1147862

답변

0

CopyFromBlob 메서드를 사용해 보셨습니까? 구독 전체에서 제대로 작동하는지 잘 모르겠습니다. 여러 구독이있는 경우 테스트 해 보겠습니다. 그러나 그것은 매우 빠르며 위아래로하지 않습니다. 이런

예시 :

//set the azure container 
string sourceContainerName = "mySourceContainer"; 
string destinationContainerName = "myDestinationContainer"; 
//azure connection string 
string sourceSettingKey = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", "xxxx", 
              "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
string destinationSettingKey = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", "xxxx", 
              "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
//setup the container object 
CloudStorageAccount sourceStorageAccount = CloudStorageAccount.Parse(sourceSettingKey); 
CloudStorageAccount destinationStorageAccount = CloudStorageAccount.Parse(destinationSettingKey); 
CloudBlobClient sourceClient = sourceStorageAccount.CreateCloudBlobClient(); 
CloudBlobClient destinationClient = destinationStorageAccount.CreateCloudBlobClient(); 
CloudBlobContainer sourceContainer = blobClient.GetContainerReference(sourceContainerName); 
CloudBlobContainer destinationContainer = blobClient.GetContainerReference(destinationContainerName); 

// Set permissions on the container. 
BlobContainerPermissions permissions = new BlobContainerPermissions(); 
permissions.PublicAccess = BlobContainerPublicAccessType.Blob; 
sourceContainer.SetPermissions(permissions); 
destinationContainer.SetPermissions(permissions); 

//grab the blob 
CloudBlob sourceBlob = sourceContainer.GetBlobReference("mySourceBlobName"); 
CloudBlob destinationBlob = destinationContainer.GetBlobReference("myDestinationBlobName"); 
//create a new blob 
destinationBlob.CopyFromBlob(sourceBlob); 
1

AzCopy 명령 라인 패턴은 "azcopy [출처] 최종 도착] 파일 패턴 [옵션]"에서 [소스] 폴더로 간주 될 것이다 (만약 로컬 폴더에서 복사) 또는 가상 디렉터리 (BLOB에서 복사 된 경우) 즉, AzCopy는 원본 폴더/가상 디렉터리 아래의 모든 파일을 복사합니다.

명령 줄에서 azcopy는 'xxxx.core.windows.net/neo4j/neo4j-250gb.db.vhd'와 같은 가상 디렉토리를 찾으려고 시도하지만이 디렉토리는 가상 디렉토리가 아니라는 것을 알고 있습니다. 파일.

블롭에서 하나의 파일을 복사하려면 [파일 패턴] 및 옵션/s를 사용하여 아래 명령을 시도해보십시오.

azcopy accountfrom.blob.core.windows.net/neo4j/ accountto.blob.core.windows.net/neo4j/ /sourcekey:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /destkey:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx neo4j-250gb.db.vhd /s 

주의 파일 패턴 "블롭 복사 '및'로컬 폴더에 복사 ' 사이 달랐다. BLOB에서 복사 할 때 파일 패턴은 접두어로 취급되며 로컬에서 복사 할 때 파일 패턴은 일반 파일 시스템 파일 패턴입니다. 옵션/S를 사용하는 방법은

E.g. you can use file pattern ab* when copy from local to specify all files start with 'ab', but when copy from blob, you can only specify the prefix like 'ab'.

, 그것은 당신이 사용하는 명령 줄 패턴 관련이 없습니다 '403 금지'오류의 http://blogs.msdn.com/b/windowsazurestorage/archive/2012/12/03/azcopy-uploading-downloading-files-for-windows-azure-blobs.aspx

로 이동하지만하십시오 키 또는 뭔가 잘못 계정.

마지막 아니지만 적어도를, 당신은 항상 aka.ms/azcopy

2

에서 최신 azcopy를 얻을 수 있습니다 내가 피들러를 사용 Gaurav의 제안을 시도했다. Azure Storage의 XML 응답을 볼 수있었습니다. 거기에 "AuthenticationErrorDetail : 요청 날짜 헤더가 너무 오래되었습니다."라는 메시지가 나타났습니다. 가상 컴퓨터를 사용하고 있었고 시간이 늦었습니다. VM에서 시계를 업데이트하면 인증 문제가 해결되었습니다.

+2

아마 이것으로 1 시간을 절약했을 것입니다. 고맙습니다. 하나님, Parallels와 그 재개 버그. – Josh

0

내가 (저장소 계정에 대해 생성 한) 첫 번째 키가 어떻게 든 결함이 있으므로 403이 생겼습니다. 단순히 두 번째 키를 사용하도록 변경하면 문제가 해결되고 물론 첫 번째 키가 재생성됩니다.

0

AzCopy를 사용하려면 파일의 전체 경로가 아니라 파일이 복사되는 저장소 컨테이너가 필요합니다. 이와 같이

,

AzCopy /Source:https://accountfrom.blob.core.windows.net/neo4j /Dest:https://accountto.blob.core.windows.net/neo4j /SourceKey:key /DestKey:key /Pattern:neo4j-250gb.db.vhd 

/Pattern 파일이 복사를 지칭한다. 기본적으로 azure 저장소를 통해 복사되는 파일은 서버 측에서 수행됩니다. 자세한 내용은 https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy#copy-blobs-in-blob-storage을 참조하십시오.

관련 문제